范冰冰欠了8.8亿的罚款,而你欠了88天的技术债
范冰冰的偷税漏税案有了判决结果,她被罚款 8.8亿
无论是演艺圈的大佬,还是我们技术圈的码农,出来混迟早要还的。
本文将比较IT人欠的技术债和范冰冰欠的巨额罚款的相同点和不同点,和对如何避免技术债提出三点建议。
说到这里,也给大家推荐一个架构交流学习群:835544715,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。
1. 什么是技术债?
据作者的不完全统计,除了需求变更,程序员还经常吐槽的另外一件事,就是接手了一个没有文档的半路项目。
更郁闷的是,前面负责开发的人还离职了,找不到人。
更加更加郁闷的是,这个半路项目的代码完全就是一大盘意大利面条——完全看不出头绪。
意大利面条式的代码是技术债的一种明显的体现形式。
还有的技术债没有这么明显,比如架构设计/技术选型方面的不足。
百科对技术债的定义如下:
技术负债(英语:Technical debt),又译技术债,也称为设计负债(design debt)、代码负债(code debt),是编程及软件工程中的一个比喻。
指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。
这种技术上的选择,就像一笔债务一样,虽然眼前看起来可以得到好处,但必须在未来偿还。
软件工程师必须付出额外的时间和精力持续修复之前的妥协所造成的问题及副作用,或是进行重构,把架构改善为最佳实现方式。
2.技术负债和偷税罚款有什么异同?
1
相同点一: 对产品危害巨大
大家都在讨论范冰冰被罚的8.8亿是多么巨额的罚款,这里我想指出她更大的损失则就是她作为国内一线女星的品牌价值。
品牌价值的损失可能给产品造成致命的一击,如果这个人是在政法领域,可能就直接被“下课”了。
即使不在政法领域,这样的劣迹也足以让制片人/广告主退避三舍。
技术债给软件产品的危害,就如同上面的百科的定义里写到的,当技术负债积累到一定程度,后续的维护成本和开发成本会急速上升,严重的情况整个软件都要重写,比如当前的架构/数据库已经无法满足业务增长带来的性能挑战。
2
第二个相同点,就是技术债和偷税漏税罚款一样,欠的债随着时间的推移,需要加倍的偿还。
范冰冰其实并不是漏税漏了8亿,而是漏税在法律上需要加倍偿还造成的。如下截图:
另一个例子,日常生活中,为了省几十块的停车费随便停车,要罚款500块到2000。
技术债也是一样,今天节省了几天的时间快速把功能实现了,随着产品迭代,产品规模越来越大,如果架构设计不良,要做局部的修改都会牵一发而动全身,开发和维护成本巨大,欠的债要加倍偿还。
3
第三,技术债和偷税漏税的不同。
偷税漏税是一点也不要有,但是技术债并不是完全不能接受。
大家可能觉得技术债是越少越好,其实也不是。
持续将技术债维持在很低的水平需要较大的投入。所以这是一个投入产出比的问题。
比如一个创新的抢占市场,或者获得先机对成败至关重要的产品研发,它的时效性就更重要。
还比如一个生命周期相对较短,可以预见的产品,技术债的水平也需要做最优投入产出比的确定。
比较完了这两者的异同,现在我们来看一看:
3.如何避免欠下技术债?
1
第一步,你要知道你自己欠了多少技术债。
如果有条件的话,可以请技术专家来帮忙做一下评审。
如果没有条件,可以使用工具来检测自己的技术债的水平,比如Sonar。工具检测的结果仅仅做参考,这方面主要还是靠人来寻找自己主要的技术债的焦点,然后解决焦点问题。
再次强调一下,工具可能发现不了真正重要的技术债焦点,所以不要过度依赖和迷信工具的判断。工具只是一个起点,不是终点。
这里我要特别提醒一种比较特殊的技术债,就是安全漏洞。
在有的行业当中,比如:
金融;
涉及到关键用户信息的行业如酒店业;
涉及公司商业机密如公有云服务,
在这样的安全关键的行业中,我就不会把安全漏洞认为是技术债,因为在这样的环境中,安全漏洞不是可以欠的债,而是压根儿就不要借这个款。
如果发现安全漏洞的话,要立即修复。
其他行业,对安全漏洞的处理方式略有不同,需要视情况处理,不能一概而论。
2
第二步,考虑在你的团队创建一份大家达成一致的代码规范,并且开始遵循。新加入的团队成员也不例外。
代码规范不一定是要非常的全面和长篇大论,你们可以从最基本的开始,比如命名规范,注释规范,对异常处理的规范等等。
代码规范最好由研发团队和测试团队(尤其是也做白盒测试的测试团队)自行进行讨论后得出,而不是随便从网上下载一个规范就开始实施,那样可能会不适用当前情况,比如不符合团队习惯,或者规范过于重。
3
第三,考虑采用同行评审。
这一点比较好理解。但是实施方法可轻可重。
比较重的就是直接形成签入流程,工具上走代码评审的流程后才能签入。我之前做一款全球级的在线服务的自动化测试的时候,自动化测试代码签入都是要走流程。
还有一种我在一家大型互联网公司看到的做法,就是定期组织团队的代码评审,这个代码可能是已经签入甚至发布了的代码。有点类似研讨会,大家在一起评审代码,一起学习和进步。
4
第四,重构
有的团队会定期做重构,有的团队因为各方面的原因没有这么做。
重构是一个修整的动作。如果是一个在管理技术债方面没有太多经验的团队,我建议可以按照上面的这三步的顺序开始着手,先解决焦点问题和预防技术债继续堆积。
好了,现在做一个小结:
技术债是对产品有害的,它会随着时间的推移不断地积累和扩大不良影响。
技术债不是越少越好,需要按照具体的行业情况和要求来管理。
在某些信息安全关键的行业中,如金融,酒店,公有云服务,安全漏洞不是可以欠的技术债,一旦发现需要立即修复。
最后有四点避免欠下技术负债的建议:
第一步,你要知道你自己欠了多少技术债,着力解决焦点问题。
第二步,考虑在你的团队创建一份大家达成一致的代码规范,并且开始遵循。新加入的团队成员也不例外。
第三,考虑采用同行评审。
第四,重构。没有形成定期重构习惯的团队,可以先从上面3点开始做起。
你对范冰冰的判罚怎么看,你又是如何看待技术债的? 欢迎你在评论区留言!
想要学习Java高架构、分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频免费获取 架构群:835544715

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Redis 的各项功能解决了哪些问题?
先看一下Redis是一个什么东西。官方简介解释到: 综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一步的演进来粗略的解释下。 1 从零开始 最初的需求非常简单,我们有一个提供热点新闻列表的api:http://api.xxx.com/hot-news,api的消费者抱怨说每次请求都要2秒左右才能返回结果。 随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600 ,即让消费者可以缓存这个响应十分钟。 如果api消费者如果有效的利用了响应中的缓存控制信息,则可以有效的改善其感知的性能(10分钟以内)。但是还有2个弊端:第一个是在缓存生效的10分钟内,api消费者可能会得到旧的数据;第二个是如果api的客户端无视缓存直接访问API依然是需要2秒,治标不治本呐。 2 基于本机内存的缓存 为了解决调用API依然需要2秒的问题,经过排查,其主要原因在于使用SQL获...
- 下一篇
前腾讯开发组长,跳槽到头条后猝死
今日一位网友在网上吐槽,因为996的上班时间,今日头条一名程序员猝死了。网爆前腾讯OMG开发组长,跳槽入职头条后,昨天猝死了。 对此,我看到这个新闻都有点见怪不怪了。网上经常有爆料,现在大多数IT公司实行996的上班制,所以近年来爆出程序员猝死的消息也是不在少数。不过博主消息一经发出,网上顿时一片哗然,尤其是在今日头条的工作员们 其中大多数今日头条的在职员工都表示,公司加班确实太严重了,天天加班加班心律不齐还头晕,正考虑是不是要走人。特别是有位网友的家人听到此消息,让这位网友马上换公司,估计这位网友的家人是真的被吓到了。 于是有人写了一篇入职头条的指南。 说到这里,也给大家推荐一个架构交流学习群:835544715,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。 为何我从腾讯离职来到头条? 5月底从腾讯辞职,来到今日头条,已经3个月时间,除了一周三顿小龙虾,零食水果无...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装