结对编程
所有的产品代码都应该由结对的程序员在一台开发机器上共同完成。
结对的两人一个掌控键盘,写代码,另一个人看着对方写,寻找错误和可以提高的地方。两个人交互频繁,全神贯注地投入编写软件的过程中。两人频繁切换角色。掌控键盘的人可能感到疲劳或遇到困难,此时,他的同伴会接过键盘继续写。在一个小时内,键盘可能在他们之间来回传递好几次。最终的代码是由他们俩人共同设计和实现的,两人功劳均等。
结对组合至少每天要改变一次,以便每个程序员在一天内可以在两个不同的结对组合中工作。
在一轮迭代过程中,每个团队成员都应该和其他团队成员结对工作过,并且所有人都应该参与本轮迭代中所涉及的每项工作。这种做法将极大地促进知识在团队内的传播。
专业知识还是必不可少的,那些需要一定专业知识的任务通常需要合适的专家去完成,不过那些专家也几乎会和团队中的所有人结对。这将加快专业知识在团队内的传播。
在紧要关头,团队中的其他人就能够代替专家的角色。
结对非但不会降低开发团队的效率,反过来还会大大降低缺陷率。