写点什么

软件项目开发中的三个“不应做”事项

  • 2018-07-27
  • 本文字数:3541 字

    阅读完需:约 12 分钟

本文要点

  • 项目未按时间表完成,或是项目超出了预算,这是导致很多项目失败的原因。前期对项目做出预测,有助于避免从一开始就做出不切实际的承诺。
  • 在做出详细规划前,自上而下、基于范围的估算要比自下而上的规模估计和“猜测”更为有效。
  • 当项目处于初始规划阶段和推进阶段时,自上而下的估算工具有助于确立切合实际的项目边界。这对于设定期望和让利益相关者满意是十分关键的。
  • 通过过度增加人员实现压缩时间表,在很多情况下实现代价高昂,并且常常是无效的。项目经理可以使用自上而下的估算,对投资组合中的适当人员配置和资源需求做可视化。
  • 当项目由于利益相关者的需求或一些不可预见的情况而发生变化时(当然,项目不可避免地会发生变化),项目经理应重新做出预测,进而用于更新计划。

人们通常对“未雨绸缪”一词了然于胸,那么为什么企业却难以遵循这一原则呢?或许是因为人们已习惯于“快速行动起来完成工作”的做事方式。

问题在于,过快的项目推进实际上会导致成事不足,给软件项目带来很大的问题。面对来自于高层的压力,项目经理很可能转而采取仓促行事,跳过项目估算和前期规划。但是从我自身 30 多年的软件项目管理经验看,一个仓促进入开发阶段的项目很有可能注定会失败。

早在上世纪 80 年代,柯达曾致力于实现一种由软件驱动的文档成像解决方案,以此实现胶卷业务的多样化。企业在花费了一年半的时间、投入了数百万美元和大量的人力资源建立系统之后,他们找到我来做项目估算。估算结果显示,完成项目还需要两年的时间,并且还要投入更多的资金。如果预先做了项目估算,那么企业就有机会更好地评估项目的上市时间和投资回报率。反之,整个项目偃旗息鼓,浪费了宝贵的时间和资源。

一位同事曾与我分享过一个类似的悲惨故事。据他讲诉,几年前正值圣诞假期,一位顾客要求他在假期前提供一组合计 22 个估算。他们并不认可他给出的数据驱动估算,因此决定采取自己的方式。正是由于不合理的期望和时间表,他们的项目最终失败了。他们最终还是回头找到我的同事,按他的方式去正确做事。真应该祝圣诞快乐!

当前,一些企业也在犯着同样的错误。最近,一家企业开展了一项大型高强度软件开发项目。尽管他们扩充到 100 多名开发人员,但是由于内部压力以及一些不切实际的短期疯狂计划,他们决定放弃系统集成测试。由于缺少对质量影响和赶进度开发机制的评估,他们最终遗漏了很多系统缺陷。现在,企业正在重新做评估,一切从头做起。

当然,我们没有理由让历史继续重演。如果项目经理能关注那些“不应做”的事情,是可以避免一些会导致成本和时间超支的缺陷的,并给出创造真正价值的解决方案。

事项一:不应跳过估算匆忙进入详细规划,应采用自上而下的估算方法。

任何形式的计划,都好过完全没有计划。自上而下的估算,为详细计划过程提供了有价值的输入。

根据我的个人经验,设置不切实际的期望是项目失败的主要原因。制定准确的目标是企业的核心竞争力,但不少企业尚做得不尽如人意。

部分原因在于,企业在估算项目规模时,倾向于使用传统的范围界定过程,这往往会给出不准确的预测。项目经理在编制项目范围时,传统做法是采用一种自下而上的方式。管理者要求每个团队成员估算自己在特定活动中的工作时长,并根据这些“假设”确定每个成员的日程安排。不幸的是,这种自下而上的过程中缺少了一个关键的因素,那就是“事实”。一项基于 QSM 项目完成情况数据库的研究显示,有三分之二的公司未能比较计划的绩效与历史上类似项目的实际绩效。比较工作可让团队更好地了解完成工作所需的时间、精力和资金情况。他们竭力做出的估算,也许会导致错过最后期限、成本超支、客户不满意,以及开发人员被剥夺权利。

如果项目在开始时采用了自上而下的方式,那么一种非常有效的策略是基于范围的估算。借助于类似项目提供的数据,管理者可以准确地给出完成工作和交付完成工作产品所需的工作量。他们从一开始就全面了解项目的各项功能,并相应地分配资源。

当项目处于初始规划阶段和推进阶段时,自上而下的估算工具有助于确立切合实际的项目边界。如下图所示,一位项目经理具有一个由 10 位开发人员组成的团队,团队正在进行一个为期五个月的发布周期。在整个工作过程中,模拟软件显示了细化的 Backlog,其中给出了需要完成的约 100 个 Story 点。

进一步分析表明,尽管项目经理对团队生产力和劳动力成本的初步估计是有效的,但他可能无法将新的功能添加到建议的时间表中。由于计划是固定的,为了满足利益相关者的期望,项目经理需要聚集于如何调整产品功能和能力。团队可以使用模拟软件衡量实现所有100 个Story 点的概率。也许实现80 个Story 更现实,也许可以实现70 个Story。无论实现的Story 数量多少,至少这是利益相关者可以预期的。

其中并不存在任何主观猜测,一切估算都是基于经过验证的数据点。因此,自顶向下的估算方法可比传统的估算方法给出更准确的估算。团队可以设定准确的期望,在难以管理的时间期限内达到客户满意,降低开发团队交付解决方案的压力。

事项二:不应因为最后期限迫近,而做出增加员工的决策。

“厨子过多,反而做不出好的肉汤”,这是另一件人们常说的事情。然而,在面对日渐积压的最后期限时,许多项目经理的第一反应是为项目配备更多的人员。他们秉持的理念是,做事的人越多,事情完成得越快。

当然,这种做法几乎不会很好地发挥作用。为项目添加更多的资源,通常提高了项目的复杂性,并增大了出错的机会。更多的人员会导致沟通的不畅,这可能会增加缺陷,并导致返工。实际上,更多的人员通常会导致项目耗费更多的时间,而非节省时间。

项目经理可以使用自上而下的估算,对投资组合中的适当人员配置和资源需求做可视化展示。估算可在一段特定的时间内按计划和月份进行细分。他们甚至可以将员工按支出率划分,并与预算限额做比较,确保员工适合于特定项目,或是匹配组织当前的和未来的容量需求。下图可视化展示了估算随时间变化的情况。

事项三:不应为计划所奴役。

事先做好计划,并不意味着团队在整个开发过程中都无法改变方向。即便给出了最好的计划,但是大多数项目在其生命周期中,不可避免地会遇上一些未知因素,或是需要重新确定优先事项。或许管理层会要求添加一些新功能,或许一些团队成员将被转到其它更为关键的任务上。

不确定性虽然随时可能出现,但是它可以纳入到自上而下的计划过程中,从而降低其潜在的影响。本文前面给出的项目例子就是一个很好的证明。不确定性在于团队可能无法达成100 个Story 点。在计划中预先纳入这些不确定性,有助于规避项目早期的突发变化。

在整个开发过程中仍然可能存在一些波动,其中的大部分是由于利益相关者的需求的不断变化所导致的。例如,客户可能需要一些新的功能,以满足不断变化的市场动态。这些需求将不可避免地对开发产生直接的影响。团队需要在尽可能维持最初共识的情况下,做好调整的准备。

不幸的是,当前进的道路上蹦出这些意外障碍物时,许多组织不知道如何做出调整。估算是易于上下微调的(因此称之为“估算”),并且可以通过重新预测去适应不断变化的需求和动态。优先事项也是可以完全改变或移除的,以适应新的工作需求。项目范围也可以做改进,为利益相关者提供切实可用的更新后时间表,使项目保持正常进度。调整是一个动态的过程,可与组织推动敏捷开发的过程紧密结合。

做任何事情都一样,沟通在整个调整过程中至关重要。显示在屏幕上的数字在利益相关者的眼里无疑是福音,即使这些数字在开发过程中会发生波动。项目经理必须能够在项目一开始就有效地让利益相关者明白,他们的开发估算可能会根据许多因素而发生变化(具有讽刺意味的是,大部分因素都是由利益相关者的需求驱动的)。

此外,项目经理还必须表明,估算是在给定时间点(即项目开始时)对项目范围的一个最佳表示。团队将会努力按时、按预算,最重要的是按预期设计,交付所需的功能。

最后一点,也是最重要的,是我们应从以往的错误中吸取教训。这并非仅是将当前的项目与过去的一些努力做比较,而是应从柯达以及其它一些采取了错误步骤的组织中学习。一开始就做好计划,而不是遵循传统规范。这样,项目经理和开发团队才更有可能在不破坏时间表或超出预算的情况下,以客户期望的质量交付满足客户价值的软件。

作者简介

Lawrence H. Putnam, Jr. QSM 的联合首席执行官。QSM 是一家软件过程改进和系统开发评估领域的引领企业。Larry 的主要职责范围是监督 QSM 产品业务的战略方向,包括实现收入目标、战略产品方向、客户关怀和研究。Larry 在软件测量、估算和项目控制方面具有 25 年以上的经验。他于 1987 年加入 QSM,历经企业业务的各个方面,包括业务开发、客户支持、专业服务,已经当前的执行管理。

查看英文原文: Three Things to NOT Do with Your Software Development Projects

2018-07-27 17:572349
用户头像

发布了 391 篇内容, 共 155.9 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

粒子枪仿真和Track Solver追踪求解_CST案例分析

思茂信息

cst cst操作 CST Studio Suite

iptables- MARK与CONNMARK目标

天翼云开发者社区

网络

专业的Mac菜单栏管理工具 Bartender 5

Rose

一键视频图片解析下载工具SnapAny for Mac免费版

Rose

智慧文旅行业是否需要购买堡垒机?为什么?

行云管家

网络安全 数据安全 堡垒机 智慧文旅

南开大学赵宏教授解读AI语境下的教育根本问题,相关白皮书已发布

ModelWhale

AI教育 南开大学 人工智能教育 学科+AI白皮书

.NET 9中的异常处理性能提升分析:为什么过去慢,未来快

电子尖叫食人鱼

.NET 7

智慧酒店多商户合伙人:微擎开源生态下的酒店行业资源整合平台

微擎应用市场

DataGrip2025中文激活版 附DataGrip永久许可证

Rose

(Folx下载器)Folx Pro 5.28 Mac下载管理器

Rose

Fluss 实战:用 Partial Update 构建实时宽表的新范式

Apache Flink

大数据 flink Fluss

壹佰门店社区团购:微擎开源生态下的社区零售增长引擎

微擎应用市场

Topaz Video AI v7.0.1 一键激活版 AI视频无损缩放增强

Rose

Capture One Studo 16.6.1.21 专业的 RAW 格式转换器-Mac/win

Rose

阿里云事件总线 EventBridge 正式商业化,构建智能化时代的企业级云上事件枢纽

阿里巴巴云原生

阿里云 云原生 EventBridge

YMatrix 的 HTAP 能力和其他数据库有何不同?

YMatrix 超融合数据库

HTAP 超融合数据库 HTAP 场景实践 YMatrix HTAP数据库

为什么数字化转型失败率这么高?

积木链小链

数字化转型 数字化 智能制造

文件压缩与归档利器BetterZip for Mac v5.4中文版

Rose

社区答疑明星招募令 | 成为SeaTunnel社群“技术担当”,我们等你来!

白鲸开源

开源社区 数据集成 Apache SeaTunnel 开源活动

EndNote 2025 :全新的 AI 功能,加快研究发现流程

Rose

25年河北等保测评机构名称以及地址一览表

行云管家

等保 等保测评

Muu 线下活动:微擎开源生态下的全流程活动管理与营销平台

微擎应用市场

Apache Doris 2.1.10 版本正式发布

SelectDB

大数据 开源 实时数仓 Apaache Doris 数据湖分析

多源多表写入、数据格式增强,SeaTunnel 2.3.11 重磅更新来了!

白鲸开源

大数据 开源 数据同步 Apache SeaTunnel 版本发布

StoreView SQL,让数据分析不受地域限制

阿里巴巴云原生

阿里云 云原生 sls

【每天学点‘音视频’】面试官:什么是音视频及实时音视频

小曾同学.com

音视频 H264 RTC 实时音视频

Swinsian for Mac(音乐播放器)v3.0Preview23永久激活版

Rose

VMware NSX 4.2.2.1 发布,新增功能简介

sysin

nsx

ssh配置文件管理工具 SSH Config Editor Pro for Mac

Rose

当企业遇上JNPF低代码,会擦出什么火花?

引迈信息

会员付费漫画小程序:微擎开源生态下的内容变现新范式

微擎应用市场

软件项目开发中的三个“不应做”事项_文化 & 方法_Lawrence Putnam  Jr_InfoQ精选文章