房乐的博客

Menu

欠债还钱,欠技术债,可能还得公司破产

最近看了一篇文章,分享出来,来源来自差评君 ,做产品难免会欠下技术债,但是“不将就”应该是产品研发的底线。

欠下的

总该还

差评君最近想买个新电视。

这样才能配得上我的 PS4 Pro 的 4K HDR 游戏画质。

但是我想了半年了。。。

为啥呢?

因为每个月,还了信用卡以后,就发现赚的钱不见了。。。

这种程度的债务带来的痛苦,想必很多人都体会过,更别提那些贷款创业然后公司运营不善的老板们了。。。

但是,你有没有听说过另一种形式的债,会让程序员和科技公司抓狂。

这种债务,欠的不是钱,但是值不少钱。

它叫技术债。

 

技术债的意思是就是做技术开发的时候欠下的债。

不过这么解释好像等于没说。。。

差评君还是举个例子吧。

假设差评君想要搬运一堆石头,但是身为一个优雅的人,不愿意徒手去干这活儿。( 放在软件开发里,往往是因为需求不适合人来做 )

于是叫了一帮开发弟兄们,来给我解决一下这个问题。

小黑胖觉得可以做个推车,大家也认同这个方案,于是就这么定了。

( 灵魂画手差评君的新系列 )

于是,世超做轮子,小黑胖做车身,小二做纤绳。

这个过程,和技术开发类似,大家分头做一个个功能,然后组合。

差评君呢?

做老大的自然要在旁边看着才叫老大嘛。。。

让我们假设当时技术比较落后,没有办法生产比较圆的东西,或者说轮子在这之前都没被发明过,大家也不知道该做成圆的还是方的,就用方的轮子了。

颠着颠着也还能用。。。
于是就这么凑合着了。

例子里场景比较荒唐,但在早期技术开发的时候,确实有因为技术受限做不出完美方案的情况出现,只好给某个部分做妥协。( 也有可能是设计的时候没想到,或者是让项目尽快完成 )

车子造好了,大家费了很大的劲,开始装石头进去。

拖着拖着,发现这轮子不光会颠,碰到软的地面还会陷进去,总而言之用是能用,但是不好用。

这时候,负责开发轮子的世超拿着两个圆形的东西跑过来,说找到更好的轮子了!

但是,装上轮子需要停下手头的活儿,并且还得拆装小车,这些事儿都要费很多功夫,更何况万一这新轮子的轴不搭还得重做呢。。。

在现实的技术开发中,这个所谓 “ 换轮子 ” 需要费的精力和金钱往往是很惊人的,因此很多时候会选择妥协地用着不太完美的方案。

咱们决定继续用方轮子的方案。

但速度不快的确是个问题,于是决定给小车做一次升级:给它安个推进器。

但这么搞发现效果不太好,因为速度太快,方轮子磕地面会越发剧烈。

这个本来很棒的升级方案,因为之前的一次妥协,变得不太好了。

但好在能勉强解决,就是把推进器做成斜向上的,这样小车就会稍微往上弹起,轮子变得不太容易磕地面了。

现实中,一个技术产品需要往后迭代,增加功能时,有时候会受老功能里不太完美的代码的影响,为了解决它往往需要在做新功能时也妥协一部分。

然后,因为推进器的设计,又有新的问题出现了。

因为这么移动时,需要稍稍的 “ 蹦 ” 起来一些,导致这个小车太晃了,于是咱又不得不给小车加个盖子防止石头掉出来。

这就不光是妥协的问题了,我们甚至需要做一些工作,专门去维护因为妥协而造成的问题。

随后,因为盖子的问题,咱们得做扣子不让盖子乱跑,轮子老磕地面还容易坏,石头晃来晃去也让车子很不稳定,总而言之问题越来越多,补都补不过来。

最后,咱们终于觉得换个轮子的重要性不可忽视了,但是这时候再看看,拆了重做的工作量更多了。

以上,大概就是欠下技术债的样子了。

为什么要说它是债呢?

因为真的很形象:

一开始,我们用方形轮子这种糟糕的设计时,就好像是欠下了一笔债。

而一旦小车运行起来以后,要还债就得付出停车和修改的代价,这多付的地方就是利息了。。。

再然后,当我们想要升级的时候,因为方轮子的关系,花了额外的时间精力去解决推进器适配问题,还做了妥协,这就好比是再欠一笔来填原来的利息。

因为推进器也做了妥协,产生出了新的问题,利滚利了。。。

这时候终于忍不住想换轮子,想还债了,回头看看,发现债务和利息加起来变得非常恐怖。

在技术开发领域,这些利息可能是:

本来添加个很简单的新功能,但是却花很大功夫来磨合原有的项目。

一些怎么都搞不定的错误,甚至得专门花时间金钱来处理

而还债呢:

当一个项目在原有基础上添了很多东西以后,你要 “ 还债 ” 几乎等于重做。

这就好比你造大楼,地基打歪了,你再想修的话得把上面的建筑一起敲了再搞。

这个时候,你说还吧,太昂贵了。。。

你想想,现在程序员工资这么高,工作内容却是让他们把原来的东西重新写一遍,你说昂贵不昂贵?

不还呢,哪天利息滚到你想锤蛋自尽。。。

这种例子在各位熟悉的大型科技公司身上很常见。

比如说微软,当年给他们的开发工具 Visual Studio 做了个网络服务 Visual Studio Online,但因为以前的系统设计失误,让他们这个新功能宕机了 7 个小时。

Facebook 也有个技术债经历。

了解开发的差友们可能知道,Facebook 是用 PHP 语言写的。

他们当年就有这样一笔写在在 PHP 代码里的技术债,滚到根本还不起了。

所以干脆发明了一个虚拟机,叫 HHVM,因为他们最后发现修复那个漏洞的成本还不如发明另一套新工具。。。

现在,你理解技术债有多麻烦了吧?

更麻烦的是,它有一点和贷款不一样,就是很多时候直到问题出现才能意识到自己欠了技术债,比如说设计失误。

但是这不一定是个绝对要规避的东西,有时候,一个项目拖不到更好的方案时,需要贷这样一笔技术债来加速一下进程,尽快上线让它运转起来也是有必要的。

在知情的情况下,要不要欠技术债,欠下以后怎么还,多久还,也是一个开发战略,做技术开发绝对不是蒙头写代码那么简单~

但是有一点是可以确定的,就是欠债的人不会喜欢利息,而且还的时候肯定有些痛苦。

就和我每个月还信用卡一样。。。

 

— 于 共写了2275个字
— 文内使用到的标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注