结对编程模式
为什么要结对
在团队中,开发人员希望完成更多工作。经验不足的开发人员需要向经验丰富的开发人员学习。组织需要进行结构化,以避免需要N 平方个沟通渠道。
结对编程:互相督促对方专注于任务。集思广益,改进系统。理清思路。当同伴遇到困难时,主动出击,从而降低挫败感。互相督促,确保团队实践的规范。结对编程。—— Kent Beck
配对允许开发人员...
- 产生更好的解决方案
- 即时分享知识和背景
- 相互学习和技能发展
定义
结对编程是指结对完成开发任务的实践。大多数人认为结对编程是指两个开发人员坐在同一台机器前,共用一个键盘。随着远程办公的日益普及,如今即使相隔千里,也能进行结对编程。
司机
手指放在键盘上;输入代码。
航海家
开发人员指出应该输入什么;决定前进的方向。
大多数结对工作都涉及轮流打字。一个人打字(驾驶员),另一个人思考接下来要做什么以及下一步该做什么(导航员)。这两个角色经常互换。
结对编程时,双方必须用语言表达各自的思维过程,才能确保高效。成功的结对编程不仅依赖于良好的沟通,也依赖于编程技能。结对编程的前提是,在处理复杂任务时,“三个臭皮匠顶个诸葛亮”。
模式
强大的技术
强技术是一种驾驶员不做任何导航员未指示的事情的方法。
为了给驾驶员提供思路,他们必须将系统移交给同伴,然后从导航员的位置进行控制。这种方法完全吸引了观察者的注意力。
传统技术
传统上,结对编程是通过驾驶员-导航员技术推广的。理想情况下,团队成员应该不时地交换角色,以获得更好的结果。
在这种结对编程的模式下,导航员经常会失去兴趣。可能是因为负责打字的人沟通不畅,也可能是导航员不想打扰他。很多时候,司机会说:“等一下,我有个主意……”然后继续工作;导航员就被抛在后面了。
乒乓球(TDD交换)技术
使用此模式,一位开发人员编写失败的测试,另一位开发人员编写代码使测试通过。然后,重复此模式。
这种模式最大的挑战在于找时间重构代码并进行测试。事实上,测试重构所花费的时间往往比编码时间还要多。实现一个功能可能很复杂,测试也会变得复杂。开发人员还必须注意代码的简洁性,以便长期轻松维护。这个想法也适用于测试。
蛙跳技术
这种模式可以用两个处于不同时区的开发人员来最好地描述。一个负责前端代码,另一个负责后端代码。他们致力于一个共同的功能,并承担开发主导角色……推动代码的进展。
橡皮鸭技巧(找个伙伴)
这种情况下,结对开发通常是两个水平相近的开发人员。其中一人在编写代码时遇到了瓶颈,需要“额外的眼睛”。通常情况下,一个不那么“深入细节”的人能够发现原先开发人员遗漏的地方。
暴民技术
Mob 技术可以与代码抽象很好地结合使用来开发概念实现。
这种技术允许多个开发人员同时做出贡献。许多人参考代码并寻找可供使用或验证的实现模式,同时有一两个人负责编写代码。
这种技术也可以用于教学(或指导)角色,为小组提供探索和检查代码模式的空间。
结论
结对编程,如果正确完成的话,是一种强大的工具,但它很容易出错并且......
- 绝不应该被强迫。
- 不应期望与传统开发不同的结果或速度。
- 并不是为了“炫耀”。
图片
由Flaticon的Freepik制作的图标已获得CC 3.0 BY许可