敏捷开发:结对编程成功的五个技巧

互联网公司研发部门经常都面临着巨大的压力:为了跟上硅谷的创新步伐,成功并快速地实施公司或者客户的产品,以尽快实现商业模式,我们必须更快地开发新的代码。为此,我们需要重新定义游戏规则,提高生产力和利用团队内协同效应,有一种可能的方法叫做结对编程(Pair Programming)。

也许您也听过这个名词,这种开发方法已经存在了很长一段时间,但它现在在开发团队中扮演越来越重要的角色。

坦白说来,两个人的头脑结合在一起反应更快,也能有更好的成果,比如更高质量的代码,更少的bug。此外,团队精神通过合作得到加强,工程师们更改善了时间管理。

不可小觑程序员们的动力,如果他们喜欢工作的话。

诚然,结对编程在项目开始时会增加开发成本。管理者须注意以下几点:结对编程可以显著降低后续成本,因为它减少很多bug的产生。Facebook和Square等已经在采用新的工作方法,Square最近透露,其15%的开发工程师已经结对工作。

特别是对于复杂的代码,比如四个人的眼睛明显好于两个人,那么结对编程是一个潜在的高风险工作,高质量代码可以更快地投入到运营,以及需要新开发的任务。如果程序员已经使用了类似的技术,他可以给其他程序员分享知识,并将建设性的建议纳入常见的任务中。

为什么结对编程会成功,应该避免什么问题?

以下5个提示让结对编程在您的项目管理中取得成功。

1.同时开发相同的代码

优秀的程序员会不断交流关于代码设计和新想法,共同致力于下一步的开发。结对编程开发人员使用两个键盘,两个鼠标,共用一个屏幕和一台电脑。开发者控制并编写代码,扮演飞行员的角色,另一位担任导航员的角色,专注于确保代码是正确的,并考虑改进应用程序的设计,遵循最佳实践。

其实也没有固定的角色分配,以半小时的节奏,角色互相交换。让两位程序员都保持动力和细心。同样,Partner也会随时变化。这将确保大家更饱满的动力。

2.根据任务将开发者分组

根据任务决定团队分组是有意义的。谈到知识和技能转化,初级和高级程序员应该共同努力,以获得最佳的学习体验。但是,如果要求代码质量,避免错误或者开发困难的任务,应该是两位高级程序员一起工作,这保证了高效率和低错误率。

如果不是把知识转移到初级阶段,那么通常确保项目合作伙伴具有平衡的专业能力。否则,合作伙伴可能会迅速进入低谷,从而抑制行动力。

合伙伙伴也要经常动动,互相适应。

3.小组会议鼓励团队精神和创造力

每天约三到五分钟的短会,所有的同事聚集在一起,交流想法,这样可以更好地激励团队。在我的团队,我们每天早上进行这些简会。

首先,我们一起吃早餐,然后我们一起来讨论当前项目的细节。有时候甚至整个团队的整行代码都会被分组讨论。共同吃早餐是一个重要的因素,整个办公室遵循相同的节奏。此外,每个员工都有机会进行互相个人接触,这对于团队合作有积极的促进。

4.与产品经理密切联系

在软件开发的早期阶段产品经理也需要参与其中,这让程序员对需求有更好的理解。比如,如果要开发数据分析应用以更好地了解客户的行为,那么程序员被证明可以直接开发更智能的应用程序。开发者的优点是可以不断地给出反馈意见,并就应用的工作方式提出新的想法。

5.测试,测试再测试

针对结对编程中的bug,开发者应该通过测试驱动开发(TDD)确保所开发的软件确实符合要求。这个过程是基于一个非常短的开发周期不断重复:开发人员首先模拟测试错误的代码,然后再开发一个足以通过测试的代码。最后,修改代码以符合标准。

4.结对编程时应避免使用的注意事项

1)在编程工作中分心

如果两个程序员一起工作,每个人都必须自己自律并遵守团队纪律。从邮件,社交网络或电商购物等处分心,不仅阻碍程序员自己的进步,而且阻碍其合作伙伴的进步。因此,休息和工作应该严格区分,并有明确的时间段。

2) 担心可能的错误

结对编程结合了两个人的知识来解决问题。如果开发者有一个人首先提出问题的解决方案,合作伙伴就很难开创新的局面。

所以,软件必须定期测试,对新开发的代码微调,直到一切正常。合作伙伴对其它解决方案持开放态度并且不拒绝替代想法,是必要的,也是格局之所在。

工作的建设性须始终处于关注的中心,在保护自己的观点和在错误的时间保持沉默,广泛讨论的结果可能适得其反。

3) 规律休息

结对编程既耗费精力和精力,开发人员每天工作八小时,工作非常集中,他们的行为直接影响到合作伙伴。因此应该定期休息一下,放松眼睛,也放松大脑。在我的团队,很多程序员在指定的休息时间里打乒乓球,在这段时间里对软件进行测试。

4.无声的工作

协作编程最大的好处之一就是在团队之间共享知识。与我们最好的Partner不断沟通谈话,一起互相学习和反馈,提供建议与解决方案。驾驶员和导航员相互适应,了解对方的思路。如果存在歧义或差异,则应该进行适当的调查,并一起讨论纠正偏离的方法。

小结

目前,越来越多的公司寻求最佳的敏捷软件开发机会,结对编程这一方法正在迅速扩散。同时还有其它的工作模式也同样有帮助。需要我们对编程有很好的经验,开发者更加高效,专注,积极主动,软件的质量更高,产品也更加创新。

作者:Michael Ramsperger

编译:21CTO社区 - 谷园

来源:https://entwickler.de/online/agile/agile-softwareentwicklung-pair-programming-243981.html

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180129B0IQ2200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励