变化是如何产生的——有关结对编程

标签: 敏捷 变化 咨询 结对编程 | 发表时间:2013-01-10 18:04 | 作者:juvenxu
出处:http://www.juvenxu.com

一个十多人的团队,十个月前,每个人都习惯在自己的一块自留地代码上劳作,当管理层推结对编程时,大部分人反应冷漠甚至抵触。今天,这个团队的几乎所有人都愿意接受结对编程这种工作方式,各个人对整个系统的了解更好了,遇到不熟悉的地方都很自然地想到找个熟悉的人来结对,很自然的,团队合作更好了。然而,同样的公司,不是所有的团队都有这样的变化, 自留地式的工作方式在一些团队非常普遍,这是为什么?

直接管理者的支持

直接管理层就是大家直接的老板,如果是再上一层,就算他支持,如果和直接管理者的理念不一致,那也比较麻烦。管理者的理念差别很大,有人喜欢微管理,事无巨细都要了解并把握方向,为了短期效率让每个人专注在一小块代码;有人喜欢放手让团队自己思考协作,让大家多花点时间去了解别人在干什么,以让知识留到更多人的脑子里。当然这也不是非A即B的事情,但更偏后者的,自然也就更支持大家结对编程;如果偏前者,那就算有开发人员想结对,也会承受一些压力。因此很可能出现这样的现象:高层推敏捷转型,底层积极性也很高,中间被卡了一下,进展就变得磕磕绊绊。

少数的 Early Adopter 及 Coach

每个团队基本都会有一两个人对变化感兴趣,或者更好的情况是本身就很相信包括结对编程在内的敏捷实践,那么这些人在管理者支持的前提下会对整个团队产生持续的影响。与之类似的是我目前从事的角色,Agile Coach,在团队中推广并实践结对编程,解释why、总结how,诸如此类…… 给我印象比较深刻的是,一个原本对结对编程抱怀疑态度的开发者,在和一起结对了几个session之后,明确地告诉我喜欢适当的结对,并在之后团队开会的时候抱怨团队的结对编程不够,这也算是我做 Coach 后感觉比较有成就感的一件事情。这里有个比较重要的原则是, 与其把推动变化的精力平均地分散到每个人身上,不如先关注 Early Adopter,他们会帮你扩大影响

代码基的大小

代码基越大,推行结对编程就越难,这是因为更难看到成果。为什么大家喜欢结对编程?因为它能帮助我们高速地从他人学到知识,并且在日后使用这些知识并很直接地体现我在这个团队中的价值。当知识点不大的时候,和人一起结对一两天就能基本掌握的时候,获得成就感非常容易!可是,当一块知识牵扯的代码动不动就成千上万行的时候,学习起来就不是一两天,甚至不是一两个礼拜的事情,这样,还没等你能够使用这些知识去体现价值的时候,很多人就已经对你失去了耐心,甚至你自己也感到沮丧。这也侧面印证了另一个道理, 只要是软件项目,代码是一切之本,如果代码写不好,再好的流程也没太大的用处

适当的强迫力及奖励

这简直就是‘胡萝卜加鞭子’,但小心使用也会有不错的效果,尤其对于一些主动性不够强的人来说,强迫至少让他去尝试,奖励也带来了趣味。一些啤酒可乐就容易让可爱的程序员们 high 起来,结对最多的人给个5、6瓶,其他人只有一瓶,或者设定一个团队结对时间总目标,达成了大家就一起分享,都是挺简单有趣的方法。当然大家都不是傻子,前提还是大家基本理解并认同结对编程这种工作方式的价值,强迫或奖励只是帮助去除人天生惰性的辅助手段而已。

看到了一个团队的变化以及结对编程给这个团队带来的受益,我很自然地更推崇这种工作方式了。一些理论上东西我已经在 结对编程地价值及注意点一文中简单讲述,但理论再好也终究只是理论,要相信,体验是必不可少的。也许有人会说,“你作为一个敏捷教练,屁股决定脑袋,自然就推崇结对编程这一敏捷实践”,但这只是表面的,如果自己不亲身实践体验并得到好处,我还真不敢就因为看了几本书就与人大吹特吹,如果自己都说服不了,有什么资格说服别人呢?

推而广之,敏捷也是,大家都在谈,有人切切实实实践了,有人纯粹是转发而已。

相关 [变化 结对编程] 推荐:

变化是如何产生的——有关结对编程

- - Juven Xu
一个十多人的团队,十个月前,每个人都习惯在自己的一块自留地代码上劳作,当管理层推结对编程时,大部分人反应冷漠甚至抵触. 今天,这个团队的几乎所有人都愿意接受结对编程这种工作方式,各个人对整个系统的了解更好了,遇到不熟悉的地方都很自然地想到找个熟悉的人来结对,很自然的,团队合作更好了. 然而,同样的公司,不是所有的团队都有这样的变化, 自留地式的工作方式在一些团队非常普遍,这是为什么.

敏捷结对编程实践

- - 技术改变世界 创新驱动中国 - 《程序员》官网
本文主要从提升项目质量、促进知识传递及减少项目风险等角度出发,讲述作者所在团队在结对编程实践中的一些经历,以及如何避免或减少其所带来的负面影响. 也许你还未曾尝试甚至还不曾了解,那么我们一起来学习和了解敏捷结对编程实践,相信对敏捷感兴趣的你会有收获. 结对编程(Pair Programming)是一种敏捷软件开发实践,指两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘和鼠标一起工作.

转:结对编程的误区

- - 膘叔
结对编程在我们现在的工作中真的没有使用这玩意. 极限编程也没有用到,我们还是安稳的在一步一步的开发. 其实,在07年的时候,那时候和一哥们就尝试过结对,效率确实上升了不少,但后来仔细想想,正由于两个人水平相近,这样的结对却没有真正带来了效率上升,反而还不如两个人单独开发,事后合并代码. 虽然有一些BUG,但总体代码却多写了很多.

结对编程——我的噩梦

- - 博客园_知识库
   英文原文: Pair Programming - My Personal Nightmare.   自从 极限编程诞生起,我就一直在听说结对编程是个 好东西. 所有的敏捷传教士们都在告诉我们:结对编程能提高代码质量,有助知识共享,甚至激发开发效率,同时,还能深度拉近程序员之间的感情关系(参看 拥抱编程).

结对编程的价值及注意点

- - Juven Xu
结对编程( Pair Programming)可能是最受争议一项的敏捷实践,持续集成和重构基本已经普遍被大家认同了,TDD还能引发 很大的口水仗,倡导结对编程则有被狂砸砖头的风险,本文我不想说结对编程绝对有多好,我想分享的是一些有关结对编程我体验和观察到的价值,以及几个我认为特别需要注意的地方,尤其是后者, 如果以错误地方式用结对编程,弊很可能大于利.

结对编程成为主流,但反响冷淡

- - InfoQ cn
华尔街日报开始注意到越来越多的技术公司在实践结对编程,并在题为“ 计算机程序员在共享中学到深刻教训”的文章中发表了自己的看法. 在技术公司中,结对寻找到了支持者. 这些公司包括Facebook和移动支付创业公司Square. 结对的倡导者对结对的力量赞不绝口,声称结对程序员可以捕获不采用结对时需要花很大代价才能找到的软件错误,而且不太可能花时间上网冲浪.

结对编程 VS 代码审查:对比开发者文化

- - ITeye资讯频道
从上一份工作到现在的这份工作,我从结对编程的开发文化过渡到同行代码审查,这个转变过程是一个非常有趣的经历. 我认为我要记录下些我所注意到的变化. 你可以找到很多标题是/(结对编程|代码审查)的(利|弊)/这种样式的文章,这些文章的作者都可以给出一套清晰且有说服力执行方案. 我认为只要权衡它们的利弊,这两种方案都是非常有效率的.

作为程序员, 你结对编程过吗?(结对编程的意义,经济学价值和个人看法)

- 華 - 博客园-首页原创精华区
在此模式下,一对程序员并肩作战,平等互补进行开发工作. 两个程序员并排坐在一台电脑前,同对一台显示器,使用同一个键盘,同一个鼠标进行工作. 一起分析,一起测试,一起设计,一起编程. 那么结对编程中两个人如何扮演角色. 驾驶员是控制键盘输入的人,而领航员是起到领航,提醒的作用. 你说工程量是一定的,如果两个人编程,那么编程速度就会提高一倍,时间就会节省一半,为什么要编程.

硅谷流行结对编程:一人负责写代码另一人监控

- - TechWeb 今日焦点 RSS阅读
结对编程的坚定支持者Facebook程序员肯特--贝克(腾讯科技配图).   腾讯科技讯(马乔)北京时间8月28日消息,据国外媒体报道,英国著名女作家弗吉尼亚•伍尔芙(Virginia Woolf)认为,一位女作家应该拥有一个属于她自己的房间. 而在美国硅谷,部分科技公司则对程序员是否需要属于自己的独立工作空间表示质疑.

每日站会、代码审查、结对编程 之开源中国实践

- - 翟志军
在我来到开源中国之后,尝试将每日站会、代码审查、结对编程这三种编程实践带入团队. 而这个过程,我个人觉得是一项非常宝贵的体验. 先介绍下目前我们团队的结构:3名Java开发,1名前端,2名实习. 以下我不会详细介绍它们分别是什么,也无意讨论它们有什么好处坏处,本文侧重分享在实践它们的过程可能遇到的问题,以及我们是如何处理的.