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

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

大债务
小债务
疏忽债务
战术债务
战略债务
提高团队生产力
避免技术破产
测试工程师
开发工程师
架构师
疏忽债务
战术债务
战略债务
无意产生的债务
有意产生的债务
有意或无意做出的错误或不理想的技术决策
源自金融债务的比喻
把技术债务当作一门工具
技术债务的态度和能力
程序员的信用
微服务架构的影响
还债时机
还债方式
目标
识别债务
不同角色的关注点
分类
产生方式
技术债务的定义
信用
清偿
管理
认知
技术债务

该思维导图由 AI 生成,仅供参考

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

认知

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

技术债务是在软件开发过程中产生的技术决策错误或疏忽所带来的后果,需要有意识地管理和归还。文章从认知、管理和分类等方面探讨了技术债务的产生和应对。作者指出,技术债务的产生可能是有意识的选择,也可能是无意识的疏忽,但不论如何,都需要有意识地管理和归还。文章还提到了技术债务的分类,包括战略债务、战术债务和疏忽债务,以及不同角色在开发团队中关注的债务分类与形态。最后,文章强调了管理债务的目标是识别出债务,并明了不同类型的债务应该在何时归还,以避免技术破产。文章通过实例和观点阐述了技术债务的重要性和管理方法,对于开发人员和技术团队具有一定的指导意义。文章还探讨了技术债务与程序员的信用关系,强调了有意识地引入债务并有计划地归还债务的重要性。总之,文章提出了技术债务管理的重要性,以及程序员应当如何面对和处理技术债务,为读者提供了有益的指导和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(11)

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

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

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

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

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

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

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

    作者回复: 😄

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