什么是结对编程
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。(以上来自百度百科)
我为什么不喜欢结对编程
很早以前,我参加过一次thoughtworks的面试,这是我第一次接触结对编程。初次接触,我是比较欣喜的了,几个人一起互相帮助,共同编程。想法过于美好,实际上,找一个懂你的人是很难的,一个写过几年代码的程序员自然而然会形成他自己的编程风格,在某些代码处理上,两个人必然会产生分歧,其实分歧不可怕,可怕的是,处理分歧需要时间,而更可怕的是,待处理完分歧之后,你很难在回到开始那种一气呵成写代码的状态。不记得哪位专家统计过,程序员写代码被打断,再续上之前的思路,平均需要花费10分钟。而时间是最宝贵的东西。起初,我还在怀疑,是我自己跟不上潮流,一开始不太适应结对编程罢了,不过,此后试验过多次之后,我很负责任的得出结论:我不适合结对编程!对我而言,结对编程是程序员最容易翻车的场景之一。请脑补一下,程序员各种现场调试代码的翻车场景(比如,最近的rubyconf大会,队长经典翻车现场...)。
写代码是一件很有创造性的事情
作为一个入行近5年的老程序员,我已不记得写过多少行代码了,每每看到自己前一段时间写的代码,我都觉得跟一样。近一段时间以来,自我感觉写代码稍微有了点灵性,尽量保证交付的代码看起来清爽,尤其是业务代码。严格遵守DRY原则,拒绝Copy,Paste,提高可读性和可扩展性。而最大的改变就是对新出的工具,框架不再那么狂热了,因为,我足够自信花一点时间肯定可以上手的,开始变得越来越注重原理了,也不记得是哪位大神说过的,现在的编程技术还是依托与20时间七八十年代的底层技术,没什么太大的颠覆性改变,这或许也是c,c++一直经久不衰的原因吧。程序员是分等级的,尤其是中级程序员之间的差距是相当大的,极端情况下:刚跨过初级的门槛和已到中级的巅峰的两个程序员,这之间的差距几乎就是高级程序员跟初级程序员的差距,两个人没法通过结对编程交流到一起的。我相信越到高级,越难找到跟自己结对编程的伙伴,或许这就是为什么大神几乎都是独行侠的原因吧。或许将来的某一天,我也期待着能找到一个伙伴和我一起做这件有创造性的事情吧。反正目前为止,我不适合结对编程。
不妨把结对编程换成代码review
代码review同样是一件极为熟悉的翻车现场之一。但至少有一点是好的,大家都没有完成任务的压力了,这样大家都在同样的无压力的状态下,来分析代码了。试着抛弃掉结对编程吧,一方有任务压力的情况下,很难分心来听另一方来叨叨代码该怎么写的,先把代码跑起来,然后再重构,而不是一开始就要求代码的好质量。过早的优化都是不必要的。试着相信你的伙伴能独立完成编程吧。