成为软件工程师是一项了不起的工作!
软件开发人员努力实现我们的信条:与出色的人员一起解决问题并遵循最佳实践,以使(技术)世界变得更加美好。当工程经理一起设计架构和功能时,他们要与一群热情,知识渊博的人一起工作。可以想象,这可能会很有趣。
在一个紧密联系的团队中工作并不总是阳光和玫瑰花。当您有一群来自不同地方,拥有不同经验和各种专业知识的人时,通常会在如何最佳地开发,实现和使用功能方面存在分歧。
但是分歧和讨论不是主要问题。实际上,当人们胸怀开阔的胸怀并专注于最好的结果时,与其说是“正确的”,不如说是分歧可以创造出更好的解决方案。
开发团队之间意见分歧的常见原因
通常有几个领域会引起讨论并导致开发团队之间出现分歧。
pull request评论
想象一下:团队中的一名开发人员花费数小时编写代码来完成冲刺。他或她努力创建最好的名称和抽象,以使代码清晰易读,并创建测试以确保所有功能均按预期工作。然后,开发人员提交拉取请求,一旦准备好审查代码,则需要另一位开发人员的批准。
编码是一门艺术,我们制作杰作的过程是个人的,但是代码审阅是强制功能,可确保高质量的代码和应用程序。
很容易看出来,批评者并要求进行更改的审阅者可能会引起与作者的紧张关系。涉及自我,每个人都有讨厌的“自我利益”偏见。
例如,开发人员有兴趣在不重做大量代码的情况下获得其代码的批准。为什么?因为他们还有其他工作需要在冲刺结束时完成。
另一端是审阅者,负责维护和改进标准,并确保遵循这些标准,即使要花更长的时间才能完成检票。审阅者如何才能将草率的代码或缺少最佳实践的代码纳入代码库?确保高质量的项目不是他们的责任吗?
很明显,为什么在批准代码与完成所有请求的更改之间来回回荡会引起分歧。实际上,这是完全正常的。沟通和解决问题的方式很重要。
团队标准
软件工程的好处(有时甚至是挑战)是没有始终每个人都遵循的特定最佳实践。意见各不相同,标准也在不断发展。这些不仅会出现在代码审查中,而且还会在团队成员之间出现不同意见(例如制表符或缩进行的空格)时产生压力。
关键是要不断地决定和更新集中式Wiki或文件中的代码约定。这为审阅者提供了他们可以指向的文档,并为请求者提供了指南,这对紧张无意义。
架构讨论
随着团队随着时间的推移开发其软件,他们必须适应和更改其架构,以适应新的设计或功能。可能需要数据库结构或新的微服务,或者它们可能会在堆栈中采用新的框架或库。
这些领域的经验是多种多样的,关于命名约定或所选技术栈的意见可能会决定项目代码库的大部分内容。它影响团队中的每个人,因此,每个人都有理由偏爱一种解决方案而不是另一种解决方案。
良好的对话可以产生良好的结果,但是团队应该概述他们为实现这些讨论而试图达到的一些基线目标。通过这样做,他们可以将对话推向特定的最终结果,从而可以权衡各种选择。
人格差异
显而易见,软件工程师需要精通软技能。开发人员全天候进行协作,并且能够与他人建立联系,交流他们的想法并找到共同的基础,从而影响他们的项目的成功。
对于那些每天告诉计算机做什么的人来说,开发这些技能可能会很困难。
在工作中,我们不能仅仅停止与我们不认识的人一起工作。我们可能存在真正的人格不匹配,对最佳实践的看法截然不同或整体沟通风格上的差异。这就是团队工作的生命。
学会撇开分歧以完成工作和实现团队目标仍然是优秀领导者的能力。你也可以做到的!
如何防止团队冲突
在您生活中的所有讨论和分歧中,都有一个基本真理:您是其中的一部分。
您是否故意挑战正确的事情?
围绕讨论建立自我意识可以帮助您扎根,抛开情绪,并使您更清晰地思考。作为队友,您必须了解自己无法始终如一,并且挑战一切将导致时间和生产力的巨大损失。
换句话说,只有在影响和利益值得的情况下,才应该挑战和推动特定的选择。这里有一些问题要问:
- 决定的结果是否会根据解决方案影响我,我们的代码库或我们的未来?
- 我是否具有专业知识,经验或数据来陈述支持或反对讨论中的选项的原因?
- 在提出自己的观点之前,我是否正在积极倾听并理解所有观点?
- 是否有替代解决方案结合了所有选项的一部分,从而产生了更好的结果?
- 我是让自己的情绪引起讨论还是引起我的想法?可能需要几次深呼吸
如果在回答这些问题后仍对某个特定解决方案有强烈的感觉,请确定如何最好地交流每种选择的差异,以及为什么您相信一个选择比其他选择能获得更好的结果。
你保持开放的心态吗?
如果有人不同意您的看法,那么第一个本能不应该是表明他们为什么做错,而是要了解他们为什么不同意……因为猜猜是什么?他们可能实际上是对的!
理解然后合并他们的推理可以设计一个更好的解决方案,或者可以帮助您了解他们的担忧,并更好地交流您的解决方案如何减轻他们的困扰。
在开发团队中保持开放的态度可以创建一个安全的环境,可以在其中挑战,讨论和改进思想。
解决您的工程团队之间的分歧
即使在双方都发挥了作用之后,也绝对有可能无法达成协议。它发生了,很好!问题是:我们从那里去哪里?
这就是解决分歧的这些步骤!
第1步:说话而不是打字
如果最初的异议和讨论是从非语言媒体开始的,并且无法达成协议,那么下一步将是变焦通话或面对面的聊天。
分歧是很基本的误解,这很常见,实际上,要传达的想法和差异实际上是同一页面上的两个人。发现在更好的通信媒体上可以在哪里以及如何达成协议要容易得多。
如果对话陷入僵局,那就没问题。让我们继续第二步。
步骤2:询问团队
将辩论和不同的想法进行更广泛的讨论可以将僵局变成解决方案。通过列出每种观点的不同选择以及优点或缺点,您可以对构想进行全面了解,并允许所有队友进行上下文输入(即使经理在这里也可以权衡其想法)。
通常,多数将开始形成并提出解决方案。我发现大多数分歧可以在此步骤中解决。
如果您发现正在形成更高层次的冲突,则这是您的下一步。
步骤3:让您的经理参与
如果您发现自己与感到敌对的队友之间经常发生冲突,分歧或紧张,那么下一步就是让您的经理介入。
您可以征求他们的意见,以解决这种情况或他们可以帮助减轻冲突的方式。希望这可以解决恶劣的工作环境,否则,您可能需要将事情带给人力资源部。
步骤4:参与领导和/或人力资源
即使在让您的经理参与之后,紧张局势仍可能持续。在这一点上,最好是引入高层领导或人力资源。
您不应在工作中受到威胁或不舒服,而这些正是可以帮助您解决问题的资源。
步骤5:寻找新的团队,或者最糟糕的是离开公司
显然,这是最艰巨的步骤,通常是最后的稻草。但是我们每周都会花费大量时间在工作上,并且在软件开发团队的要求下进行协作,这仅表明您希望在一个舒适而有趣的环境中工作。
如果在尝试了所有先前的级别并且冲突仍然存在之后,最后的选择是在组织内寻找另一个团队,使您摆脱敌对情绪,或者开始寻找新公司的工作。
两种选择都可以真正改变您的生活!关键是要明智地选择,在面试中问很多问题,并找到适合自己的文化。
结论
软件工程专业很少能在其职业生涯中不断挑战和发展其成员。技术真正实现了这样的口号:“生活中唯一不变的就是变化”。
这是一个非常有意义的职业选择,它有机会与伟大的人们一起成就世界上的伟大事物。像在任何行业中工作的任何团队一样,您可能会遇到与同事的冲突和分歧,但是当您这样做时,您现在就可以有效地处理它。










网友评论