这种连续对编程是否良好?

时间:2009-12-02 05:19:08

标签: extreme-programming pair-programming

我在一家公司工作,我被迫与一个比我经验丰富6年的人一起编程。与此同时,我们在同一台PC上处理相同的代码,设计或其他问题。

缺点。
这消除了结果所有权的感觉。彼此的情绪开始影响两者。

优势。
良好的思想结果和公司的产出。

我想知道其他开发者如何应对这种情况。

7 个答案:

答案 0 :(得分:17)

结对编程就像花样滑冰

  • 你不需要24x7全天候在一起,只有当你在冰上时! (即项目的许多部分都受益于单独编码,该对最终重新分组审查/调试,但没有主动“竞争”完成)。
  • 这一切都取决于你的伴侣:它可以非常好地工作,或者根本不工作,不受滑冰(或编程)技能的影响。
  • 它需要诚实和耐心的恰当平衡(坦率地说,但是在恰当的时间,关于你明显缺乏所有权,或者你对某些任务的巨大乐趣或你对另一部分的障碍等)。 。)

由于这些原因,关于结对编程应该没有什么教条和任务。我个人非常赞成这种做法,但我相信程序员和管理层应该理解“适当的化学”的要求,当一对不能很好地协同工作时,不应该有一点怨恨或判断

可以肯定的是,程序员应该在宣布人格冲突之前,充分尝试这个学科并认真地与特定的合作伙伴(足够长的时期,以及各种项目类型)合作。特定项目类型的特定项对也可能更好。

答案 1 :(得分:4)

我认为你想拥有一些东西,承担一个模块/模块组的责任并自己调用它?这真的取决于你的项目,也许坐下你的PL并谈论它将是一个好主意。这样他就可以承担一些责任,你仍然可以配对程序。

答案 2 :(得分:4)

总之 - 是的!

但我认为每个人一开始都觉得很难。

我认识XP的大多数优秀程序员都说“我老板强迫我配对”。你并不孤单!

制片人如果您想要更多的领导感,可以在团队中引入“故事制作人”角色。每个故事都有一个“制作人” - 负责确保特定故事完全完整的人(完全考虑,与客户一起清理,测试,部署和演示)。作为制作人可能意味着要敲定大量功能并感受掌管某些东西 - 即使你在迭代中每天都不工作。 Devs通过在故事卡上写下他们的名字来注册成为迭代开始时的制作人。

  • 配对意味着人们可以看到你的强壮以及你的弱点。 让人们确切了解你如何处理事情需要勇气 - 这需要一定程度的信任。
  • 这意味着有一定程度的给予和接受 - 有时你会倾听,有时你正在做和解释。
  • 在解释您正在做的技术方面需要时间来培养技能 - 不仅仅是什么,而是如何与其他开发人员合作。
  • 这有一个社会层面。当你花时间与其他开发者一起时,你会发现你有

有积极的一面:

  • 你会看到解决问题的不同方法。
  • 你会学会更好地解释一些事情。
  • 你做配对的内容有很多种 - 你不会陷入代码库的同一部分。
  • 当开发人员学会一起工作时,你可以编写更好的代码并开发“团队风格”
  • 你可以解决通常在你的直接技能之外的事情 - 例如与DBA或平面设计师配对。了解一些新事物真是太好了。

否定:

  • 选择配对可能很棘手,而且有些配对更难以建立融洽关系。
  • 一些“知道这一切”对待配对,因为他们告诉其他人该怎么做。让他们正确合作真的很难。
  • 我曾与之合作的一位非常强大的开发人员感到沮丧,因为他不再是唯一一个在特定代码库上工作的人。他失去了主人翁意识。

我记得想要配对节目,但我在最初几周仍感到很多恐惧。

直到今天,经过密集的一天配对后,我仍感到筋疲力尽 - 远远超过单独编码。

过了一段时间,你习惯了配对。有时候我发现自己想要用设计来讨论“走哪条路” - 那时我想念配对......我几乎转过身来,问一下这位曾在火车上编织过一次关于物体设计的奶奶曾经! ; - )

答案 3 :(得分:2)

减少所有权可被视为优势

结对编程,特别是在经常切换合作伙伴时,在敏捷团队的环境中设计,部分是为了增强集体所有权。这减少了知识的孤岛(换句话说:增加你的项目的“truck number”)并减少了这样的态度:“这部分代码很差,但这不是我的问题,因为我不拥有它”。另一方面,敏捷团队选择作为一个团队来配对程序,因为他们认为它最有效。

结对编程提高了团队的平均技能/经验水平

当程序员配对时,知识,技能和经验会在团队成员之间转移。这种转移往往是双向的,除非存在明显的不匹配,例如在您的情况下。然后它往往是单向的。这是敏捷团队经常切换对的原因之一。

强迫人,特别是程序员,是一个关注点

强迫人们练习,即使是良好的练习,本身也是一个问题。如果你强迫程序员,这往往特别糟糕。

如果你无法解决人们的问题,你不能和他们一起生活,有人可能不得不去

当然,在结对编程中,个性可能会导致摩擦。但是,如果人们无法成熟地解决问题,那么我认为这是一个问题,而不是实践问题。仍有开发人员非常喜欢单独工作并“拥有”项目的一部分。要说服他们不这样做是很困难的。如果它无法解决,那么它要么变得虚弱,要么有人自愿离开,或者有人被释放。

答案 4 :(得分:1)

我认为从您的角度来看,主要优势在于有机会向经验丰富的人学习。

例外情况是,如果你的伴侣没有你的能力,尽管有更多年的“经验”。

答案 5 :(得分:1)

有几个因素会影响我的回答:

整个开发团队只是你们两个吗?如果是这样,那么最初这可能是一件好事,可以帮助你加快速度并防止其中一对编写大量代码而不让对方知道任何事情。我不确定我是否希望看到同一对这么多,以至于你应该被困在一起。

您是在开发新的开发还是修复错误?如果有新的发展,那么有几只眼睛看着代码就好了。另一方面,修复错误不一定最好通过一对来完成,除非它是一个非常复杂的错误。

您可以将此视为一种方法来练习您的耐心以及您对其他人的理解程度。与某人如此接近以至于你几乎可以完成他们的句子是非常有用的。

在我工作的地方,我们可以对新功能进行配对编程,这通常是件好事。团队中共有大约7名开发人员,因此可以进行一些配对和一些单人工作。甚至还有一些配对的昵称,这有助于给团队一些凝聚力和粘合力。通常情况下,这对配对故事,当故事完成时,除非有另一个想要做的故事,否则这对故事就会破裂。一般来说,我发现必须解释事情并让其他人看到我的火车或者我是否给出反馈是有用的,因为另一半有一个想法我可以测试并看看它有多好用。

答案 6 :(得分:0)

您可以很快解决问题。您可能会减少过程中的错误。究竟是什么问题?

你是否觉得你更有经验的合作伙伴在这个过程中占主导地位并且剥夺了你对结果的所有权的感觉?