对编程有多受欢迎?

时间:2008-09-01 16:21:32

标签: agile methodology pair-programming

世界上有多受欢迎(我知道stackoverflow社区来自世界各地)是结对编程吗?你有没有工作过,你在工作还是会为一家完成编程的公司工作?

您对此事有何看法?

13 个答案:

答案 0 :(得分:13)

我曾经在我们严重配对编程的两个实例中工作过,我们偶尔会做的事情,以及那些被忽视的事件。

我会说,当我们全职工作时,我觉得效率最高。我认为,这是因为它鼓励与团队进行如此高度的合作。然而,我们定期交换配对也很重要 - 每天一次或两次。以下是前一个地方设置的一些照片:

http://www.cornetdesign.com/images/carfax

然而,实现结对编程意味着您已经克服了Five Dysfunctions of a Team列表中的几个项目 - 主要是信任和沟通。能够进入流程也很有帮助 - 我们使用Ping-Pong编程 - 一个人会写一个失败的测试,另一个会让它通过并编写下一个失败的测试,我们都参与重构,因为我们需要

对于习惯拥有自己的东西的人来说,这可能有点吓人,但它所允许的合作确实非常令人惊讶。

答案 1 :(得分:6)

我们偶尔会在团队中进行配对编程。它往往非常高效,并且最终得到了大量高质量的代码,无论是重新编写还是从旧代码重构。

我们还需要一些关键任务代码,我们需要对编程或代码审查,以避免在单独使用复杂代码库时容易出现的逻辑错误。

此外,在招聘新开发人员时,我们会在第一周左右与经验丰富的开发人员进行配对,以了解相关信息并了解一些真正的代码更改如何影响系统的不同部分。事实证明,这是一种让人们快速上手的好方法。

总的来说,我认为结对编程很棒,特别是在复杂代码,开发人员教育和特征探索等特定情况下应用时。也就是说,我们只在5-10%的时间内完成它,并且还有很多高效的单人时间。您的里程可能会有所不同。

答案 2 :(得分:5)

我在商业和大学都有编程。它可以非常有效地帮助您完成任务,并且通常可以提高代码质量而不是生产力,因为“没那么糟糕!”你有的论据。最大的问题可能是让上层管理人员相信这是一个好主意,因为他们倾向于将其视为利用率数量的一半。

答案 3 :(得分:5)

我做过一些Pair编程(大部分是专业编程),我是该方法的忠实粉丝。 结对编程非常适合新员工;通过这种方式,他们可以很快地了解公司的编码标准和习惯,他们非常了解他们的同事,而这个人的同事也将学习新的东西。正如Vagnerr所提到的,专业结对编程中最大的问题就是让管理层在你身边。

答案 4 :(得分:5)

天儿真好,

我在几个上下文中使用了对编程。所有这些都是商业BTW。

通过与有更多经验的人合作,我学到了很多东西。

所涉及的人的态度严重影响了对编程的有效性。如果你试图与一个激进的“我知道一切,你什么都不知道”的人配对,那就没办法了。

关于不同类型的配对编程的讨论,请看Laurie Williams和Robert Kessler的书“Pair Programming Illuminated”。

本书也是关于结对编程经济学的极好信息来源。

欢呼声,

罗布

答案 5 :(得分:3)

我的经验是结对编程确实有助于提高质量。

但是,这一点非常重要:至少有一位程序员必须敏锐地关注质量并理解敏捷价值观。否则,这两个人相互之间只会加强他们的消极行为(即快速黑客等),而不是学习良好做法,这是一个巨大的风险。

答案 6 :(得分:2)

我对配对编程有过负面的经验。您需要具有类似经验的程序员才能使其变得有价值。你把最好的和最差的,最坏的将允许更好地编写所有代码很少或没有输入。你把最好的和最好的放在一起,最好的仍然会产生高质量的代码,但最坏的情况会产生粪便但只减少50%(因为只有两个抛光粪便)。

答案 7 :(得分:2)

目前正在与使用大量结对编程的公司合作

我认为结对编程很棒,因为它通过以下方式改善了我作为开发人员的作用:

  • 更好地了解IDE,因此我可以更快更聪明地工作(对eclipse快速修复的热爱!)

  • 阻止我做蠢事

  • 可以快速掌握大量代码库

  • 开始新工作时,您将了解与您合作的每个人

  • 指导初级程序员有效地传递我的智慧[原文如此!]

  • 增加语言知识

  • 提高编程技巧

答案 8 :(得分:2)

随着时间的推移,关于对编程的研究仍在继续。最初,报告似乎支持在某些情况下它是项目的净生产力优势的概念,但更大规模和更近期的研究表明,特别是编码活动的平均总体生产力的净损失。 p>

如果你考虑一下,那就有道理了。结对编程活动在整个生命周期中必须是效率的两倍,以便在涉及的工时增加一倍时实现收支平衡。我的看法只是找到更好的工程师,并练习正常的指导形式,培养技能较低的工程师。在我看来,你每单位时间可以获得更多的收益。

Pair Programming的维基百科条目引用了我上面提到的一些研究。

答案 9 :(得分:2)

我不再是开发人员,但我记得非常好,当我开发代码时。

是的,与优秀合作伙伴进行配对编程是提高知识水平的方法。您可能会尝试阅读书籍或在网络上阅读文章,但实际上通过配对编程可以直接解决棘手的问题。

但这也带来了弊端。使用配对编程你无法隐藏。很明显你能做什么或不能做什么。一些开发者围绕他们的技能建立了一些神秘主义。他们可以很容易地谈论编写优秀代码在理论上的重要性,但实际操作它们很糟糕。对于那些人来说,配对编程可能很难。他们失去了声誉。

另一件事是......结对编程需要沟通。有些人喜欢戴上耳机,打开音乐并进行编码。这是他们最喜欢的编码方式。他们越少说得越好。所以这也可能是他们中的一些人忽略配对编程的原因。

答案 10 :(得分:1)

我在30多年前为电信公司编写ISDN协议时做了那件事(当时没有被称为“结对编程”,但我们的项目经理称我们为“unix双胞胎”。因为我们被聘为顾问最初,IT管理人员对你的想法持怀疑态度。然后,他们喜欢这个想法,实际上即使在我们离开后仍然保持运行一段时间(正如接管我们代码的人所说的那样)。

我今天仍然使用它(不再是C内核代码)

PS:我记得有一个时刻,我生病了,不得不待在床上一个星期左右。再次出现时,我的伙伴在10分钟的简报中同步了我,告诉我他做了什么以及为什么,然后我们像往常一样继续。当我离开的时候没有真正的中断,因为我们两个人都能够支持另一个(但是在那一周,bug统计数据有所增加)

答案 11 :(得分:0)

This answer列出结对编程作为一种教导初级程序员如何编写测试并成为更好的程序员的方法。

我认为结对编程是开发人员成为更好的程序员的好方法。

答案 12 :(得分:0)

结对编程有助于理解新加入的员工的域/项目/架构。它有助于缩短总开发时间(例如:前端和支持的开发人员在敏捷中一起工作),因此可以提高生产力。在与其他开发人员/架构进行代码审查的同时,还有助于在实现新设计模式和遵循标准编码格式方面学习新内容。对我来说,编程总是有效。

1)QA不会打开更多缺陷(无缺陷代码) 2)可以非常快速地加速大规模代码库 3)提高编程技巧 4)在进行结对编程时增加领域知识。