1.10.2 结对编程
结对编程(pair programming)反对深植于我们心中的个人主义,我们从小就通过学校(在那里,成功与失败全在自己,与邻座一起工作这样的事情会被认为是“欺骗”)和媒体(特别是好莱坞电影,其中的英雄总是在与盲目服从作斗争)在灌输这种思想[1]。程序员也被认为是个人主义的典范,正如Larry Constantine喜欢说的“牛仔编码者”。而XP,这一打破传统的方法学,主张代码应当在每个工作站上由两个人编写。而且这应当在有一堆工作站的工作场合中进行,拆掉人们喜欢的隔板。实际上,Beck说,转向XP的第一个任务是用螺丝刀和螺钉完成的,拆除挡道的一切东西[2](这需要经理能说服后勤部门)。
结对编程的好处是,一个人编写代码时另一个人在思考。思考者的头脑中保持总体概念,不仅是手头问题的这一段,而且还有XP指导方针。例如,如果两个人都在工作,就不太可能会有其中的一个说“我不想首先写测试”而愤然离去。如果编码者遇到障碍,他们就交换位置。如果两个人都遇到障碍,他们的讨论可能被在这个区域工作的其他人听到,可能给出帮助。这种结对方式,使事情顺畅、有章可循。也许更重要的是,它能使程序设计更具有社交性和娱乐性。
我在一些讲习班的练习期间用过结对编程,似乎明显地改进了每个人的练习过程。
[1]虽然这个观点可能太美国化了,但是好莱坞的故事遍布世界。
[2](尤其是)包括PA系统。我一度在某公司工作,他们坚持广播每个管理人员的电话,这种做法经常会打断我们的工作(但是管理者都不能想到把它去掉)。最后,当没人注意时,我就剪断了电线。