英文原文:Pair Programming (give it a rest)
这是一篇痛斥,我真的很生气。
我不是一个社交型的生物。我不想整天时间或大部分时间、甚至一小部分时间坐在另外一个程序员边上编程——即使是经过测量发现这样会提高我的开发效率。就是因为这不是我喜欢的工作方式。它会毁了我对生活的感觉,毁了我的工作环境。我,跟大多数左脑型的人一样,是一个内向的人,无法从容的忍受过度的结伴或社交活动。我感觉这些都是非常让人消耗精力、让人恼怒的事情。我更喜欢安静的一个人工作。这样工作我会非常有效率。事实上我是想说这样我会极其有效率。我深信这是我能获得最大工作效率的工作方式。更重要的,这是我最乐意的方式。生活中没有比快乐更重要的事情了。我可以做一次尝试,看看结对编程是否能比我单独编程更有效率,但我不愿意,因为我根本不在意比较的结果。如果我渴望整天时间坐在另一个人或一群人身边搞社交活动,那我不如去做公关工作或销售或其它类似的工作。
我知道结对编程有很多可以看到的好处。我知道有些人深信结对编程能帮助初级程序员更快的提高进步。我知道有些人深信它能让你减少 bug 的产生。我知道有些人深信它能帮助增加团队的凝合力。如此等等…我知道有很多研究都对此加以证实。我也读了不少,但这些研究都像是在跟我作对,没有一个是适合我的。一个都没有。如果按照那些自称能让我更有效率的指导强行对我施行结对编程,我宁愿立即辞职。如果结对编程是软件业唯一允许的实践方法,我宁愿单干,自己开公司。如果编程工作只能用结队编程实现,那我选择放弃编程。我会选择一种行当,一种没有这些多余的要求我从事社交活动、被人打搅的准则的行当。(不断的被打搅是结对编程的基本信条之一。长时间的结对编程的情况下一个人怎么能进入最高效率状态、进入 zone 境界?这超出了我的能力。)
结对编程跟我的个性真是无法兼容,我是一个能力很强、技术很高的程序员。我知道,因为我妈妈这样说的。;) 事实上,我的能力和技术证明了结对编程的非必要性。结对编程对于增加程序员的效率和开发出最好的产品都绝对不是必须的。它对我反而有负面影响。
我并不认为我是唯一有这种观点的人。所有我的同事都有这种看法。在我 20 多年的职业生涯中,我只知道有一个人,我怀疑他有可能是适合结对编程的,这个人是外向型的,老实的说,他不是一个特别好的程序员。不是特别差,但不能称作好——一般吧。我的意思是,我有信心说,我的对结对编程的观点和态度不是独有的。绝对不是。我相信软件产业里有份量的开发者或领袖会有同感。而那些广大的“螺丝钉”和“齿轮”(朝九晚五拿工资的人),我怀疑只有 40% 或更少的人能从结对编程中受益。我怀疑所有的关于结对编程的喧嚣都来自他们。结果,外向型的管理经理们把这些人和内向型的放在团队里一起管理。(提示:非技术人员一般不应该被安排管理技术人员——这如同水火不容。)
所以,如果你是这些人中的一员,请闭嘴,不要再说什么结对编程了。它就像是一支又老又无聊的颂歌,我早就听烦了。没错,它可能很适合你。没错,它可能很适合你的团队。但你们只是少数——非常少但噪音很大的少数。干那些适合你自己的,但请尊重其他人,让其他人做适合他们的事。我很久没有听到或读到有人抨击结对编程有多么的糟糕了。集中你的注意力,努力思考,深入问题,设计解决方案,正确的实现,系统化的测试。我们不需要把思想观点从喉咙里挤出来,挂在脸上,显示它是多么“神奇”和多么具有“革命性”。我们只是在开发,管好自己的事就行了。如果你认为把一种编程实践方法当作宗教式的宣传比编程本身更重要,那你是绝对需要结对编程来帮助你提高效率。好的程序员,少说,多做。