几乎所有的互联网公司都会遇到技术债。
在业务发展到某个阶段时,一定会爆发。
对于技术债。
建议大家不要急于还债。
欠债还钱天经地义,但不是所有的债都要还。
可以选着与技术债共存,它可以带来很多好处。
企业在快速上升的过程中,技术也随之提升。
在支撑业务快速演进,项目需求、公司探索发展的不确定性。
技术设计很难准确把控系统的范围,导致软件设计缺陷、过于设计。
技术人员的能力,就像有钱的人,讲究吃得好不好、健不健康。
而没钱的人讲究能不能吃饱、有没有吃得一样。
对于低端的技术开发来说,根本不讲究什么负债不负债,能实现也算不错了。
用网络上的一句话来说:我都吃泡面了我还在乎健不健康。
同时,在设计和构建系统时,有意无意的权衡。
没有足够专业的技术规范,保持代码健康。
使项目缺乏干净的代码、文档和最佳实施方案。
技术在野蛮的生长,研发过程没有达到标准化。
技术在快速的迭代,产业技术的演化,几年前的完美解决方案,现在不完美了。
同时,紧跟技术的迭代,反而影响系统速率、安全和稳定,引发反噬。
这些都会产生无形的技术债。
技术债存在积极和负面共存现象。
技术有杠杆,加杠杆,有可能带来高的投资回报率。
有限时间内将精力用到最关注的地方。
尤其是新的产品和功能未能证实其价值的时候,用软件日后的空间换取现在发展的时间。
从这个意义上讲,MVP 不仅仅适用于创业公司,也适用于任何大小的公司。
对于技术债,很多管理者为之恐惧,其实这时管理者应该保持平常心。
存在技术债也说明项目在发展,团队在进步。
除了能发现债的存在,还要适时「还债」,作为管理者要有这种前瞻性。
当前高频使用的项目,影响到了组织发展,这类是急需偿还的,这类技术债不还,容易发生「技术破产」,前期所有的工作都白费,所有代码必须「完全重写」。
对于这类技术债和现实生活中的债务一样,如果现在承担,那么今天得到更多,有价值的东西,并在一段时间内偿还。
技术债将给组织带来长期的成功,从而产生战略杠杆。
对于消极方面,管理者应具备强烈的「还债」意识,为未来更多考虑,减少未来欠账,对团队和项目都有很好的结果。
技术债的平衡,系统是有新陈代谢的有机体。
软件也需要新陈代谢,这意味着新的代码不断加入,旧的代码也要不断删除。
生物体里细胞坏了会重新造,组织死了会重新生成,保持技术债动态的平衡。
不要让技术债成为一场指责游戏。
技术债的争论充满指责,我见过一些管理者这么说:
“如果你一开始就提出一个更好的解决方案,我们也不会出现现在这种情况。”
这种争议毫无意义,没有什么是完美的。
我们都是人,时移世易万物变迁。
我们能做的,便是从错误中吸取教训,应用良好的实践,尽可能地清楚所有的决策的利弊权衡。
建立良好的对外沟通渠道。
时刻掌握软件使用情况,对遇见的问题做好记录,并复盘分析,这是发现技术债最有效的方式。
对上只有一点,确保你和CEO信息一致。
CodeReview。
CodeReview提高技术人员自身能力。
不同阶段的技术人员可以相互学习,审查别人的代码,能够发现问题,同时也能学到更多的知识。
提高代码规范、技术文档,沉淀出一套属于团队的代码质量监管系统。
技术培训。
大部分程序员学习能力很强,部门内部培训还是很必要的。
一方面提升授课人的能力,另一方面扩大听课人的知识面。
培训从代码规范、熟悉业务、编写文档的思路开始进行。
有意的决策。
结合当前公司和团队现状,顺势在非未来和未来两种方式选型。
在规避技术债的同时,成本考虑对公司影响更大。
主人翁的意识。
管理者在分工时,要提高自身和团队人员的主人翁意识。
要求团队针对产品提出的需求,进行细节确认,通过某些途径,让需求更清晰。
研发过程中,可以采用流程图,将所有流程梳理一遍。
将技术难度、需求模糊做好记录,并及时提出来探讨。
如果有分歧的地方一定要及时沟通,达成共识。
最后的话
1、保持技术方面的健康是技术管理团队的工作。
2、技术债就是资本家和工程师之间的矛盾,工程师是为资本家做服务的所以技术债永远存在,要与技术债共存。
3、给偿还技术债的技术人员更多地鼓励和展现,因为在偿还过程中很难短时间看到结果。