我目前正在估算一个新项目。假设有一个开发人员在做这件事,我的高水平估计是 25 周。
实际上将有两个开发人员并行工作。什么因素可以合理地减少估计?(我意识到它不会是 0.5)
我目前正在估算一个新项目。假设有一个开发人员在做这件事,我的高水平估计是 25 周。
实际上将有两个开发人员并行工作。什么因素可以合理地减少估计?(我意识到它不会是 0.5)
根据原始开发人员和新开发人员的不同,您可以将 25 周减少多达 75%(不,我不是在开玩笑)或增加50%(再次,不是开玩笑)。事实是,各个开发人员之间存在巨大差异。具有假定相似技能水平的开发人员已经显示出一个数量级的差异。
这一切都取决于两位开发人员的经验水平、技能组合和领域知识,以及他们一起工作的程度。有些团队(好的团队)比部分的总和更好。有些更糟。
一般来说,在所有其他条件相同的情况下,你会在沟通问题上浪费时间,我可能会认为大约 20% 是从一个到一个以上。
我不会盲目地增加或减少一个百分比 - 而是我会在开发人员之间划分估计的任务,并要求新开发人员估计他将承担每项任务的时间。我不会质疑他的任何估计,除非它们显然不符合要求。
这取决于新开发人员需要多长时间来学习代码库等。
请注意,它甚至可能根本不会缩短。
有了所有正常的警告(不可能真正估计这一点,通常添加开发人员会增加时间等)。假设额外的开发人员具有与我相似的能力水平,具有与我相当的平台/技术的技能和经验,我通常估计添加额外的开发人员会减少 20%;增加三分之一额外减少 5%。之后没有减少。
这取决于您添加的开发人员。最后,只有实际的开发人员才能对他们需要编写代码的时间给出一个有点现实的估计。您需要自己编写代码的时间与其他人需要多长时间没有太大关系。
我建议你完全忽略最初的估计,决定如何在你们两个之间分配项目。然后对两者都需要多长时间来完成自己的部分进行新的估计。然后为双方的发展添加时间。
这样,您就可以根据实际要构建代码的开发人员的输入进行估算,而不仅仅是其中一个。
根据我的经验,将估算与工作人员分开处理是一个坏主意。我会先决定谁在做这项工作,然后和他们坐在一起,询问他们完成任务需要多长时间。他们应该提出一些问题,这些问题可能会帮助您了解原本会被忽视的关键问题。
在进行项目管理时,沟通是最重要的事情。独立于做工作的人来对待工作是由太多的因素造成的,你最终会得到一个错误的估计。
我将估计分为 2:
假设每个开发人员需要 2 周的启动时间,那么您最初的估计将是 2 周的启动时间和 23 周的工作时间。
然后,添加一个开发人员会花费您额外 2 周的时间来完成该项目。
另外你需要考虑开发者之间的协调成本。估计这一点的一种方法是说每个开发人员每天需要与其他开发人员交谈 5 分钟。在您的情况下,这将增加每天额外 10 分钟的工作量。
它还取决于划分项目的可能性。例如,您的项目是否适合将其分为几层,一层是数据库,一层是 UI。
然而,最重要的因素是新开发人员的质量。根据这一点,您可以从对生产力的负面影响中获得任何好处,也就是说,它需要更长的压延时间,甚至不到一半的时间。
我不会简单地应用一个基于员工人数增加的因素。我想您最初对 25 周的估计是基于项目中涉及的所有任务的一些细分。在考虑项目中的第二个开发人员时,您应该查看该任务列表,看看这个人可以在哪里提供帮助。一旦你确定了他/她将要处理的那些任务,你就可以保持对其余部分的原始估计的准确性。然后,您应该根据专业知识、加速时间等估计此人完成您委派的任务所需的时间。
这个问题没有答案。这取决于开发人员的技能水平、项目知识、资源等。
以我的经验,我认为第一部分时间实际上会使项目倒退,因为赶上他需要时间。
如果为了这个问题我必须想出一个数字,我会说前几周是-50%,然后是+25% :)
这取决于提供的因素太多了。你能把它和另一个项目比较吗?项目难度如何?两个开发人员将共享多少工具?其他开发人员的技能如何?开发人员之间的沟通效率如何?真的没有任何先前的基准,很难给出一个好的数字。
它不仅取决于开发人员 - 如上所述 - 它还取决于工作。项目是否可以足够细分,是否有任何外部因素会影响开发人员的进展(你不能在 3 个月而不是 9 个月的模式中再添加 2 个女性来生孩子)。我会确定工作是否可以有效地划分(分离的区域),了解其他程序员的水平(新人?或您已经想到的人)并根据需要的任何假设(例如 3rd 方接口,预期变化等)
它可能不会,至少如果交货时间不到 3 个月就不会。
就我个人而言,我认为在第一个月他们的工作效率基本上是消极的——他们几乎不会利用自己,并远离团队其他成员提出问题、破坏事物等等。
下个月他们将接近盈亏平衡,也许会好一点,但基本上做和采取同等措施。
最后一个月,他们可能会弥补他们在第一个月造成的损失。
在那之后,他们将在项目 3 个月后与其他任何人一样富有成效(这是有能力的,但不如从事该项目更长时间的人有用)。
(注意:这是假设被添加的开发人员的数量不会超过那些能够有效地让他们加快速度的人。比如说,你在项目中添加了两个开发人员,并且只有一个可以通过你的事情与他们交谈可能会使对现有人员的影响加倍,并将新人员的前进速度减半)。
决定确切影响的因素将是:
1) 技术技能
2) 业务领域
知识 3) 与特定项目相关的知识
4) 整个团队的规模,特别是您增加了多少额外人员的百分比
您希望前三个较高,而最后一个则使团队按比例变化不会太大。在 10 人的团队中增加一个人,其影响是可控的。把一个 5 人的团队变成一个 10 人的团队,你可能会被搞砸 3 到 6 个月。
为什么会这样?更多的人增加了沟通渠道的数量,降低了平均知识水平,增加了某些事情被质疑的机会(因此重新开始辩论,可能有用,可能没有),增加对正常运作的团队的破坏等等。
我认为您的估计最初可能会有所增加。新开发人员必须熟悉项目,现有开发人员可能需要花一些时间来教他一些有关项目的知识,等等......