“软件是在完成后立即完成的。”
的确如此,但是对于开发人员开始执行的每个任务,组织中的每个人都了解每个任务的完成定义吗?
似乎最大的问题之一是Estimation,但是开发人员只有在他们具有明确且明确指定的“完成的定义”时才能提供实际的估算。(其中包括公司流程问题-例如用户文档,正式发行版上的工作包等)
高估会引起问题也就不足为奇了,因为大多数开发人员都认为,估算完成任务所需的时间是最难的问题。
但是,大多数开发人员倾向于在给定的时间段内合理地(尽管很乐观)对他们可以投入的工作量进行处理。
问题通常是,开发人员在处理不完整的信息时难以在任务和所需的总工作量之间建立关系,尤其是如果他们面临着为一个真正的巨大任务预先提出所有答案的压力。
这自然会导致时间估算与现实脱节,并且他们会忽略诸如构建过程和用户文档之类的内容。
在描述任务时,断开连接往往从一开始就开始。并且通常由非技术人员来编写需求列表,而又不知道需要多少工作量。
有时,高级管理人员会指定任务,而完全忽略公司流程问题。对于高级管理人员来说,定义测试,创建正式的发布版本或更新用户文档之类的事情只是神奇而无需时间和精力就可以了。需要。
有时项目在开发人员甚至没有编写一行代码之前就失败了,因为某个地方的某人没有正确地完成他们的工作。
如果开发团队没有参与达成共识的要求或捕获接受标准,那么这就是管理的失败-因为这意味着对代码和技术问题了解不足的人已经使业务满足了不完整的要求,并使该项目容易产生误解,示波器蠕变,镀金等。
如果开发团队参与捕获和达成需求,那么团队可能会失败,他们负责澄清细节(以及接受标准),即“交付结果是什么样?何时完成?” )。开发团队还负责说NO的时候有方式与其它阻塞问题,或者要求仅仅是不现实的。
因此,如果开发人员参与了需求捕获:
- 团队是否有机会与产品经理坐下来,以澄清完成的要求/定义?
- 团队是否提出足够的问题来阐明隐含/假定的要求?这些问题多久能令人满意地回答一次?
- 在提供估算之前,团队是否要求接受标准(完成的定义)?
- 通常为每个任务捕获接受标准的程度如何?它是一个含糊不清,细节稀疏的文档,还是描述了有形的功能,以及措辞使开发人员可以明确地将其转换为测试?
很有可能您的团队的生产力不是问题。您的团队可能会竭尽全力进行开发。您的实际问题可能是以下一项或多项:
- 不完整和含糊的要求。
- 首先,需求/任务太大。
- 开发团队与高层管理人员之间的沟通不畅。
- 在将任务交给团队之前,缺乏明确定义的接受标准。
- 验收测试规范不完整或含糊/模棱两可。(即完成的定义)
- 分配/定义接受标准的时间不足。
- 开发人员没有考虑时间来测试现有的基准代码或修复现有的错误
- 开发人员确实测试了现有的基准代码,但在提供需求估算之前并未将其作为“ 阻塞问题”来提出。
- 管理层看到了问题/错误,并决定在编写新代码之前不需要修复错误。
- 开发人员面临着要占用其100%时间的压力,即使他们的20%(或类似数量)的时间可能被会议,分心,电子邮件等占用。
- 估计值是按照票面价值商定的,没有人调整错误或意外事件的余地(例如“我们决定这需要5天,因此我们希望它在8天内完成。”)。
- 每个人(开发人员和管理人员)都将估计值视为单个数字,而不是实际的“范围”数字-即
...列表的持续时间可能比这更长。
您需要进行一些“事实调查”,并准确找出为什么估算值始终与实际脱节。现有的基准软件是否不好?它缺少单元测试范围吗?您的开发人员是否避免与管理层沟通?管理层是否避免与开发人员进行交流?在“完成的定义”方面,管理层的期望与开发人员的期望之间是否存在脱节?