结对编程在工作场所有多普遍?


16

我一直对结对编程感兴趣,但是在12年的开发中,我从未在他们采用这种做法的地方工作过,因此我一直对人们的看法持怀疑态度。

我想知道这是因为金钱/时间(尖头的老板在同一台计算机上发现两个人正在使用相同的代码!!!!!!!!!!他们怎么敢!!)还是其他原因?


8
我认为PHB在这种情况下可能是正确的。从根本上说,两个人(因此要两个薪水)对于一项产出基本上是一个糟糕的商业决策。在很多情况下,成对编程比个人编程更具生产力,至少不是“全职”-因此,在指导新员工或共同解决特定问题上做得还不够。
TZHX 2011年

3
很难说服尖锐的上司老板这是有价值的。
沃尔特

3
对于新代码,我认为结对编程非常有价值。第一次迭代可能花费相同的时间,但是IME会花费更少的调试时间。当两个人知道相同的代码时,调试变得更加容易,因为它们可以一起独立看。“有了足够的眼球,每个错误都是透明的。”
Michael K

1
@Michael,并非总是如此,但有时我认为在遗留代码上配对会很有用。它可以破坏筒仓和/或降低重构成本。也就是说,我完全同意您的意见。
DevSolo 2011年

5
@TZHX:“两人一产出是可怜的生意”。这是一个严重错误的论点,您知道这一点(例如,每行代码向程序员付款)。结对编程是一个复杂的主题,不应轻易被忽略。
Martin Wickman

Answers:


20

我已经从事了15年的演出,最近(过去12-18个月)我们开始采用敏捷技术。在使用结对编程的情况下,结果故事/功能已按时实施且没有缺陷。我仍然认为它的使用频率不够高。

在采用敏捷之前,多年来,我和另一位开发人员不经常共享键盘(也许每3-4个月一次)。我们的管理团队似乎并不愿意,但总是对我们的非正式配对感到满意,因为它通常完成了以下几个任务:

  • 减少团队的孤岛(当团队为6-8开发人员时获得巨大胜利)
  • 产生的缺陷较少的代码
  • 每个开发人员通常都会从中学习技能

我会说管理层不愿意,但是如果您可以采取一些步骤,然后证明该功能会更好(节省成本),并且/或者每个(或一个)开发人员都掌握了一些技能(向前支付),则可以您会发现它适合您或您的团队。


DevSolo很有见识,感谢您的分享。我猜你可能是一个稳定的团队(人员流动率低吗?)
ozz 2011年

别客气。我们的营业额一直很低...尽管有4个搬迁地点(横跨4个建筑物和2个州),但我们当中有4个共享同一个办公室15年以上!
DevSolo 2011年

具有讽刺意味的是,您的别名为'DevSolo';)nb我的经验与您的看法一致
ChrisAnnODell 2011年

11

我的猜测是,开发人员可能会遇到很多阻力。您还记得在大学甚至是高中时期被迫与可能不是世界上最有动力的人一起工作吗?这些人仍然存在。除非您有一个由所有“顶尖”人员组成的团队,否则这种类型的设置会在小组中引起敌意。


非常真实的Pemdas!
ozz 2011年

2
+1,很不幸。团队合作是您必须发展的技能,如果您不想,那就不能。也许这就是程序员的经理应该做的-找到可以与他们的员工一起提高最高生产力的团队结构。
Michael K

4
这个职业需要控制自我。这并不总是那么容易,但是回报将是极其有益的。
DevSolo 2011年

@DevSole ...与我的答案到底有什么关系?
Pemdas 2011年

@Perndas,我当时以为可能是错误的假设,抵抗是由于自负。至少当我看到它时,这似乎就是原因。我只看到2个(我记得)开发人员实际上对此有所抵触。一个人的自我无法适应房间,另一个人则充满信心。
DevSolo 2011年

9

尚未正式完成,但是只要遇到困难,我都会打电话给开发人员,我们俩将共同致力于解决方案。这是反弹想法的好方法,让一个人思考而另一个人思考,这样就不会因为输入内容而失去思路。

希望做得更多。


4
如果您不熟悉,可以使用另一种工具,称为“橡皮鸭”。基本上,将一个物体像橡皮鸭一样放在桌子上(您确实使用玩具尤达),并向它解释问题。参见c2.com/cgi/wiki?RubberDucking
DevSolo 2011年

我改用坐在我旁边的人...我们不能在桌子上放东西。
CaffGeek 2011年

认真吗
Michael K

@Michael ...你不知道我们这里的规则。然而,几件好事却超过了所有坏事。
CaffGeek 2011年

这是可悲听到那些不合理的规则管理适用于程序员(这是非常愚蠢的,你不觉得他们必须投入额外的努力,让我们高兴地平衡了吗?)
Zekta陈

9

我不在乎:

1-我喜欢在编码时听音乐。并非每个人都希望听到Slayer在耳边爆炸。

2-我长大时考虑过非常粗鲁地看着人们的肩膀,当人们这样做时会感到非常不舒服。

3-我想很快,当我正在寻找解决方案时,当我开始寻找答案时,被打扰是我所需要的最后一件事。

4-我不能偶尔休息以细读论坛和新闻组。无论如何,有些人可能认为它不合适,但是我发现这对于我的持续改进非常重要。有时候我会太分心,但是总的来说,增加知识所带来的好处要大于对生产力的影响。

我想其他团队可能会有所不同,但是有几次我真的被某些东西困扰并且需要NEED的帮助时,我几乎始终是最终提出解决方案的人。我真的很擅长做我的工作,但是我认为可能还有更多的事情...不确定,无论如何,我发现我最好只解决棘手的问题,而总的来说最好单独完成。听起来可能有些自大,但这并没有使它错误。

我认为这实际上可能会帮助其他人掌握我的一些技巧,但是考虑到#3,他们无论如何都不会打破我的思路而几乎无法提出问题。

所有这些,我已经不时尝试了。有时它的好处很小,但我当然不能认为它是一贯的事情。独狼系统对我有用,对团队似乎也有用。


2
@Noah,仅基于#2,我不确定您是否掌握结对编程的概念。这个想法不是要抬头。按照我的实践,这个想法是共享PC协同工作。它不是主从编程,而是对等编程。也许以后是一个更好的说法……
DevSolo 2011年

这是完全有效的。有些人只是想独自一个人解决这个问题。
MattC 2011年

而且,耳机物+1。我整天爆炸金属和/或发呆,当人们和我谈论这些东西时,我非常恼火。他们不能等到我喜欢的歌结束了吗?:D
MattC 2011年

2
@Noah:阅读您的列表,似乎您缺少配对编程的要点。我并不是说这适用于所有人,而且从牛仔模式切换到共享模式当然需要花费时间和精力。就像花时间学习如何正确进行TDD(或其他任何敏捷实践)一样。
Martin Wickman

1
继续...:具有“高级”的意思是您实际上可能不是编写代码的人,但可以帮助更多的初级开发人员提出建议。我也不是结对编程概念的忠实拥护者,但是我发现它可能大多超出了我的舒适范围。许多开发人员喜欢独自在工作站上工作,但我必须承认,与其他开发人员一起工作时,我可能会学到更多并找到更好的解决方案。因此,这实际上是个人舒适与工作效率提高之间的关系。
Anne Schuessler

5

结对编程是开始或做一些不平凡且困难的事情的好方法。更好的例行任务和简单任务最好单独完成。

我参加了许多初创/车库公司和大公司的结对编程会议。它总是在只有新事物和困难被接受时才发生,也就是说,每年最多两次,持续几周。您的公司多久发生一次?


肯定比我希望的少。
ozz 2011年

5

我们从来没有这么称呼过它,但是在过去,这就是我们一直在攻击新问题的方式。我们会结成对,以开始解决方案,但通常会分拆以单独完成/清理细节。不再那么多了。似乎越来越稀有。


3

不是很常见。在过去10多年中我去过的所有商店中,我都看过一次。在最慢,效率最低的商店。这似乎创造了一个嘈杂且压力很大的环境。一个人不停地进行驾驶和交谈,根本阻止了另一个人思考。

将团队聚集在一起进行代码审查,无论是成组的还是成对的,并给开发人员自己的空间。从长远来看,这将比追赶最新的敏捷时尚更好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.