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