程序员进阶攻略
胡峰
京东成都研究院技术专家
33331 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
蜕变:破茧成蝶 (3讲)
结束语 (1讲)
程序员进阶攻略
15
15
1.0x
00:00/00:00
登录|注册

51 | 技术债务,有意或无意的选择?

在编程的路上,我们总会碰到历史系统,接手遗留代码,然后就会忍不住抱怨,那我们是在抱怨什么呢?是债务,技术债务。以前说过,代码既是资产也是债务,而历史系统的遗留代码往往是大量技术债务的爆发地。
然而,技术债务到底是如何产生的?它是我们有意还是无意的选择?这里就先从技术债务的认知开始谈起吧。

认知

技术债务,最早源自沃德·坎宁安(Ward Cunningham) 1992 年在一次报告上创造的源自金融债务的比喻,它指的是在程序设计与开发过程中,有意或无意做出的错误或不理想的技术决策,由此带来的后果,逐步累积,就像债务一样
当作为程序员的我们采用了一个非最优或不理想的技术方案时,就已经引入了技术债务。而这个决定,可能是有意的,也可能是无意的。有意产生的债务,一般是根据实际项目情况,如资源与期限,做出的妥协。
而无意产生的债务,要么是因为程序员经验的缺乏引入的,要么是程序员所处的环境并没有鼓励其去关注技术债务,只是不断地生产完成需求的代码。但只要程序员在不断地生产代码,那他们就是在同时创造资产与债务。债务如果持续上升,软件在技术上的风险就不断增加,最后慢慢走向技术破产。
以前看过另一位程序员写的一篇文章,名字就叫《老码农看到的技术债务》,印象还是比较深刻的。文中把技术债务分成了好几类,我记得的大概有如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 丁丁历险记
    替前人还债中,当那天不能带来我成长时,我会离开

    作者回复: 技术债务无处不在^_^

    5
  • 现在项目组正在重构我们的核心项目,系统使用每天,不过业务运营比较费劲,特别是特殊时期时,重复操作重复验证工作比较多,我们重构后,希望能够减轻一些运营成本。

    作者回复: 大规模重构一定要提前评估计划,期间的实施成本压力也很大的

    4
  • Allen_Go
    遇到产品快速迭代的时候,产品的需求在代码的实现来看就像是打补丁的实现,局部的快速迭代往往会会忽略整体性,当产品流程过长,后来的补丁对于前面的实现大都都像是债务的累积,或如果后面加进来的补丁没有考虑前面的实现,某一天债主就会找上门来了。这种算技术债务吗?

    作者回复: 所以程序员要往前走一点,考虑产品的生命周期,才能少负债,负债也不一定是坏事,特定时间和环境有需要

    2
  • 汪玉斌
    常常因为工期和变更的原因引入债务。 如果决策的人能明白这些债务的存在和代价,那真的要谢天谢地了^_^ 遇到的客户,那些不太懂软件的,反而觉得软件改起来简单,举起例子来一套一套的。。。

    作者回复: 😄

    1
  • 楼上的风景
    观后感: 所谓债务,归根结底是成本和收益的权衡。当初产生负债时,短期收益明显高于成本,故使用之。从长期来看,成本又大于收益,故需要及时偿还之。同时,负债除了本金外,还有利息,当利息越滚越大,甚至盈利无法覆盖时,系统就岌岌可危了。跟经济活动类似,当盈利连利息都无法覆盖时,就会爆发债务危机,进而经济危机。
    2
  • 黄蓓
    为了加载数据更快,前人在provider进程当中实现了一个内存数据库,随着业务的增长,内存数据库越来越复杂,还出现了数据丢失和不一致的情况,这个债务已经还不起了
    2
  • javaadu
    技术债务和现实中的债务一样,用得好了可以利用杠杆为业务提速,用得不好没控制住则会让技术破产
    1
  • JohnT3e
    知道引入了哪些债务,多少债务,何时偿还是关键,更多情况下往往是债务危机爆发时才发觉。
    1
  • Sudouble
    这几年一直在维护一个老系统,当你盯着它看了很久后,多少还是会有一些想法和思路沉淀下来。能偿还一部分债务的
  • Sch0ng
    我们交付的系统既是资产也是债务。 不存在没有债务的系统。 资不抵债,会破产。 系统的资产与债务思想可以作为一个衡量标准,衡量一个团队是不是值得加入。 如果这个团队没有系统的资产与债务思维,那么他是看不到系统的债务的,就不会考虑还债,债务一直累积,直到破产。
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部