在软件开发团队里如何打口水仗

开发软件是一个非常情绪化的工作,团队中的每一个人都希望这个软件可以获得成功,而有的时候这种情绪会在团队中制造紧张气氛。软件团队中流行着这样一句话:“你必须要挑选你自己的战斗。”那么问题来了,如何做这样的决定?你要跟谁干仗?

胜利和失败

团队在协作的时候,他们其实也在时刻彼此“斗争”中。在我看来,所谓的“胜利”只有一种情况:就是你成功说服另外一方,让他们接受你的想法,认同你的想法,让他们相信你的想法能让软

件变得更好。但是,“失败”却有着多种情况。如果你让团队中的某一个人觉得他的贡献没有价值,团队就会经历失败。还有产品本身也存在失败,例如在产品初期没有看到一些有价值的评论,或是错失了以更低的成本开发新功能的机会。

胜利剧本:

在策划会议上,一个开发人员指出,他找到了一个开发前制图工具,这个工具可以迅速绘制大多数产品功能图。然后产品团队表示他们愿意采纳这个开发人员的建议。

失败剧本:

在编码审核会议上,审核人员给编程人员施压,要他们立刻做出改变,短时间内显著提升软件的性能,但是审核人员并没有做出任何解释,没有告诉开发人员这样做会给团队带来什么好处。于是开发人员拒绝了审核人员要他们加班加点的要求。

在和团队中的其他人打口水仗之前,问问你自己下面几个问题:

你能胜利吗?

如果你反对产品的发展方向,但是这个问题团队成员之前已经讨论了多次,而且你此前已经阐述了自己的担心,那么你或许应该冷静一下。因为在这个问题上你很可能无法获得胜利。

如果你是技术团队负责人,而某个编码审核人员并没有按照你给项目定下的标准来对软件编码进行审核,那么这个时候你就应该勇敢的和对方开战——但是要小心。和对方针锋相对的“互撕”并不能起到作用,一次心平气和的谈话效果会更好。

值得吗?
这个问题对你的产品影响严重吗?如果你想推迟商务计划,优先解决产品功能问题,你要先想一想你能为公司在日后节省多少时间。如果只是几个小时,那么这不足以整个团队为你而改变。如果你能为公司节省一周的时间,那么这个问题绝对值得你摆到桌面上和大家一起分享。

假设你是一位编码审核人员,在一次编码审核会议上,另一位开发人员提出了一个新的不错的PR,但是它在风格上与你的风格不符,于是你想要和他争辩。

在这个时候,你应该问自己下面几个问题:

你的反馈能否成为编码库最好的选择?

你的想法能否给软件带来巨大的提升?

编码的可读性是否存在问题?

如果上面所有的问题,你的回答都是no,那么你最好不要在这个时候去争辩。这样做可以让开发人员觉得自己活得了应有的尊重,他们会觉得自己写出了优秀的代码。

挑战别人的工作方式能否给你的产品带来明显的好处?

在每一场优秀的战役中,参与方都在为了一些比自身更重要的东西而奋斗。在你挑战队友的时候,你应该有着足够好的理由,值得你去和队友争辩的理由。

在商业层明上,当你挑战同事的时候,你的目标应该是给产品的可读性和可行性带来更多的价值。在挑战其他开发人员的时候,你的目标应该是提高编码的质量,让产品更稳定、更可控。

选择失败的战役

虽然我鼓励你去参加那些把握性更高的战役,但是有的时候,选择一场注定失败的战役也是很重要的事情。这让你可以更进一步,加强团队成员之间的理解,让所有人都看到产品中需要改进的地方。

例如,在面对产品团队的时候,你可以故意提出一个你其实觉得很难用的UI设计。虽然你的建议不会被接受,但是在这个过程中,你的团队成员将会各抒己见,提出自己对现有UI的想法,从而完善产品现在的UI,让产品UI变得更好用。

当你在和另一位开发人员讨论的时候,选择一场失败的战役,给你带来的好处,就是让你们双方都获得宝贵的学习机会。你可能觉得你的代码已经很完美,但是其他开发人员总是能给你提出值得改进的地方。在一些情况下,这种讨论和研究甚至有可能会让你们之间找到一个更好的解决方式。

两败俱伤的战役

我们都见过那些两败俱伤的争论。通常情况下,当双方开始人身攻击,不再就事论事的时候,两败俱伤就无可避免了。在这种情况下,双方最常见的话语就是:“我不喜欢你的代码/设计/工作方式。”

甚至你自己也经历过这样的事情,尤其是当你某一天心情不好,而你的同事又来挑战你的时候。我们都会这样。当你意识到这种情况即将发生的时候,你就应该先后退一步,在平复心情之后,在找到对方进行一次没有相互攻击的对话,用这样的方式来解决问题。

如果是对方先开始攻击你,你可以先允许自己生气一会儿。当你冷静下来之后,然后和对方进行一次对话,客观的阐述自己的想法和担心。

打磨你的“战斗技能”

没 有任何一个人会永远胜利,理解何时应该挑战同时,何时应该控制自己,这是一个技巧,一个只能在实践中学习的技巧。我曾经在很多次争论中失败,有的是因为准 备不足,有的是因为我提出了一个并不重要的问题。还有的时候,我本应该马上提出自己的想法,但是却在当时忍了下来(这也是我写这篇文章的原因之一)。

情况越紧张,争论的价值越大,我发现在这种情况下,我们总是能将产品和团队打磨的更好。你是否也有这样的策略,用来决定自己何时应该质疑别人,何时应该沉默不语?

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-09-23 19:56:00

在软件开发团队里如何打口水仗的相关文章

Google 极客谈软件开发团队的不良行为

开发团队是一个整体,稳定的.沟通无碍的团队文化非常重要.好的文化氛围应该包括基于共识决策的开发模式.高质量的代码.代码审查,以及能让人放心尝试新事物或者快速失败的环境.Brian和Ben是Google的两位开发主管,他们在"极客与团队"中列举了软件开发团队的典型不良行为,提醒开发者时刻保持警惕,并提出了一些实际的解决办法. Brian和Ben指出,团队的注意力和专注力是最容易受到威胁的.团队规模越大,编写软件和解决有趣问题的能力就越强-不过这种能力毕竟是有极限 的.要是你不去主动保护它

《告别失控:软件开发团队管理必读》一一1.1 程序员都做什么

1.1 程序员都做什么 首先,程序员的工作很有趣!Fred Brooks在软件工程的经典名著之一<人月神话>[6]中很好地总结了程序设计充满乐趣的原因. "第一,是纯粹的创造的愉悦--""第二,是做出对其他人有用的东西而带来的快乐--""第三,是设计组装谜题一样环环相扣的复杂部件,并观看着它们巧妙地运转而产生的吸引力--""第四,是持续学习的乐趣,这来源于任务的无重复特性--""第五,工作的对象是可以自由

《告别失控:软件开发团队管理必读》导读

前言 告别失控:软件开发团队管理必读 软件开发常常被认为是难以管理的.进度安排和费用预算完全不靠谱的软件项目比比皆是.规范化的软件开发实践对这一状况有所改善,但也未能真正解决问题.我们软件开发行业已经积累了超过60年的技术经验,并已经投入了大量的时间,以及美元/日元/卢比/欧元来尝试把管理规范化,但为什么软件开发至今仍然如此难以管理呢? 本书用一个简单的观察结果来回答这个长期存在的问题:管理者首先必须学会管理程序员和软件团队的技巧.也就是说,必须学会了解员工-如何聘用他们,激励他们,进而领导他们

MBTI在软件开发团队中的应用

人绝不是一种资源.一方面我们不可能因人设岗,另一方面也不能忽略人性的差异.面对问题时,不要总是单纯地从人的态度或品德上查找问题,而是要反思人事安排和流程建设上的不足.奢望一个人改掉他的缺点,还不足充分发挥他的优点. 前言 MBTI将人区分为16类人格特质,我无法断言是否真得能表达出人的真实一面,毕竟只是统计性的结果.我的思考并不在于它归类的结果,而在于它的归类方法.   在团队合作中,各种各样的情绪.喜好.偏见一直在影响着我们对于人和事的判断.我们强调第一印象的重要性,正是因为一旦被贴上标签,就

建立软件开发团队时要避免的7个问题

建立和维护一个高性能的软件开发团队是一个持续努力的过程.挑战范围包括从竞争激烈的市场中吸引优秀人才到提供有趣和富有挑战性的工作,以及组建团队结构和促进人员成长. 我们很幸运地工作在一些致力于提升交付质量和频率的软件开发团队,并且我们发现了一些非常的常见阻碍团队快速地推出优质软件的结构和做法: 1:"DevOps"孤岛 特别是随着一个团队的成长,或者可能是为了填补当前团队技能集中存在的差距,我们会被诱惑着在团队中或团队周围建立单独的功能以执行特定的工作岗位. 我们看到的最常见的表现是操作

《告别失控:软件开发团队管理必读》一一第2章 理解程序员

第2章 理解程序员 告别失控:软件开发团队管理必读从许多方面看,程序员之间的差异都非常大,只有很了解程序设计的人才能完全理解这一点.大多数公司的高层管理者对所有的程序员一视同仁,这是一个可怕的错误.微软公司的Bill Gates和Adobe Systems公司的John Warnock都没有犯这样的错误,因为他们俩本质上也都是程序员. 这种差异为什么很重要?也许不应该很重要,但事实上,这种差异真的很重要.历经多年的程序员管理工作之后,我们仍然惊叹于程序员之间的巨大差异,需要有区别地进行问题处理和

产品开发团队里的那些你不知道的事

我们电击关在笼子中的狗,狗会本能回避,当它意识到电击是不可避免之后,就会消极低落,不再回避,绝望等待电击发生,这就是习得性无助,在软件团队中也可以观察到相似的情境,比如焦虑的项目经理和几个抑郁的工程师,当他们感到怎么加班努力都难以改变项目现状的时候,死气沉沉的氛围就产生了. 在软件开发这样一个需要创意和激情的工作里,无助的感觉可能来自控制感丧失或是选择性减少.当项目经理不能决定产品需求.开发进度和优先级的时候,理论权限与现实的落差会加重无助感;同样,当工程师不能决定开发思路,不能对开发事项表述自

《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当

1.2 成功的程序设计经理为什么难当 大多数杰出的程序员并不热衷于当其他程序员的经理.他们知道团队需要软件经理,但乐得让别人来做实际的管理工作.他们通常不喜欢管理人员或项目. 管理程序员是很难的!"管理程序员很像是在放牧一群猫"--这句话常被引述,它揭示了高效.成功的程序设计经理难当的本质原因.猫的自由主义.个人主义色彩浓厚,而且狡猾.贪玩.好奇.独立.程序员也一样. 根据我们的经验,非常能干的软件经理是很稀少的.而只有这类很少见的软件经理才能成功地管理无拘无束的程序员并且乐在其中.

《告别失控:软件开发团队管理必读》一一2.7 个性特点

2.7 个性特点 程序员除了具有不同的类型之外,还普遍存在着个性特点.特质和习惯,这些因素各自都面临着一些挑战. 学术界有着许多关于个性.如何对个人进行分类以及如何管理个性的理论.在这些理论中,迈尔斯和布里格斯的工作值得花一些时间来理解,他们俩在1942-1962年间建立了个性测试的理论基础,并提出了对个性进行分类的体系.迈尔斯-布里格斯类型指标(Myers-Briggs Type Indicator,MBTI)个性清单的作用是,使C. G. Jung描述的心理类型理论易于理解,在生活中更实用.