对技术负债,技术和业务权衡和重构,重写,升级的一些看法
技术负债
在技术圈,有一个债务术语叫【技术负债】或者【技术债务】。【技术负债】带来的显性和隐性成本是非常高的。
显性的是技术不给力, 运营/产品/商业团队都很难受,而这种难受实际带来的损失会比想象的大,甚至对整个公司的前景都产生了影响。
第二个是隐性的,隐性的是指 虽然你随便找个团队都能把某件事情(系统)做出来,但是这个事情(系统)埋的雷太多,它只是跑起来了,但其实不能持续的跑。不能持续的跑体现在那些方面呢?
- 无穷无尽的看起来很小的bug
- 很多业务诉求甚至表示无法实现
- 研发有60%以上的精力专注在人肉运维该系统。
- 新的业务功能完全是在写新的代码,老的代码不敢改,也不愿意去动它。
最后的结果是去跟老板说,对不起,这个系统我们实在run不下去了,只能重构甚至重写了。
这部分属于隐性成本,它的实际开销也是远远大于管理者想象的。大家可以想像下,十个程序员有八个人肉运维该系统的运转,另外两个对接业务,但是效率极其低下,这其实是在浪费你的程序员的成本,同时各个业务部门也都不满意,很难受,严重影响了业务的发展。结局是你还要再搞八个人去重新开发。
所以,怎么避免产生技术债务呢?怎么解决技术债务呢? 在讲这个之前,我们再提另外一个【历史名题】,业务和技术到底谁优先。
业务和技术到底谁优先?
大部分和技术有关的公司都会说业务优先,业务优先没有错,没有业务你公司就死了,还谈何技术优先。
但是执行中最后都会歪了,变成跛子,导致技术没办法把业务优先支撑起来,业务优先也就成了空话。
另外当大家提业务优先的时候,骨子里想的是什么? 想的就是你做技术的就是一堆死板的工匠,比如你是个木工,你好好做好木工就行了。但实际上工程师不同于此,没有工程师文化,工程就做不好,但是大家适应不了这种变化,你一个工匠跟我提文化,这不是搞笑呢么,几千年的治人思想 ,没办法。
值得一提的是,中国也开始慢慢过了有个Idea找个团队做出来就行的阶段了 ,美帝现在的阶段肯定是我们未来的阶段,基础技术美帝始终都有在大量投入 技术驱动也很明显。这就意味着,随着商业模式慢慢都被做透了,大家拼的就是工程了和服务质量了。
所以关于业务和技术到底谁先行,最后的总结的就一句话:
战术上业务先行,战略上持续发展技术
重构,重写和升级
重构,重写,升级,即适用于编码,也适用于架构,更适用于各种支持业务的系统。有一个好的工程师文化的团队,重构,重写,升级应该是在日常中完成的,并且是自驱的。
做到这一点,有什么好处呢?因为这可以避免和减少你的【技术负债】。
怎么做到这一点呢?战术上业务先行,战略上持续发展技术
很好,我们把这三者之间很好的串联起来了。万事皆有关联,靠的近的事容易有因果。所以他们三者也逃不出这个因果关系。
能做到日常的重构,重写,升级,是非常需要勇气和主动责任的精神,也考验团队技术实力,而这也是工程师文化的一种。我们来看看为什么是需要勇气的,主动责任精神和实力的。
- 重构,重写,升级意味着新的bug和坑,主动迎上去需要勇气。
- 重构,重写,升级短期不是必须的,主动迎上去需要主动和责任。
- 重构,重写,升级而是让故障更少,业务更快的的主动出击行为,这就需要实力。
当然,要减少技术负债,提升业务效能需要做的事情太多太多,但是重构,重写,和升级真的能起很大的作用。