死循环

祝坤荣

系统复杂度,是伴随着系统的不断进化逐渐产生的,事情的开始都是美好的。

系统的进化是件很有意思的事,不在这个行业的人不理解他们每天要用的各种软件为何这么复杂,需要这么多的工程师没日没夜的加班。所以在知乎上就有了这种问题:

“为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?”
参看网址:https://www.zhihu.com/question/20303645

前淘宝员工,《淘宝这十年》的作者子柳还在这个问题后面后面做了挺通俗的解释。在他的答案后还有挺多答案。略过这些长篇文章的专业解释,结论其实就是事情做大了,很多之前你认为不是问题的东西都成了问题。

作为实际参与开发IT系统的人,很多程序员有一种倾向,喜欢一切尽在掌握中的感觉。如果理解不了,参考一下时下流行的工匠精神,百科对其的定义是:

工匠们喜欢不断雕琢自己的产品,不断改善自己的工艺,享受着产品在双手中升华的过程。工匠们对细节有很高要求,追求完美和极致,对精品有着执着的坚持和追求,把品质从99%提高到99.99%,其利虽微,却长久造福于世。

技术人员往往要在实际工作中能否彻底贯彻自己对于标准的要求进行不断地平衡,在各种工期倒排的恶劣情况下,还能不能维持对于高品质代码的追求,还有几天就是deadline了,测试代码还要不要写了,测试的覆盖度能不能达到,用户看不见的地方能不能做到更好。这种问题并不是软件行业的专利,我们每天都会遇到。比如厨房里的员工有没有严格遵守卫生的规章,4S店的维修技师有没有按照厂家的规定完整的做了每一道检查,保洁阿姨有没有清理了所有的卫生死角,以上描述的行为最终都指向专业素质-职业道德,而在中国很多行业监管缺失的情况下演变成了看良心,靠宗教上的理念让人相信下地狱,这里就不展开了,法律与道德还是留给社会学者去研究吧。

让我们回到软件,最初的软件系统开始都没有那么复杂,一开始都是简单的。一个有幸能存活超过一年的系统,如果恰好又迎来用户的爆发性增长,企业经营者与产品经理就会提出更多的想法让软件往预测的道路上走。这时有可能原来为10W用户设计的用户表就不能支撑了,要在业务爆发到500W用户的时候依然能保证不算太差的登录体验,偶尔创业公司并没准备好遇见到这种情况;如果业务线性增长对于技术人员倒是件好事,技术负责人能知道何时能遇到瓶颈,留给自己的时间窗还有多久,并开始进行合理的人才储备和技术储备,好吧,其实还是人才储备,东西都是人做的。

尽管如此,小而美的系统仍然是厌倦了大公司各种复杂系统,流程,部门的开发者的最爱,系统的每一块代码都知道是用来做什么的,出了问题马上就能推测出是在哪里出的问题。这只是个理想情况,当引以为傲的系统运行了以年为单位后,这个循环又开始了,后来者又开始往那个曾经小而美的系统上吐口水了。


文章来自微信平台「麦芽面包」
微信公众号「darkjune_think」转载请注明。
如果觉得有趣,微信扫一扫关注公众号。
图片描述

阅读 1.1k

麦芽面包
杭州程序员乱弹,聊技术,看世界。兴趣方向互联网分布式系统稳定性建设,容量规划,压测,监控,容灾多...

科幻影迷,书虫,硬核玩家,译者

1k 声望
1.5k 粉丝
0 条评论
你知道吗?

科幻影迷,书虫,硬核玩家,译者

1k 声望
1.5k 粉丝
宣传栏