估计总是错误的。你应该怎么做?

估计总是错误的。你应该怎么做?

估计是错误的。估计并不能预测未来。相反,估计提供了预测工作需要多长时间的最佳猜测。

Photo by Anna Shvets: https://www.pexels.com/photo/colleagues-discussing-details-of-project-on-meeting-5324975/

我已经看到估计,需要一个小时来预测四分之一的工作价值,变成了承诺。一种期望被种下,每个人都对估计的错误感到失望。

当我们开始工作时,我们经常会了解到更多需要完成的项目。然而,我不记得我们从哪里了解到整个工作都消失了。也许它发生在某个地方,但我没有经历过。

在 2000 年代初在一家银行工作时,我记得我们会有一个“捏造因素”,或者一个应用于估算的乘数。因此,从开发人员开始的三周将在甘特图上变成五周。而且我们还是会迟到!帕金森定律?

有更好的模型吗?

适应性项目管理模型有效。随着现实的发展,我们了解事情确实需要多长时间,我们利用这种学习并调整计划。相反,我们更改日期。

毕竟,每个人都关心日期。范围和质量往往是次要的,除非它们不是。在 1 月 1 日,您说您将在 3 月 31 日发货/交付。然后,在 3 月 31 日,您确实发货并交付。没有一位高管最喜欢的客户所需的一项功能。

或者您在 3 月 31 日发货,软件每 20 个会话中就有 1 个崩溃。 95%,那是A,对吧?

听起来很可怕。那么如何进行估算呢?

1. 获取发布中所有功能的目录。

2. 将这些功能分解为故事。

3. 比较故事所需的努力(猜测),并为它们分配“点”值。例如,我喜欢斐波那契、1-8 或 1-13。如果它更大,则将其分解更多。

4. 开始工作。

5. 每周在一张大图表上显示:

6. 进入该周的“积分”数量。

7. 那周完成的“积分”数量。

8. 根据剩余的工作量使用它来预测日期。

让您的执行团队了解一个重大秘密。估计毫无价值。规划——确定工作并将其分解为故事——具有价值。

对新事物的估计是毫无价值的。

对你已经做了十几次的事情的估计可以得到相当不错的结果。一个为牙医做网站的团队在过去几年完成了 25 个这样的项目——他们可以很好地进行估算。

改变人,估计又回到猜测。更改该团队的工作,预测将恢复为猜测。

分配相对的、基于“点”的估计来工作。在当前情况下跟踪该团队的完成率。我们将趋势通知日期。

知道你要去哪里有助于估计。保持高质量和低错误和惊喜有助于保持预测稳定。选择少于所有功能可以使日期提前。

Kevlin Henney 提醒我们 ** 速度** 是速度和方向的组合。所以速度是一个向量。鲍勃叔叔说,“动作快就是动作好”。知道您要去哪里,并使用最佳实践构建最佳代码,以便您可以快速到达那里。

1. 干净的架构。端口和适配器,作为边缘插件具有严重的依赖关系。

2. 大部分逻辑都在内存内核中。

3. 这个核心是单元测试的。检查您对单位的定义。它应该映射到用例或故事的一部分。

4. 集成测试检查插件及其与后端的关系。

5. 验收测试定义故事何时完成。

6. 从 Aslak Hellsoy 借用并以慢速和快速两种方式运行验收测试。

7. 使用相同的测试,插入和模拟某些层和接口。

6.红绿重构。一直往下。

从施工中了解估算

我最近有一个承包商来我家,提供屋顶和壁板的估价。部分估计和部分讨论是,如果他发现了一些额外的工作,我们将调整预测。结果,我们将移动时间线,而我将支付更改费用。

尽管这个工作人员已经完成了数百个屋顶和壁板项目,但他最初的估计是基于房子的大小和我们所知道的。如果我们一路学习,预测就会改变。

我没有要求他工作到很晚或周六。他们没有每周工作 80 小时。事实上,他们每天早上 8 点到达,完成工作,打扫卫生,然后在下午 4 点 15 分离开。这种方法是有道理的。他们不想太累而让错误进入项目。他们也不希望这些错误对他们造成人身伤害。

我没有要求他吝啬一点闪光。我没有让他摊开带状疱疹。我知道这样做会导致屋顶漏水和更广泛的问题。然而,我们要求我们的工程团队偷工减料、更快地设计、减少重构并跳过测试,以便我们能够“更快”地进行。

为什么我们的期望与我们的工程团队不同?首先,我们不相信错误的代价。我们认为随着时间的推移,非最优设计不会让我们付出代价。然而,在接下来的 3 年中,在接下来的 50 个功能中,你有多少次背负着“技术债务”,直到团队最终举手投降并大喊 REWRITE!

屋顶工作人员 做过 一路学习。承包商在两天内多次打电话给我,告诉我他们学到了什么。我们浏览了不同的选项来解决这个问题。最后,他问我是否接受改变,包括成本差异。

这在建设项目中是正常的和预期的。那么,为什么我们对 IT 项目有不同的期望呢?

软件项目与其他项目一样。

软件项目就像任何其他项目一样。我们首先对所涉及的工作进行知情估计。估计会告知我们是否要继续进行该项目。然后我们开始工作。随着工作的完成,我们对工作有了更多的了解,对估算也有了更多的了解。一些工作发生了变化。我们将其引入,更新计划并更新预测。同样的过程适用于任何项目,无论是建设项目还是软件项目。

我的屋顶工程为期两天。我了解到的变化是大约一个小时的额外工作,团队在第二天吸收了这些工作。所以时间变化可以忽略不计,成本变化只有几个百分点。如果工作人员发现了一些非常大的东西,那可能会为项目增加一天的时间,另外还会增加 25% 的成本。

软件项目更为重要。 “主要版本”可能需要四分之一或更长时间才能完成。让我们假设最初的估计是三个月——四分之一。如果我们沿途学习并调整计划,可能需要四个月才能完成项目。这使我们超过了 30%!这可以接受吗?如果我们要学很多东西,我们 3 个月的项目可能需要 6 个月甚至 8 个月才能完成。超过了 100%-166%。这可以接受吗?

我认为这取决于环境和您的标准。在银行,我们通常每六周以相当规律的节奏发布无错误的软件。我们有一个项目要求推迟一周。四年一个项目!这些是那里的标准。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22684/18420712

posted @ 2022-09-07 12:18  哈哈哈来了啊啊啊  阅读(11)  评论(0编辑  收藏  举报