在敏捷开发中的“配对编程”要求我们将单个程序员的工资翻倍。当然,这种方法可以大大提高代码质量、更早地发现错误等等,但这样花费的钱是否仍然值得呢?也许我们应该将第二位开发人员的薪水支付给几名测试人员(后者通常比合格的程序员便宜得多)?有没有人有这样的比较经验呢?
在敏捷开发中的“配对编程”要求我们将单个程序员的工资翻倍。当然,这种方法可以大大提高代码质量、更早地发现错误等等,但这样花费的钱是否仍然值得呢?也许我们应该将第二位开发人员的薪水支付给几名测试人员(后者通常比合格的程序员便宜得多)?有没有人有这样的比较经验呢?
你如何知道单打独斗的程序员更加有效率?我有时认为单打独斗和成对编程就像童话故事中的兔子和乌龟一样。
成对编程不会陷入数日的低效工作。我不知道有多少次看到开发人员花费数周时间来处理后来被更简单的东西所替换的任务。一个“进入状态”的单打独斗的程序员常常会做些愚蠢的事情。当你想要的是用更少的代码产生更多的效果时,只是太容易写出过多的代码。
长远来看,当尘埃落定时,你会发现有成百上千行代码本可以不写,因为有人不了解库X或技术Y。成对编程改善了这个问题,但并没有完全解决它。它鼓励个体和配对在陷入无意义的代码狂热之前进行更多的研究。
我希望我能够更多地与人配对......
尽管我赞同目前为止大部分关于双人编程是好事的回答,但我会担任魔鬼的代言人并认为它并不总是有意义的。
当你配对时,并不会得到一个大脑加倍的程序员。你会得到一个由你们两个大脑的联合体组成的程序员。因此,基本上每当我犯错并且我的搭档找到更好的方法来解决问题,这是一种优点。然而,每当我自己写出正确的代码时,这是一种浪费金钱的行为,因为我的搭档不需要。
基本上,你需要评估你正在处理的代码。简单的任务通常不值得支付某人坐在你旁边以确保你正确编写for循环的报酬。然而,在某个阈值处,任务足够复杂,使得双人编程的投资回报率变得合理。
通过双人编程,你将获得:
你不会比这获得更多的投资回报。
然而,你也不应该将其用于所有任务。
如果完成一个任务只需要半个开发人员单独完成所需的时间,那么就不意味着成本会翻倍。我认为,在处理困难或低级别任务时,这是有帮助的。我发现这很值得,因为你有人可以在它真正花费你时间和金钱之前说“不要做那个!”
我曾经编写过操作系统等类似工作,有人坐在我旁边进行逻辑检查是非常宝贵的。
在我们的工作中,我们一直使用配对编程。关键是要知道哪些任务应该成为一对完成,哪些如果由两个开发人员完成将是“浪费时间”的。 经验法则是,更注重研究的任务(即 POC 和 spike)以及新功能的开发应该成为一对完成(这样知识就存在于多个头脑中)。 更加平凡的任务,例如 CI 服务器安装或插件图标的替换,则由单个开发人员完成。 另一个因素是团队成员的当前可用性和本次迭代中要完成的当前任务。
不需要,每个程序员仍然只会得到一个薪水。
如果你不称之为“配对编程”,你认为你的程序员就不会相互交流吗?你认为编程是完全可并行化的吗?
找到适合您和您公司的正确组合将更多地是一种艺术而不是科学,肯定不是您可以通过盲目遵循某些已发布方法论的要求来完成的。
即便如此,在提交之前消灭更多的错误,长期来看将会节省更多的时间。在您构建架构时,让另一个开发人员观察总是比之后由测试人员黑盒测试要更加有效。我认为这是花钱值得的。