一个月我需要这个宝宝 - 给我九个女人!

Ed *_*ess 185 project-management

在什么情况下 - 如果有的话 - 确实为团队添加程序员实际上加快了已经很晚的项目的开发速度?

Zac*_*ame 87

确切的情况显然对您的项目非常具体(例如开发团队,管理风格,流程成熟度,主题难度等).为了更好地解决这个问题,我们可以在任何事情上谈论它,但是过于简单化,我将重申你的问题:

在什么情况下,如果有的话,可以将团队成员添加到迟到的软件开发项目中,导致实际发货日期减少,质量水平等于现有团队允许工作直到完成的水平?

我认为有许多事情是必要的,但还不够,因为这种情况发生(没有特别的顺序):

  • 拟添加到项目中的个人必须具备:
    • 至少对项目的问题领域有一个合理的理解
    • 精通项目的语言以及他们将用于执行任务的具体技术
    • 他们的熟练程度必须/不会/分别比最弱或最强的现有成员少得多或多得多.弱势成员会耗尽现有员工的第三级问题,而新人过于强大则会破坏团队,他们所做的一切和所做的事情都是错误的.
    • 有良好的沟通技巧
    • 积极主动(例如能够在没有刺激的情况下独立工作)
  • 现有团队成员必须具备:
    • 高超的交流技巧
    • 出色的时间管理技巧
  • 项目负责人/管理层必须具备:
    • 良好的优先级和资源分配能力
    • 现有团队成员的高度尊重
    • 高超的交流技巧
  • 该项目必须具备:
    • 一个好的,完整的,有文档记录的软件设计规范
    • 对已经实施的事物的良好记录
    • 采用模块化设计,可以分割出明显的责任
    • 针对所需缺陷级别的质量保证的足够自动化流程这些可能包括以下内容:单元测试,回归测试,自动构建部署等.
    • 一个错误/功能跟踪系统,目前由团队就位并正在使用(例如trac,SourceForge,FogBugz等).

其中一个应该加以讨论的第一件事情是船日期是否可以被滑倒,功能是否可切割,如果两者的组合将让你满足你的现有员工释放.很多时候,它的一些功能确实占用了团队的资源,而这些资源无法提供与投资相等的价值.因此,首先要对项目的优先级进行认真审查.

如果上段的结果不充分,请访问上面的列表.如果您及早发现了时间表,那么在合适的时间添加合适的团队成员可以节省发布时间.不幸的是,越接近预期的发货日期,添加人员就越多.在某一点上,您将跨越"不归路",其中没有任何变化(除了运送当前的开发分支)可以保存您的版本.

我可以继续,但我认为我达到了重点.在项目之外,就你的职业生涯,公司未来的成功等而言,你应该做的事情之一是找出你迟到的原因,如果有什么事情可以提前告知你,你需要什么样的措施为了防止将来发生这种情况.通常会发生一个迟到的项目,因为你要么:

  • 在你开始之前(比时间更多的东西)和/或
  • 1小时滑倒,1天.

希望有所帮助!

  • 好清单.但是,我担心很多项目都迟到了,因为他们没有你列出的所有东西...... (3认同)

ang*_*son 29

只有拥有资源驱动的项目才有用.

例如,考虑一下:

你需要画一张大海报,比如4乘6米.一张大的海报,你可以把两三个人放在它前面,让它们并行绘画.但是,在它前面放置20个人是行不通的.此外,你需要熟练的人,除非你想要一个糟糕的海报.

但是,如果你的项目是填充带有现成字母的信封(比如你可能已经赢了!)那么你添加的人越多,它就越快.挖出一堆工作会有一些开销,所以你无法获得收益,直到你有一个人的优势.信封,但你可以从不仅仅2或3人获得好处.

因此,如果您的项目可以轻松划分为小块,并且如果团队成员可以快速加速(例如......瞬间),那么添加更多人将使其更快,达到一定程度.

可悲的是,在我们的世界中没有多少项目是这样的,这就是为什么docgnome关于神话人月书的提示是一个非常好的建议.


Los*_*ama 17

可能符合以下条件:

  1. 新程序员已经了解该项目,不需要任何加速时间.
  2. 新程序员已经熟练掌握了开发环境.
  3. 将开发人员添加到团队中不需要管理时间.
  4. 团队成员之间几乎不需要沟通.

我第一次看到所有这些时都会让你知道.


ape*_*arr 11

根据神话人月,将人们添加到后期项目的主要原因使得后来是O(n ^ 2)通信开销.

我经历过一个主要的例外:如果项目中只有一个人,那几乎总是注定失败.添加第二个几乎每次都会加速.那是因为在这种情况下沟通不是开销 - 这是一个有用的机会来澄清你的想法并减少愚蠢的错误.

此外,正如您在发布问题时明显知道的那样,神话人月的建议仅适用于后期项目.如果你的项目还没有迟到,那么添加人员很可能不会在以后制作.当然,假设你做得恰到好处.


Jos*_*ons 10

如果现有的程序员完全不称职,那么添加有能力的程序员可能会有所帮助.

我可以想象你有一个非常模块化的系统,现有的程序员甚至没有在一个非常孤立的模块上启动.在这种情况下,将项目的这一部分分配给新的程序员可能会有所帮助.

基本上神话人月的参考是正确的,除了像我编造的那样的人为案例.布鲁克斯先生做了可靠的研究,证明在一定程度上,为项目增加新程序员的网络和通信成本将超过你从他们的生产力中获得的任何好处.


Lei*_*ell 5

  • 如果新人专注于测试
  • 如果您可以隔离不创建新依赖项的独立功能
  • 如果你可以正交化项目的某些方面(特别是非编码任务,如可视化设计/布局,数据库调优/索引或服务器设置/网络配置),以便一个人可以处理,而其他人继续使用应用程序代码
  • 如果人们彼此了解,技术,业务要求和设计,那么就足以让他们知道什么时候他们会踩到对方的脚趾以及如何避免这样做(这,当然,如果不是这样的话,很难安排)