结伴编程,感受心流
设想一下,你完全投入了你正在做的事,专注它,奉献它,参与它,可能忘记了时间,可能感受到了欢乐。你这就是在检验心流。整个团队中的程序员们要同时达到并保持心流是很难的,因为有非常多的中断、交互和其它的分散注意力的事情可以轻易打破心流。
如果你已经实践过结伴编程,那么你很可能已经了解对结伴对心流的贡献了。如果还没有的话,我们想用自己的经历来激励你尽快开始!想要成功地进行结伴编程,个人和作为一个整体的团队都要付出努力。
作为团队的一员,对经验比自己少的队员要有耐心,也要克服面对比自己更熟练的队员时的恐惧。要认识到每个人都是不一样的,并且在意其他价值。了解自己和其它队员的的长处与短处,你可能就会惊讶地发现自己可以从同伴那里学到许多东西。
作为一个团队,引入结伴编程可以增进整个项目中的技能和知识的分享。你应该与结伴地完成任务,并频繁地轮换同伴和任务。遵从一个轮换的规则;在必要的时候,也可以把规则放到一边或者是修改它。我们的经验是你并不一定需要完成一个任务之后再把它轮换给另一对;中断一个任务并将其传给另一对听起来很不符常理,但我们发现这是有用的。
有很多会打断心流,结伴编程却可以帮助维持的情形:
减少“卡车因素”:尽管经历中可能是不正常的,但有多少队员可能会在团队完成最终可交付的产品前被卡车撞到呢?换句话说,你对某一个队员的依赖性有多强?知识是专属的,还是分享的?如果你在每一对中轮换了,那么总有其他人有相应的知识来完成工作,团队的心流就不会被“卡车因素”影响了。
高效地解决问题:如果你正在结伴编程,并遇到了一个有挑战的问题,你总会找到可以一起讨论的人。在自己被问题卡住的时候,这样的谈话总更可能找到解决方法。随着工作轮换,你的解决方法也会被其它对程序员来查看并重新考虑,所以如果一开始没有找到最好的解决办法也没有关系了。
顺利地整合:如果你当前的任务涉及到调用其它的代码片段,你想要有方法的名称、文档和测试,能给你一个关于其功能的充分描述。如果没有的话,与另一个曾经参与编写那块代码的程序员结伴,可以给你更好的概述,并能让你更好地整合自己的代码。此外,你也可以将此讨论作为改进命名、文档和测试的一个好机会。
平息中断:如果有人过来向你询问问题,或者你的电话响了,或者你需要回复一封紧急的邮件,或者要参与一个会议,你的同伴可以继续编程。当你回来时,你的同伴还处于心流之中,你能够快速地跟上并参与他们。
快速地让新成员跟上:通过结伴编程,以及对队员和任务的适当轮换,新人能够很快地了解代码和团队成员。
心流可以让你出奇地高产,但它也很脆弱。尽可能地实现、维持!
原文:Pair Program and Feel the Flow byGudny Hauknes, Ann Katrin Gagnat, and Kari Røssland