PairProgrammingMisconceptions

2006年10月31日

一堆关于结对编程

如果你在做一个敏捷的过程,你必须做结对编程。

这完全是错误的。“敏捷”是一个非常宽泛的术语,仅从价值和原则的角度来定义,最显著的是在敏捷软件开发宣言188比分直播完整手机版.宣言没有提到结对编程,大多数敏捷方法也没有将结对编程作为方法的一部分。

由于结对编程是XP的一种实践,它在敏捷社区中有很大的影响。因此,它经常被称为敏捷实践——意思是敏捷项目中人们经常使用的实践。但这只是观察结果,不是处方。

极限编程迫使您进行结对编程

这是一个微妙得多的问题。结对编程是XP的一种实践,它从一开始就一直存在。这里的细微差别在于XP实践对于声称正在做XP的团队是否是强制性的。这实际上是一个比乍看起来更棘手的问题。XP,像任何敏捷方法一样,期望团队选择自己的过程。在Extreme Programming Explained中,Kent说实践是“你将看到XP团队每天都在做的那种事情”。我想说,结对编程对于XP团队来说是很常见的。我不会说一个不做结对编程的团队就不能称自己为XP团队。我还应该指出,对于大多数XP人员来说,我知道一个团队是否属于XP的问题并不有趣;真正的问题是一个团队是否有效。

我认为最接近于强迫结对编程的说法是,如果你想学习如何做XP,你应该尝试结对编程,看看它是否适合你。

我不需要尝试配对,因为我知道我不会喜欢的。

这种说法的问题是,许多人对结对编程感到惊讶。他们试了一下,以为会讨厌它,结果发现自己真的很喜欢它。

许多人在尝试结对时表现得很糟糕,这使情况更加复杂——这可能会给人一种错误的印象。几个小时被动地盯着别人的肩膀看不是结对编程。确保你有一个真正知道如何指导你的人,这样你就可以确定你在评估真实的东西。

结对编程使开发人员的生产力减半。

我对这个问题的回答是:“如果编程最难的部分是打字,那就是正确的。”

支持结对编程的人之所以支持结对编程,是因为他们认为结对编程实际上比两个单独的开发人员更有效率。这是由于结对引入的持续讨论和审查。你会想出更好的设计,犯更少的错误,让更多的人熟悉代码。所有这些都抵消了打字人数减少的影响。

当然,因为我们CannotMeasureProductivity我们不能确定。我的观点是,您应该尝试它,团队应该反思他们是否觉得使用结对比不使用结对更有效。和任何新的练习一样,确保你有足够的时间,这样你就有很好的机会跨越ImprovementRavine

只值得对复杂的代码进行配对,死记硬背的代码没有任何好处。

我认为这是有道理的——结对是关于改进设计和最小化错误的。死记硬背的代码编写起来很简单,很少有机会通过结对来发挥作用。

除了这一点:写枯燥的死记硬背的代码是一种味道。如果我正在编写枯燥的重复代码,这通常意味着我错过了一个重要的抽象,它将大大减少需要编写的死记硬背代码的数量。结对将帮助您找到这种抽象。