货币互换:利弊是什么?


15

大多数敏捷 / XP理论家都拥护的一般想法似乎是,对应该定期交换。例如,每个程序员每天应该交换一次对。一半的人在一天开始时进行交换,一半的人在午餐后进行交换:由于会议,假期之类的外部因素,大多数人倾向于每周交换一次或两次交换时间,以便分配配对配置在整个团队中相当平均。

频繁调换的一个基本原理是,知识在团队中快速而均匀地传播,而不是将特定的技能和知识集中在特定的个人身上-这意味着如果人们离开公司或离开公司,工作就可以顺利进行。另一个原理是围绕结对编程本身的教条的一种推论,即每次有人交换您时,都会得到新的视线审查,因此它只能提高代码质量。

两种说法听起来都合理;从管理的角度来看,这听起来好像您在稳定性和质量上都得到了提高,而这种频繁的交换在我所研究的大多数Agile / XP书籍中几乎都是标准理论。

因此,当实际付诸实践时,人们实际上对从

  • 程序员的观点?
  • 经理的观点?

  • 当某人从/交换到一对时,应如何确定?

这和“配对编程”是一样的吗?
罗伯特·哈维

@Robert Harvey-嗯,这是结对编程的一个方面。一旦团队确定他们要成对编程(在工作日的某个比例),那么他们就需要决定如何将程序员分成几对,即,一个程序员何时应该离开一对(另一个应同时加入) )。那就是“对交换”。

+1是个好问题。可悲的是,我认为很难找到一家定期配对的商店,更不用说拥有配对交易数据了。希望我对此表示错误,并且您会得到一些好的答复,我对听到一些消息很感兴趣。
Jesse McCulloch

2
我个人会发现配对交换非常分散注意力。试图在如此近距离内应对这么多不同的个性和技能水平,将会产生太多的认知失调。
罗伯特·哈维,

@Jesse McCulloch-我在一个只能配对程序和交换内容的地方工作,就像书中所说的那样。我也曾在纯粹的个人环境中工作,因此对对比有一些不错的看法。但是,我想听听其他人的意见,因为我想看看他们是否与我自己的意见相符,而又不会对其产生太大影响。

Answers:


4

结对编程很困难。

这很困难,因为当所涉及的两个人的技能水平接近时,它会发挥最佳作用,这在某些工作环境中可能会很困难。换班时可能会更加困难,因为您需要找到其他具有适当技能水平的人,然后使他们加快处理当前问题的速度。这样做的好处是,更多的人可以接触任何已配对的给定代码。由于没有人对此有足够的了解,因此应该减少代码无法修复的时间。它还应传播团队所有权和任何人承担任何工作的能力。

我发现,即使在完成配对的环境中,配对交换也不值得花费。但是,这可能是由于我们的任务花费的时间不会超过1.5天。我们发现将任务分解成不超过约1.5天的工作量是很大的好处。在任务运行时间较长的情况下,换对可能更有意义。


就个人而言,我喜欢与各个级别的人结伴。有时我正在学习,有时我在教书,有时我们只是把事情做好。但是学习和教学可以建立长期的团队能力,我认为这与检查功能一样重要。
威廉·彼得里

您可能会这样认为,但是看到您的截止日期逐渐消失的项目经理会因为您的专业知识而习惯于按时训练人们,而不是像您无法同意的那样迅速编写代码。这就是大多数项目的运作方式,根本没有时间培训人们掌握完成工作所需的技能,因此,大三学生只能随意晃悠,这只能归咎于预算超支。
jwenting 2011年

@威廉·皮特里(William Pietri):根据我的经验,配对并不是一种很好的教学方式。我带一个人并带领他们遍历代码向他们解释发生了什么没问题。但是,这不是结对编程。
Dietbuddha

@jwenting:如果您说的是结对编程在注重质量和可持续性的胡说八道的最后期限的商店中不能很好地工作,我不会反对。我的提示:在不疯狂的地方工作。
威廉·彼得里

@dietbuddha:为我工作!对于我来说,学习新语言,框架或库的最快方法是与非常了解它的人结对。而且我知道没有比配对更好的方法来带动菜鸟了。例如,以下是经验:slesinsky.org/brian/code/starting_xp.html
William Pietri

3

我既是程序员又是经理。这是我的看法:

定期交换很棒。我赞成每天交换2-4次,这大约和我认为的一样快。对我们而言,这是自然的转折点:通常是午餐和下午中午。每天更改一两天可能没问题,但我担心会花更长的时间。(我听说有一个地方每六个星期交换一次,这很疯狂;我认为这很疯狂;经过这么长时间,您就可以刺伤圣人了。)

作为一名程序员,我之所以喜欢它,是因为我有新的见解,可以检查代码的其他领域,并且可以按照自己的喜好坚持或继续前进。最近,我从单人编码回到了配对,我很激动:我学到更多,玩得更多,做得更多。

作为经理,我认为这很棒,因为它解决了许多卡车因素和瓶颈问题。例如,这个周末我要花一个漫长的周末参加朋友的婚礼,所以我一点也不担心:我所做的一切也被其他人处理。我还认为,这确实有助于团队成员相互欣赏对方的长处和短处,并鼓励集体拥有代码。

至于谁留在目前的工作上,我觉得这主要取决于相关人员。有时您希望透彻一些东西,有时您已经准备好进行更改。我们有时还会进行调换以引进专业知识,或者使某人可以学习他们感兴趣的东西。我们试图使我们的工作单元保持很小(0.5-2.0双日),所以这没什么大不了,但是调换很顺利。


对我来说,只有在以下情况下交换才是好事:a)我不喜欢与与之一起编码的人编码,b)我不喜欢我正在研究的故事(例如修复绳索)旧的内存错误)。否则,我想从头到尾保持不变。我个人认为配对交换会降低代码质量,因为好的代码应该具有单一的清晰愿景,从事单个部分工作的人员越多,愿景变得越混乱。至于分享知识,我想说的是大多数人对正在发生的事情有所了解,但是没有人真正了解任何事情。

@B Tyler-我认为代码库是一项共同的工作,因此您必须拥有清晰的愿景,这也是一个共同的愿景。这就是为什么我认为交换很重要的原因:开发牢固的共享方法需要大量的互动和讨论。
威廉·彼得里

1

好的,这就是自称务实的敏捷/ xp程序员的答案。我从事结对编程已有两年多了。如果配对编程良好,则应频繁交换货币对(最好是每两个小时,如果不是每半天一次)。在我们的办公地点,我们非常重视每天(通常)或每两天(更坏的情况)交换对。这样做本身可以使我们对提交和学习的代码质量充满信心,也可以从每对代码轮换中收获很多(我们知道代码审查是好的,越好越好,越早越好。这就是“对编程,包括交换对的实践”所实现的。

为什么我们不每两四个小时切换一次配对?好吧,实际上我也曾参加过实践这一工作的团队。当然,这是一种更凉爽,更高效的方式。但这是交易,交换对的时间间隔不应该是规则,它应该自己发生;只有这样,经理或企业才能看到其收益。

我目睹并经历了这一点。我现在是它的传播者。它没有理论。而是它非常实用:)快乐的乒乓球配对和交换配对。


1
las,我现在完全转换为结对编程通常是个坏主意。结对编程中频繁的结对交换只会使情况变得更糟。我已经听完所有理论并在实践中进行了很多尝试,我只是认为它效率极高,比单独编程更无聊和令人沮丧,并且导致代码质量较低。
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.