如何不增加人手的情况下,让技术团队增加 25% 的开发效率
1 什么是 #技术债务 ?
在软件研发团队中,我们经常会遇到大量『计划外工作』,比如修复缺陷、紧急返工等。造成这些问题的原因有很多:- 内部软件质量缺乏可见性,这些额外成本往往表现为『新功能上线周期长』、『错过项目节点』以及『技术团队压力山大』等现象。
- 由于缺乏透明度,团队很难针对根本原因采取有效措施,也难以判断到底是流程、团队协作还是代码本身出了问题。
2 技术债务是一个业务问题
技术债务是一个形象的比喻,就像金融领域的债务一样,会产生利息。也就是说,技术债务让我们的代码维护成本变得更高。这对企业来说影响巨大。可持续的软件开发需要在短期目标和长期发展之间取得平衡。产品要不断推出新功能,同时还要保证代码库的可维护性、可扩展性和易理解性。如果没能平衡好这些目标,技术债务就会不断累积,最终导致成本失控、承诺无法兑现。由此带来的代码质量问题还会影响客户满意度,用户会频繁遇到 bug,创新速度也会变慢。我们先来看一些真实的数据。
技术债务的成本
关键要点 — 平均来看,企业因技术债务浪费了 23-42% 的开发时间。一项北欧的研究显示,开发者平均因技术债务浪费 23% 的时间(Besker, T. 等,2019)。而 Stripe 的数据更为惊人,显示开发者每周有 42% 的时间都在处理技术债务和糟糕的代码(Stripe, 2018)。
招聘更多开发者并非解决之道
关键要点 — 招聘更多开发者会带来更多沟通和协调成本,反而可能让效率更低,尤其是在技术债务严重的团队中。这些数字值得每个中国企业深思,也揭示了一个更深层次的问题:人才供应。既然 23-42% 的生产力被浪费,公司必须采取措施提升交付能力。 常见的做法是『多招人』,但现实中我们不可能无限制地招聘开发者。人才资源有限,国内外都在争夺优秀开发者。即使能随意扩招,也未必能解决问题。请看下图:
3 计算技术债务的影响
建立基线,估算技术债务成本
关键要点 — 如果你的团队在计划外工作上的投入超过 15%,那就是一个危险信号,说明交付潜力被浪费,技术债务很可能是主因。实施任何改进措施时,最大的障碍往往是不确定的回报:投入后到底能省多少钱?技术债务管理也一样。大多数团队:
- 不清楚当前软件质量状况;
- 不知道技术债务每天要花多少钱;
- 不清楚质量问题对业务的具体影响。
误区:技术债务不能靠代码扫描得出
关键要点 —— 技术债务常被误认为是『普遍的劣质代码』。这是个危险的误区,会让团队在一些没有明确业务价值的改进上浪费大量时间。更具体地说,传统的静态代码分析工具无法准确识别技术债务,因为:
- 技术债务无法直接在源代码中检测到;
- 技术债务不等同于代码质量问题;
- 技术债务的成本不是重构代码所需的时间。
用计划外工作计算投资回报率
关键要点 —— 许多团队为 100 名开发者付工资,但实际产出只有 75 人的水平。 『计划外工作』指的是因 bug、服务中断或软件缺陷等原因产生的临时任务。 计划外工作会占用团队产能,让交付变得不可控,团队从主动变成被动。 大多数团队通过 Jira、飞书、企业微信等工具间接跟踪计划外工作。我们可以用这些数据计算计划内与计划外工作的比例:公式:计算技术债务导致的产能浪费
『计划外工作』无法彻底消除。高绩效团队的基线是 15%(参见《Accelerate》一书)。 有了这个基线,我们可以用如下公式:浪费 (%) = 计划外工作% – 0.15未利用的产能 (¥) = 开发人数 * 人均成本 * 浪费 (%)
举例: 当计划外工作占 40%,100 名开发者人均月成本为 7,000 元时,未释放产能为:
浪费 (%) = 0.40 – 0.15 = 25%未利用的产能: 100 * 7000 * 0.25 = 175,000 元/月
换句话说,『你为 100 名开发者付工资,却只拿到 75 人的产出。25% 的产能被浪费了。』这样可持续吗? CodeScene 收集了大量全球团队的数据,发现很多组织有 25~40% 的开发产能被计划外工作消耗,极端情况甚至高达 70~80%。 这个区间与前文提到的技术债务导致的生产力浪费(23-42%)基本吻合。 但要注意,『 技术债务只是导致计划外工作过多的原因之一,不能孤立处理技术债务 』。 具体来说,提升软件交付效率时,需要关注以下三个方面:
- 代码质量与相关性 —— 并非所有技术债都要优先解决;
- 软件架构与组织目标一致性;
- 流程损耗 —— 关注团队协作和人员因素。
4 代码质量与相关性:并非所有技术债都要解决
技术债务通常意味着严重的代码质量问题,但反过来并不成立:代码质量不高未必就是技术债,也未必紧急。 而且,团队不可能一次性解决所有问题,优先处理最关键、最有业务价值的技术债才是正道。5 确保组织与软件架构一致
软件架构不是孤立存在的,必须与组织结构(如开发团队)相匹配。架构与组织不一致会导致沟通成本上升、缺陷风险增加。用团队视角衡量和可视化架构很重要。 资源: 阅读更多关于如何可视化跨团队边界的逻辑依赖:https://codescene.com/blog/codescene-release-3_6流程损耗:关注团队协作和人员因素
团队的开发实践也可能成为瓶颈。要关注等待审批、长期分支等流程损耗。 代码也可能变成『知识孤岛』,即某个模块只有一人熟悉,带来关键人员依赖。6 衡量预期成果
关键收获 —— 技术债务的真实影响远超计划外工作的节省,本文的计算只是底线。技术债务还带来机会成本,比如计划工作耗时变长。
用现有团队实现更高产出
管理技术债务的回报不一定体现在成本节约上,更重要的是释放团队潜力。如果你知道团队的真实产能,并通过偿还技术债释放出来,你会怎么用这些新增能力? • 上市时间 —— 产品迭代速度能提升多少? • 积极性 —— 消除技术债务后,开发者的积极性和生产力能提升多少? • 质量 —— 缺陷处理速度提升后,客户满意度会有多大变化?更多影响 —— 技术债务也会影响计划内工作
技术债务让修改现有代码变得更难、更有风险。 开发者会预留更多缓冲时间,影响产品和市场。 交付周期变长,创新优先级被迫降低。 在商业语境下,新功能交付周期变长,上市时间延后,甚至影响客户承诺的兑现。7 小结
技术债务在软件行业同样普遍,导致 23~42% 的生产力损失。 技术债务的核心挑战:- 缺乏可见性,难以量化其成本和影响;
- 技术债务不仅是技术问题,更影响业务需求的实现和效率,需要与业务目标对齐;
- 不能也不应该一次性解决所有技术债务;
- 『靠加人头抵消技术债务』不可持续,也难以规模化。
8 互动环节
在管理技术债务的实践中,每个中国团队都会遇到独特挑战。我们很想知道:- 你的团队是如何量化技术债务成本的?是否尝试过文中的方法?
- 在平衡新功能开发和技术债务偿还时,你采用了哪些优先级决策框架?
- 有没有通过管理技术债务显著提升团队效率的成功案例?