管理

为什么你的软件项目迟到了(以及该怎么办)

| 10 分钟阅读
团队在白板上讨论计划

66% 的软件项目超出了时间表或预算。 六种模式导致大多数延迟:范围蔓延、沟通层次、错误的团队组成、未定义的“完成”标准、低估的集成和大爆炸式发布。 所有六种情况都可以通过书面 PRD、直接工程师访问以及每周的登台演示来预防。

Standish Group 的 2024 年混沌报告发现66% 的软件项目超出了时间表或预算。 五分之一的人被彻底取消。 十多年来,这些数字一直保持稳定。

原因并不神秘。 它们在各个行业、公司规模和技术堆栈中重复出现。 在 Savi 交付了数十个客户项目后,我们看到的延误绝大多数是由六种模式造成的。 所有这些都是可以预防的。 以下是如何发现每一种情况以及该怎么做。

1. 范围蔓延导致的项目比糟糕的代码更多

范围蔓延是软件项目延迟的最常见原因。 从小事开始。 一位利益相关者在站立会议中说:“在我们这样做的同时,我们是否还可以添加……”。 总理点头。 工程师添加了一个任务。 将此乘以八周内每周 3 个请求,您原来的 6 周项目现在变成了 14 周且看不到结束的项目。

以下是使范围蔓延变得如此具有破坏性的数学原理:第 1 周的需求变更大约需要 1 小时的工程时间。 第 8 周的相同更改成本增加 10 倍。 到第 8 周,代码库已经有了基于原始设计的依赖项。 改变方向意味着重构工作代码、更新测试、重新验证集成以及重新测试您已经签署的功能。

IBM 系统科学研究所发布的数据显示,维护阶段发现的缺陷的修复成本比设计阶段发现的缺陷高出 100 倍。 需求变化遵循相同的成本曲线。

该怎么做:在编写任何代码之前先编写产品需求文档 (PRD)。 列出每个功能、每个用户流和每个 API 端点。 得到每个利益相关者的签字。 然后将PRD视为合同。 新想法进入“v2 积压工作”,而不是当前的冲刺。 在 Savi,我们在开发开始之前花费 1-2 周的时间来定义需求。 1,500 美元的规划投资可节省 10,000 美元以上的项目中期返工费用。

2. 沟通层数增加了几周,但不清晰

想象一下典型的代理机构设置:您向客户经理解释您的功能请求。 客户经理写一张票并将其分配给项目经理。 项目经理将其翻译成技术规范并发送给技术主管。 技术主管将其分配给开发人员。 开发者出了问题,所以整个链条就反转了。

该链中的每次切换都会带来两个问题。 第一,信息丢失。 你最初的要求有细微差别; 当它到达开发商时,它已经被解释了三遍。 第二,延迟。 每次切换都会增加 4-24 小时的等待时间。 一个可以在 5 分钟通话中解决的问题,在沟通链中往返需要 3 天的时间。

项目管理协会的一项研究发现56% 的项目预算面临风险是由于沟通不畅。 在一个价值 50,000 美元的项目中,有 28,000 美元面临沟通不畅的浪费。

该怎么做:直接与编写代码的人交谈。 在 Savi,每个客户都拥有与其指定的高级工程师直接的 Slack 渠道。 没有客户经理转发消息。 没有项目经理口译要求。 你描述你需要什么; 工程师实时提出澄清问题; 该功能第一次就正确构建。 这一单一更改消除了 30-40% 的来回延迟时间。

3. 错误的团队构成会因交接而消耗预算

许多机构的项目配备了 4-6 名开发人员:两名前端、两名后端、一名 QA 工程师和一名 DevOps 人员。 这听起来很有成效。 实际上,它产生了占总预算 30-40% 的协调税。

前端团队构建一个表单组件并需要一个 API 端点。 他们为后端团队提交了一张票证。 后端团队正在进行一项不同功能的冲刺。 三天过去了。 前端开发人员转向另一项任务。 当端点准备好时,前端开发人员必须上下文切换回来。 端点返回的数据形状与预期不同。 又一个往返的旅程开始了。

配备过多的初级开发人员会以不同的方式产生同样的问题。 初级人员编写的代码可以在本地计算机上运行,​​但在暂存过程中失败。 高级工程师花费 3 小时调试初级工程师的部署问题,而不是构建功能。 该团队的有效速度下降至其理论容量的 40-50%。

该怎么做:项目人员配备 1-2 名拥有整个代码库的高级全栈工程师。 一名工程师负责构建 API、编写前端、配置数据库和部署应用程序,交接开销为零。 在 Savi,这是我们的默认设置。 一名高级工程师在 5 周内交付了 20,000 美元的项目,其表现优于由四名初级工程师在 12 周内交付相同项目的团队,但错误更多,总成本更高。

4. 没有定义功能的“完成”标准

“构建用户仪表板”不是功能规范。 这是一个对话的开始。 如果没有明确的验收标准,工程师就会做出假设。 有时这些假设符合客户的需求。 通常情况下,他们不会。

结果:工程师构建了一个包含三个图表和一个数据表的仪表板。 客户需要五个图表、一个日期范围过滤器、一个 CSV 导出按钮和一个比较视图。 工程师将其重建。 客户对重建提供反馈。 本来应该需要 3 天的功能却花了 10 天。

这种模式非常常见,以至于在项目管理中有一个名字:“90%完成”陷阱。 一项功能在数周内都处于“即将完成”状态,因为没有人定义“完成”是什么样子。 工程师们不断打磨。 客户不断要求更改。 该项目耗费时间。

该怎么做:在开发开始之前为每个功能编写验收标准。 使用以下格式:“此功能在[特定的、可测试的条件]时完成。” 例如:“当仪表板显示所选日期范围内的收入、订单和转化率时,仪表板就完成了,并带有可下载所有可见数据的 CSV 导出按钮。” 工程师确切地知道要构建什么。 客户确切地知道会发生什么。 没有人争论它是否“完成”。

5. 低估集成复杂性

“我们需要与 Stripe 集成”听起来像是一项一日任务。 实际上,生产级 Stripe 集成包括:支付意图创建、异步事件的 Webhook 处理(支付成功、支付失败、订阅取消、争议打开)、防止重复收费的幂等键、失败 Webhooks 的重试逻辑、用于管理订阅的客户门户以及 UI 中针对每种故障模式的正确错误状态。

这种“一日任务”对于高级工程师来说需要 3-5 天,对于初级工程师来说需要 7-10 天。 将这个低估值乘以 3-4 个集成(支付网关、电子邮件提供商、分析、KYC),您就会为一个没有人预算的项目增加 2-4 周的时间。

第三方 API 的质量差异很大。 Stripe 拥有出色的文档和沙箱环境。 许多行业特定的 API(银行、物流、政府)都有不完整的文档、不可靠的沙箱以及在 48-72 小时内响应的支持团队。 每个记录不完善的 API 都会使估计的集成时间增加 2-3 倍。

该怎么做:在需求阶段审核每个集成。 对于每个第三方服务,回答三个问题:它是否有沙盒环境? 文档的完整性如何? 支持响应时间是多少? 然后将积分时间估计为合理的 3 倍。 在承诺完整的项目时间表之前,为风险最高的集成构建概念验证。 在 Savi,我们在第一周就对高风险集成进行原型设计,并根据我们的发现(而不是 API 营销页面的承诺)调整时间表。

6. 大爆炸式的发射会造成大爆炸式的失败

“构建一切,启动一次”方法是软件开发中风险最高的交付策略。 团队需要花费 3-6 个月的时间进行隔离建设。 开发团队之外没有人看到该产品。 发布当天,数十项功能同时投入生产。 虫子复合。 用户遇到流量中断的情况。 在接下来的两周里,团队将处于救火模式,而不是进行迭代。

大爆炸发射也隐藏了进度延误。 当整个项目是一个整体可交付成果时,就不可能准确衡量进度。 团队可以连续 6 周报告“完成 80%”,因为最后 20% 包含最难的问题:集成测试、边缘案例、部署配置和数据迁移。

该怎么做:增量发货。 将项目分解为 1-2 周的里程碑,每个里程碑都会产生一个可用的、可部署的功能。 在 Savi,我们每周进行一次演示,客户可以看到工作软件,点击实际流程,并提供有关实时登台环境的反馈。 如果出现问题,我们会在第 2 周而不是第 12 周发现。

增量交付还为您提供了逃生出口。 如果预算或优先级在第 4 周发生变化,您将拥有一个工作产品,其中的功能已部署并可供使用 4 周。 通过大爆炸交付,在整个项目交付之前您没有任何可用的东西。

开始下一个项目之前的清单

这六个问题并非不可避免。 它们是流程失败,流程失败有流程解决方案。 在下一个项目开始之前,请验证以下六个条件:

  • 需求已写好并签字。每个功能都有验收标准。 利益相关者以书面形式就范围达成一致,而不是通过无人记录的电话会议。
  • 您可以与构建您的产品的工程师交谈。没有中介翻译您的要求。 通过 Slack、电子邮件或视频通话直接访问。
  • 团队虽小,但资深。1-2 名拥有整个代码库的全栈工程师。 不是一个在前端、后端、QA 和 DevOps 之间进行交接的 6 人团队。
  • 每个功能都有一个“完成”定义。可测试的特定条件。 不是“构建仪表板”,而是“通过 CSV 导出显示收入、订单和转化率”。
  • 集成很早就原型化了。最危险的第三方连接会在第一周而不是第八周进行测试。
  • 您每周都会看到工作软件。每周在临时环境中进行演示。 真实的点击、真实的数据、真实的反馈循环。

勾选所有六个选项的项目将按时交付。 即使跳过其中一个的项目也会延迟。 相关性是一致的。

常见问题

软件项目失败的主要原因是什么?

范围蔓延是最大的原因。 第 1 周的需求变更需要大约 1 小时的工程时间; 第 8 周的相同更改成本增加 10 倍。 IBM 系统科学研究所发现,维护阶段的缺陷修复成本比设计期间高出 100 倍。 编写 PRD 并将其视为合同。

通信层如何延迟软件项目?

客户经理、PM 和开发人员之间的每次交接都会增加 4-24 小时的延迟。 PMI 发现,56% 的项目预算面临风险是由于沟通不畅造成的。 在一个耗资 50,000 美元的项目中,浪费了 28,000 美元。 直接联系编写代码的工程师可以消除 30-40% 的来回工作。

定制软件项目的理想团队规模是多少?

1-2 名拥有整个代码库的高级全栈工程师。 由 4-6 名开发人员组成的团队通过交接和上下文切换创建了一种协调税,该税占用了总预算的 30-40%。 一名高级工程师在 5 周内交付了一个价值 20,000 美元的项目,其表现优于四名初级工程师在 12 周内完成的 bug 较多的项目。

如何防止软件项目范围蔓延?

编写产品需求文档 (PRD),列出每个功能、用户流程和 API 端点。 在编码开始之前获得利益相关者的认可。 新想法进入“v2 积压工作”,而不是当前的冲刺。 在 1-2 周的需求定义上花费 1,500 美元,可以在项目中期返工中节省 10,000 美元以上。

为什么我应该逐步交付软件而不是一次性交付所有软件?

Big Bang 推出隐藏进度延误。 团队连续 6 周报告“完成 80%”,因为最后 20% 的问题是最难的。 每周演示的 1-2 周里程碑交付会在第 2 周而不是第 12 周发现问题。如果优先级在第 4 周发生变化,您仍然拥有一个具有四个星期部署功能的工作产品。

相关阅读

厌倦了迟来的软件项目吗?

我们按照固定的时间表发布每周演示。 与工程师交谈,而不是与项目经理交谈。

与我们的团队交谈

联系我们

开始对话

告诉我们你的项目。我们将在 24 小时内回复,提供清晰的方案、预估时间线和价格区间。

电子邮件

hello@savibm.com

总部位于

阿联酋和印度