工程实践

为什么有些项目越做越好,有些项目却走向垃圾堆

· 三面体

是沉淀,还是损耗;是优化,还是债务。时间最终会给出答案。

组织观察

有些项目像飞轮。

刚开始推动时并不轻松,甚至同样会经历需求反复、人员变动、技术债和交付压力。但随着项目不断迭代,业务理解越来越深,系统结构越来越清晰,文档和工具逐渐完善,后续每一次交付都会比上一次更顺畅。项目运行得越久,积累的资产越多。

另一些项目则恰恰相反。上线之初也许还能勉强运转,但随着需求增加、人员更换和时间推移,系统越来越难理解,功能越来越难修改,任何一个看似简单的需求,都可能牵动大量历史逻辑。 项目每天都有人维护,也在持续投入资源,却像一艘不断进水的船,只能依靠更多人力勉强维持。

工作多年后,主导过一个又一个项目顺利交付,但也经历过众多的项目陨落,我想能不能系统性结构化分析一下,一个项目为什么会越做越差?本文就是最近几天思考的一点总结。

基于近几年的数字化项目交付经验,观察身边多个样本总结起来,通常逃不开四个原因:设计架构差、迭代过程乱、文档资料缺、转手交接过程随意。

设计架构差,后续迭代只能不断偿还利息

架构的作用,不只是让系统能够运行,更重要的是承接未来的变化。 如果项目一开始缺少基本的业务建模,数据结构混乱,模块边界模糊,简单业务和复杂流程全部混杂在一起,那么每增加一个需求,都可能放大原有问题。 本来应该通过状态机处理的业务,长期依靠大量判断语句硬撑,一套CRUD走天下;本来应该独立封装的能力,被复制到多个模块;本来应该重新建模的问题,为了赶进度,只能继续增加字段、增加开关、增加特殊逻辑。本来一个单体服务就能搞定的事,非要上来就搞微服务,就搞容器化。大炮打蚊子、小刀砍大树,让人苦笑不得。

架构没设计好,后续的迭代就会非常拧巴。这也是最致命的缺陷。

迭代过程乱,项目始终被眼前问题牵着走

项目混乱,很多时候并不是因为需求多,而是因为缺少稳定的迭代秩序。

需求没有澄清就开始开发,方案没有验证就进入实施,测试尚未完成又插入新的变更。优先级不断调整,口头需求随时加入,临时方案没有后续治理,版本之间也缺少清晰边界。

团队每天看起来都很忙,但大量精力消耗在返工、补漏和沟通上。一个问题还没有彻底解决,下一个问题已经压了上来。项目长期处于救火状态,所有人都只顾眼前上线,没有人再有余力思考系统应该走向哪里。

这种项目不是在有序迭代,而是在被需求和问题拖着向前移动。

文档资料缺,经验只能依附于个人

很多项目把文档理解为交付时补齐的一套材料,而不是项目运行的一部分。 需求为什么这样设计,字段为什么这样定义,历史上做过哪些取舍,哪些方案是临时方案,哪些地方存在已知风险,都没有留下完整记录。久而久之,项目中的关键知识只能存在于少数人的头脑中。

谁熟悉系统,谁就成为不可替代的“活文档”;谁离开项目,一部分知识就随之消失。后来接手的人只能通过代码、数据库、聊天记录和零散文件进行工程考古,重新猜测业务原貌和设计意图。更麻烦的是,代码只能告诉你系统现在是怎么做的,却未必能告诉你当初为什么这样做。

缺少文档,本质上不是少了几份文件,而是项目失去了保存和传递认知的能力。

转手交接随意,项目每换一次人就失忆一次

项目经历人员更替并不可怕,真正危险的是没有治理的转手。

现实中,很多项目会在开发人员、实施人员、项目经理、供应商甚至不同公司之间反复流转。一次会议、几个压缩包、一份资料清单,就被当成完成了交接。但真正需要传递的,远不只是代码和账号。还有业务背景、数据口径、系统边界、设计逻辑、历史问题、隐性约束,以及那些没有写进任何需求文档中的真实规则。

这些内容如果没有被系统化整理,每转手一次,就会损失一部分。

后来的人越不了解历史,就越不敢调整原有结构;越不敢调整,就越倾向于继续打补丁;补丁越多,系统越难理解。 最终,一个项目可能已经经过很多人的手,却没有任何一个人能够完整说明它。

如果缺少严格的交接、验收和知识沉淀机制,项目经过多人甚至跨团队转手后,走向混乱和衰败,几乎是一种必然趋势。

飞轮型项目,恰好走在相反的方向

一个越做越好的项目,并不是没有遇到上述问题,而是能够在迭代中不断消化问题。

架构存在不足,就在适当的节点校正,而不是让缺陷无限扩散;迭代过程出现混乱,就逐步建立需求、评审、开发、测试和发布秩序;知识容易流失,就通过文档、规范、工具和复盘将其沉淀下来;人员发生变化,就用可验证的交接机制保证项目能力不随个人离开而消失。

好的项目,会把每一次需求转化为对业务更深的理解,把每一次问题转化为机制上的改进,把每一次交付转化为可以继续复用的资产。

后来的人不是从头摸索,而是站在前人的积累上继续向前。

于是,项目逐渐形成飞轮:

业务理解越深,设计越准确;设计越准确,返工越少;返工越少,团队越有余力进行优化;优化越多,下一次交付就越容易。

时间会放大一切!

有些项目把时间转化为业务认知、技术能力、文档资料和组织经验,时间越久,项目越稳定,团队越从容。另一些项目则把时间转化为技术债、信息损耗、人员依赖和历史包袱,时间越久,项目越沉重,团队越疲惫。

所以,项目真正的分野,不只在于今天能否上线,而在于每一次投入究竟留下了什么。是沉淀,还是损耗;是优化,还是债务。

时间最终会给出答案。


以上讨论仅限于站在研发的切面观察,但很多时候决定项目生死的关键因素不在研发交付层面。

2026年7月14日22:32:48 于天津