代码的屎山_风闻
code2Real-有人就有江湖,有code就有bug2021-07-17 10:32
在软件行业,大量低质量遗留代码堆积如山,没有人清理打扫,没有人维护更新,被称为“屎山”。
刚毕业时,很想提高代码编写质量,还学习了林锐博士的《高质量C/C++编程》。
后来发现,事实根本不是那么回事,存在即合理。
原因是多方面的:
1)没有几个人能看懂旧代码的逻辑,代码的业务逻辑很少能在文档中写得明明白白的。
因为没人愿意为写文档付钱,所以文档能少写一点是一点。没有人检查文档的质量。
差的文档影响代码的维护质量,但没人愿意提高文档质量。
许多代码中的业务逻辑被程序员带进了坟墓。
即使觉得自己能看明白,自己的理解就是原作者的意思吗?
郢书燕说,就是曲解他人意思的最好注释。
如果不明白代码的业务逻辑,所以尽量不要修改旧代码,因为没人知道修改后会带来什么样的后果,旧代码能用就不要修改更新。
2)不想花那个钱
不要相信什么管理学书《追求卓越》,卓越是有成本的,而且代价巨大,一不小心就让人破产。
作为一个人,难道每天出门都会把自己打扮成最好的状态么? 成绩优异学生,是否应该在打游戏上也要全方面碾压才能算优秀?有钱人是否要把生活起居的所有用品全都换成顶级奢侈品才算有钱?
优秀,卓越,不是免费的,是有代价的。
公司的技术也是这样,技术是要钱去开发的。在很多情况下这种“优秀状态”的维护是非常烧钱的。维护得那么好,不出几年,等到新的技术出来,代码又会变成屎山。
所以管理层的思路基本上就是用到代码严重拖慢公司效率之后再开始做新的,而不是时刻把技术保持在一个高位状态。
技术优势很像是物理学中的势能,而且技术优势更像是用人力去推起来的势能,这种势能无时无刻不再消耗资源。
系统总要有人去维护,如果你把技术人员解散,如果未来如果有新团队接手的话是很难接上手的。而且大部分技术人员也很讨厌在屎山里大扫除,因为到处都是屎,完全没法清理干净。
3)没有功劳
技术岗位也清楚得很,只要不崩溃,凑合能用,领导就不会找自己麻烦,那么就把东西做到刚刚满足领导要求,多一分的优化都是浪费,反正领导也不会多给钱。不求有功,但求无过。
把一个旧代码打理得干干净净,都不值得吹牛。
4)保护老员工利益
如果技术很好,代码很优美,那么就会削弱资历老,但没啥本事的老技术人员的优势。
因为代码很漂亮,那么新来的实习生很容易接手,老技术人员工资那么高,为何不直接开掉?
但是代码很垃圾,这就会把公司技术人员拉到一个纯粹比拼资历的状态中去。
老员工肯定是知道自己和同事早年在“屎山”的哪块地方拉的屎,哪个地方是干的,哪个地方是稀的。
这就不是一个牛逼哄哄的新人能接上趟的了,新来的没看过老员工拉屎,自然也不懂屎山哪个地方会窜稀。
这也是为什么领导最好懂技术的原因,因为如果领导不懂技术,那么手下的技术员很容易忽悠住领导,即使你把手下炒掉,换新的,技术人员还是选取那些写起来最方便,但对公司来说后期不好维护的框架和规范。
这时候领导要非常明确的指出技术路径,这样才能避免手下的团队被某个技术高管,忽悠着走上邪路。
另外这种屎山写法也是导致程序加班的主要原因,只要程序员加班多,那么这些程序员就会花大量时间低效率的维护垃圾代码,而没有时间去提升自己,或在家里创业,然后跳槽。这样对公司来说也就是多点工资而已,而不会伤及根本。
5)技术不是第一位的
很多人以为公司是技术推动的,大错特错,公司是权力和财富推动的。
只要权力,财富足够,技术这东西请人慢慢弄就好了。
所以公司的管理层即使是技术出身,也不会对技术有非常执着的追求,到了一定级别他们就会去玩弄“权术”和“财富”,而把技术交由其他技术人员打理,毕竟打理技术是非常吃力不讨好的工作,技术迭代又很快,如果不持续投入就很难保持领先。
而“权术”就更好维护一些,只要多见面吃饭,多聊聊天,交换一下资源和利益就好了。
“财富”就更容易了,只要把钱投出去,等就完事了,在金融圈子里,这种方法被美其名曰“价值投资”。
所以公司高层的行为永远是保持现金流的稳定,而不是一味追求技术。
公司的成败取决于现金流,而技术、管理、企业文化等只是辅助现金流的工具。
说公司可能很难理解,我们来说人。
为什么有人看上去很傻,但是还是活得好好的?
因为人类的存活靠的是消化系统、代谢系统,血液循环系统、免疫系统等。
这也解释了为什么世界上大多数人不聪明的,却还是能活得挺好的原因。