欠债还钱,欠技术债,可能还得公司破产
最近看了一篇文章,分享出来,来源来自差评君 ,做产品难免会欠下技术债,但是“不将就”应该是产品研发的底线。
欠下的
总该还
差评君最近想买个新电视。
这样才能配得上我的 PS4 Pro 的 4K HDR 游戏画质。
但是我想了半年了。。。
为啥呢?
因为每个月,还了信用卡以后,就发现赚的钱不见了。。。
这种程度的债务带来的痛苦,想必很多人都体会过,更别提那些贷款创业然后公司运营不善的老板们了。。。
但是,你有没有听说过另一种形式的债,会让程序员和科技公司抓狂。
这种债务,欠的不是钱,但是值不少钱。
它叫技术债。
技术债的意思是就是做技术开发的时候欠下的债。
不过这么解释好像等于没说。。。
差评君还是举个例子吧。
假设差评君想要搬运一堆石头,但是身为一个优雅的人,不愿意徒手去干这活儿。( 放在软件开发里,往往是因为需求不适合人来做 )
于是叫了一帮开发弟兄们,来给我解决一下这个问题。
小黑胖觉得可以做个推车,大家也认同这个方案,于是就这么定了。
( 灵魂画手差评君的新系列 )
于是,世超做轮子,小黑胖做车身,小二做纤绳。
这个过程,和技术开发类似,大家分头做一个个功能,然后组合。
差评君呢?
做老大的自然要在旁边看着才叫老大嘛。。。
让我们假设当时技术比较落后,没有办法生产比较圆的东西,或者说轮子在这之前都没被发明过,大家也不知道该做成圆的还是方的,就用方的轮子了。
颠着颠着也还能用。。。
于是就这么凑合着了。例子里场景比较荒唐,但在早期技术开发的时候,确实有因为技术受限做不出完美方案的情况出现,只好给某个部分做妥协。( 也有可能是设计的时候没想到,或者是让项目尽快完成 )
车子造好了,大家费了很大的劲,开始装石头进去。
拖着拖着,发现这轮子不光会颠,碰到软的地面还会陷进去,总而言之用是能用,但是不好用。
这时候,负责开发轮子的世超拿着两个圆形的东西跑过来,说找到更好的轮子了!
但是,装上轮子需要停下手头的活儿,并且还得拆装小车,这些事儿都要费很多功夫,更何况万一这新轮子的轴不搭还得重做呢。。。
在现实的技术开发中,这个所谓 “ 换轮子 ” 需要费的精力和金钱往往是很惊人的,因此很多时候会选择妥协地用着不太完美的方案。
咱们决定继续用方轮子的方案。
但速度不快的确是个问题,于是决定给小车做一次升级:给它安个推进器。
但这么搞发现效果不太好,因为速度太快,方轮子磕地面会越发剧烈。
这个本来很棒的升级方案,因为之前的一次妥协,变得不太好了。
但好在能勉强解决,就是把推进器做成斜向上的,这样小车就会稍微往上弹起,轮子变得不太容易磕地面了。
现实中,一个技术产品需要往后迭代,增加功能时,有时候会受老功能里不太完美的代码的影响,为了解决它往往需要在做新功能时也妥协一部分。
然后,因为推进器的设计,又有新的问题出现了。
因为这么移动时,需要稍稍的 “ 蹦 ” 起来一些,导致这个小车太晃了,于是咱又不得不给小车加个盖子防止石头掉出来。
这就不光是妥协的问题了,我们甚至需要做一些工作,专门去维护因为妥协而造成的问题。
随后,因为盖子的问题,咱们得做扣子不让盖子乱跑,轮子老磕地面还容易坏,石头晃来晃去也让车子很不稳定,总而言之问题越来越多,补都补不过来。
最后,咱们终于觉得换个轮子的重要性不可忽视了,但是这时候再看看,拆了重做的工作量更多了。
以上,大概就是欠下技术债的样子了。
为什么要说它是债呢?
因为真的很形象:
一开始,我们用方形轮子这种糟糕的设计时,就好像是欠下了一笔债。
而一旦小车运行起来以后,要还债就得付出停车和修改的代价,这多付的地方就是利息了。。。
再然后,当我们想要升级的时候,因为方轮子的关系,花了额外的时间精力去解决推进器适配问题,还做了妥协,这就好比是再欠一笔来填原来的利息。
因为推进器也做了妥协,产生出了新的问题,利滚利了。。。
这时候终于忍不住想换轮子,想还债了,回头看看,发现债务和利息加起来变得非常恐怖。
在技术开发领域,这些利息可能是:
本来添加个很简单的新功能,但是却花很大功夫来磨合原有的项目。
一些怎么都搞不定的错误,甚至得专门花时间金钱来处理。
而还债呢:
当一个项目在原有基础上添了很多东西以后,你要 “ 还债 ” 几乎等于重做。
这就好比你造大楼,地基打歪了,你再想修的话得把上面的建筑一起敲了再搞。
这个时候,你说还吧,太昂贵了。。。
你想想,现在程序员工资这么高,工作内容却是让他们把原来的东西重新写一遍,你说昂贵不昂贵?
不还呢,哪天利息滚到你想锤蛋自尽。。。
这种例子在各位熟悉的大型科技公司身上很常见。
比如说微软,当年给他们的开发工具 Visual Studio 做了个网络服务 Visual Studio Online,但因为以前的系统设计失误,让他们这个新功能宕机了 7 个小时。
Facebook 也有个技术债经历。
了解开发的差友们可能知道,Facebook 是用 PHP 语言写的。
他们当年就有这样一笔写在在 PHP 代码里的技术债,滚到根本还不起了。
所以干脆发明了一个虚拟机,叫 HHVM,因为他们最后发现修复那个漏洞的成本还不如发明另一套新工具。。。
现在,你理解技术债有多麻烦了吧?
更麻烦的是,它有一点和贷款不一样,就是很多时候直到问题出现才能意识到自己欠了技术债,比如说设计失误。
但是这不一定是个绝对要规避的东西,有时候,一个项目拖不到更好的方案时,需要贷这样一笔技术债来加速一下进程,尽快上线让它运转起来也是有必要的。
在知情的情况下,要不要欠技术债,欠下以后怎么还,多久还,也是一个开发战略,做技术开发绝对不是蒙头写代码那么简单~
但是有一点是可以确定的,就是欠债的人不会喜欢利息,而且还的时候肯定有些痛苦。
就和我每个月还信用卡一样。。。
- 下一篇:博客重新开张,随便写点
- 上一篇:《网络安全审查办法》与答记者问