今年早些时候,Umser Mansoor为codehoy做了一个关于技术债务的小调查。调查发现,在91名受访者中,68%的开发者表示,他们开发的产品背负着高额或非常高的科技债务。技术债务每年给公司造成极高的的成本损失,也对工程团队造成毁灭性的影响。
1.时间浪费
能想象到你的开发团队一年中花费近三个月(或更多)在技术债务上、没有希望达成KPI吗?瑞典的一项调查对软件开发人员进行了纵向研究,发现软件开发人员由于技术债务平均浪费了23%的工作时间。这些数据得到了对大型软件公司的研究的支持,研究发现,管理大型软件公司的技术债务的成本是巨大的,据估计,平均占整个开发时间的25%。Stripe的研究显示,这个数字甚至高达33%!这是一笔可以避免的巨额支出。
更糟糕的是,正如瑞典的研究中详细描述的那样,随着时间的推移,解决技术债务只会变得更加具有挑战性,因为任何添加到代码库的操作都是在一个已经无法工作的系统之上进行的,因此bug和小故障不断复合。整个团队都被技术债务感染了,而且是会传染的。
在价值方面,构建速度和更快发布的能力受到了阻碍。很难对工作进行时间估计,交付代码的利润率也会下降。
人们在哪些债务上浪费时间?
Codeahoy研究将技术债务归因于几个因素,包括过时的库、缺乏文档、代码质量差、臃肿的整体、开发过程中不包括的静态分析工具、缺乏单元测试、随意的体系结构、糟糕的设计决策以及缺乏持续交付。具体的例子包括“10年前在内部构建的框架”和“未使用服务的遗留AWS基础设施”。
这对开发人员有什么影响?
用厨房打比方来描述技术债务的现实是个很好的例子:如果你经营一家餐饮店,你只负责烹饪,不洗盘子、不刮烤架、不整理冰箱,市场监督管理局很快就会关掉你的这坨“垃圾”。
然而,软件开发可没有监督管理的,这要让厨房工作人员对每天工作的厨房状况更加警觉,如果不采取任何措施,就会出现厨房开始无法生产可食用饭菜的情况。一般来说,你可以说服决策者,从长远来看,打扫厨房是更有利的选择;或者,更新一下简历,在目前这个“厨房”烧毁之前离开。
2.士气低落,工作满意度降低
技术债务损害团队士气,导致过度认知的负荷。此外,管理充满不满情绪的团队并非易事。大多数人都以把工作做好为荣,并从成功中得到奖励。但如果有技术债务,他们可能会觉得被拖垮或压垮。如果已经向管理层提出了担忧而又没有追索权,情况就更糟了。80%的Codehoy受访者指出,他们的管理层意识到了技术债务:具体来说,57%的受访者表示,他们的经理意识到了,但并没有计划;23%的受访者表示,他们的经理知道但不在乎。一位受访者提到:“管理层积极地承认这一点,我们甚至在技术债务中进行优先排序,但是技术债务项目从来没有进入工作流,因为它从来没有被视为足够重要。”
另一位是这么说的:“我注意到的一件奇怪的事情是,我们的公司正陷入财务困境,这意味着解决技术债务的优先级要低于可能带来更多收入的新功能。然而,我认为我们的许多问题都与我们的技术债务有关(例如,由于监管不善,系统在周末的时候被降级了)。不管出于什么原因,新功能才能不断战胜那些让我们的用户付出代价的问题,技术债务越发得不到解决。”
3.人才流失
技术债务既是一个技术问题,也是一个管理问题。快乐的开发人员是高功能团队的成员,如果你的开发人员不满意,他们就会离开,并带走他们(并没有文档记录)的知识。技术债务是人们离开或者想要离开的原因之一。Codehoy的调查发现,50%的被调查开发者可能或非常可能因为技术债务而离职。另外27%的人表示他们考虑过这个问题,但还不确定。总而言之,有相当一部分人可能会因为竞争对手提供的诱人工作机会而动摇。如果公司正在经历开发人员的高流动率,技术债务可能是一个因素,特别是对于那些花费时间去解决遗留代码中的错误而错过了更令人兴奋的项目的人。