《人月神话》阅读笔记3
结对编程让两个人所写的代码不断地处于“复审”的过程,程序员们能够 不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把 问题拖到后面的阶段去。开发中的复审主要包括:设计复审、代码复
审、测试计划复审和文档复审。这些复审可以在伙伴之间进行,也可以 在团队内部进行。结对编程和传统开发过程的复审有什么区别呢?
1. 传统意义上的伙伴复审,即程序员之间的互相复审,有以下的问题:
1)复审人缺乏对程序的深入了解,减弱了复审的效果;
2)不能持久、定时地进行复审;
3)对需求和设计的不了解导致无法实现全面有效的复审。
2. 团队复审是指多于两人的团队就某一程序实体进行的复审,团队复审 的缺点在于:
1)什么时候开会做复审?不可能一个团队天天开会。要找到一个所有人都能出席的时间,并不容易;
2)牵涉的人员众多,理解程度不一,复审的速度和效果不能得到有效 的平衡—太快则有人不懂,太慢则浪费许多人的时间;
3)正是由于成本问题,无法对所有的设计和代码进行深入的复审;
4)由于人员众多,有面子问题。
在结对编程中,任何一段代码都至少被两双眼睛看过,被两个脑袋思考过。代码被不断地复审,这样可以避免牛仔式的编程。同时,结对编程避免了“我的代码”还是“他的代码”的问题,使得代码的责任不属于某个人,而是属于两个人,进而属于整个团队,这样能够帮助团队成员建立集体拥有代码的意识,在一定程度上避免了个人英雄主义。结对编程的过程也是一个互相督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。这种督促的压力,使得程序员更认真地工作。结对编程“迫使”程序员必须频繁地交流,而且要提高自己的技术能力,以免被别人小看。但是要注意,每个人每天的高效率工作时段不超过3—4个小时。结对编程中驾驶员和领航员的角色要经常互换,避免长时间紧张工作而导致观察力和判断力下降。一对程序员完成预定任务之后,就可以休息,或者开展其他较轻松的工作。而不应该死板地按照工作日八小时的规定而继续编程。什么样的人适合结对编程?极限编程对工程师提出了更高的要求。这种要求不关乎技术水平,也不关乎学历水平或工作经验。这种要求是对一个人的心智、道德修养的更高要求。结对编程中,编码不再是私人的工作,而是一种公开的“表演”。程序员的代码、工作方式、技术水平都变得公开和透明,这也许是有些人不喜欢这一方式的原因。
感受:
结对编程,本学期也组织进行过几次,这几次结对作业,我感觉是在为团队合作做基础,在结对中,由于有了队友,使得工程变的简单了起来。两个人一起工作一个项目,一起为一个项目发力,这使得工程进度大大加快。但结对时也会遇到一些问题,比如工程的整合问题,毕竟是两个人的代码,除了问题都会不知所措,就如文中所说:“我的代码”还是“他的代码”的问题。解决方法:结对编程中驾驶员和领航员的角色要经常互换,避免长时间紧张工作而导致观察力和判断力下降。两个人做主力要换着来。