我需要在一个月内完成这个任务-给我九个女人!

184

在已经延误的项目中,什么情况下添加程序员实际上会加速开发进度?


我理解你想要表达的比喻,但是一个更具描述性和不那么震撼的标题可能是个好主意... - Adrian Petrescu
将“women”替换为“couples”。 - just mike
无论你添加多少男人(只要数量不为零),你仍然需要9个女人。 - Windows programmer
9
只要其中一个女人怀孕八个月,它就可以起作用。 - Toon Krijthe
16个回答

2

我认为将人员添加到团队中可能比将他们添加到项目本身中更能加快项目的进展。

我经常遇到有太多并发项目的问题。如果我能专注于单个项目,那么任何一个项目都可以更快地完成。通过增加团队成员,我可以从其他项目中转移出来。

当然,这假设你已经雇用了有能力、自我激励的开发人员,他们能够继承大型项目并独立学习。 :-)


2

如果额外的资源可以补充您现有的团队,那就是理想的。例如,如果您即将设置生产硬件并验证数据库实际上已经调整好,而不仅仅是返回良好结果(您的团队作为领域专家知道的),从在您项目旁边工作的优秀DBA那里借用时间可以加速团队进展,而不需要太多培训成本。


这实际上是一个非常好的答案。更普遍地说,如果一个项目依赖于对A、B、C和D的知识,并且团队中的程序员知道A和B,那么添加了解C和D的程序员可以加快完成速度。人们必须相处得很好,团队的规模仍然有限制。 - Windows programmer

2
  • 尚未启动的自包含模块
  • 缺少可集成的开发工具(例如自动构建管理器)

主要是考虑让它们不受当前正在开发的人的影响。我同意“神话般的人月”,但我也认为每个规则都有例外。


1

当新增开发人员的生产力超过培训和管理这些开发人员所失去的生产力时,增加开发人员是有意义的。


1
简单来说,这取决于比较剩余时间和从某人那里获得的生产力,不包括额外资源需要花费的时间来提高速度和生产力,并减去现有资源所投入的教学时间。关键因素(按重要性排序):
  1. 资源掌握能力的程度。最优秀的开发人员可以进入一个新的项目,并且几乎可以即刻修复错误,而不需要太多帮助。这种技能很少见,但可以学习。
  2. 任务可分性。他们需要能够在不妨碍现有开发人员并减缓他们的速度的情况下处理对象和函数。
  3. 项目复杂性以及文档可用性。如果是一个基本的、遵循最佳实践的ASP.Net应用程序和常见的商业场景,那么一个好的开发人员可以立即着手工作。这一因素比其他任何因素都更能决定现有资源需要投入多少时间来进行教学,也因此决定了新资源的最初负面影响。
  4. 剩余的时间量。这个估计经常出错了。通常情况下,我们会认为只剩下x周的时间,而让某个人适应需要x+1周的时间。实际上,项目将会拖延,并且实际上还需要2x周的开发时间,尽早引入更多的资源将会有所帮助。

1

如果一个团队已经习惯了结对编程,那么添加另一个已经擅长结对编程的开发人员可能不会减慢项目的进度,特别是如果开发是以TDD风格进行。

随着他们对代码库的理解越来越深入,新开发人员会逐渐变得更加高效,任何误解都会在他们的合作伙伴或每次提交之前运行的测试套件中尽早发现(最好每十分钟至少提交一次)。

然而,额外的沟通成本需要考虑在内。重要的是不要过多稀释项目现有的知识。


那么你的意思是这可能有帮助,也可能没有帮助? - Ed Guiness
多多少少。我的意思是,普遍认为在一个已经延迟的项目中增加人手会使其更加延迟,但在一些有限的情况下,如果管理得非常小心,你可以从额外的人手中获得一些有用的额外工作。 - Bill Michell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接