序二
写软件的人有一大爱好,就是聚在一起,相互调侃自家的代码。“我司‘祖传’代码,‘五代单传’,无注释,如无字天书……”“我司代码相当的‘浪’,想重构吧,害怕一不小心大水冲了龙王庙……”
软件人员还有一个爱好,就是崇拜“银弹”。
前两年,银弹是敏捷、Scrum,搞得轰轰烈烈,但是实践下来,往往变成了管理者要求软件团队更快和更频繁出产品的工具:两星期一迭代,三个月出产品。架构设计往边靠,先出个MVP,再迭代,将来再重构……有更重要的需求了?没关系,这里加个if/else,那里复制一下代码就可以实现了。当敏捷变成了一种管理工具后,代码架构更加脆弱,用一个“摇摇欲坠”的架构去支撑不断变化的业务需求,要“敏捷”,只能996了。
近几年的银弹是微服务,但是微服务需要更强的业务建模能力和技术管理能力,否则实现和维护微服务系统只能是难上加难。
有时候,我很悲观地思考,变得“臭不可闻”是不是每个系统不可避免的命运?如果不是,靠什么才能避免代码的腐化呢?
我隐隐约约地觉得一个很好的架构可能是解决问题的办法。因为我在写代码前,如果没有业务压力,我可以优哉游哉地想个几天,等动手写代码时,头脑中的分治联合早已清楚,洋洋洒洒,如有神助;可是如果业务复杂繁忙,需要多个团队合作开发,就很难保证架构在演化过程中保持清晰健壮,也很难保证团队不走捷径、不做“变通”,更难以自动自觉地写出干净的代码为己任,而不会为了完成任务去堆砌代码。
可惜,我并没有深入且系统地思考解决方案。但是,本书的作者想了,更可贵的是,他做出来了。这本书从最底层的技术细节开始讲起,从命名、代码规范、设计模式,到技术人员的素养、技术Leader的修养,再到COLA架构和如何使用COLA架构快速开发系统。整本书的风格如我喜欢的代码一般,清晰、简洁、有力。
我尤其喜欢的是第11章“技术Leader的修养”。技术高手在任何公司都很重要,但是以我所观察到的情况,很多高手都是“救火队长”,哪里有火就扑向哪里,成为大家顶礼膜拜的“救火英雄”;或者有些所谓的高手只在纸上做架构,指点江山。我认为,真正的技术Leader是能够创建并且演进架构,在架构层面上帮助大家比较容易地写出好代码的人;是能够创建良好的技术氛围,以写好代码为荣,以写坏代码为耻,促使大家不停学习的人。张建飞分享了他的团队中一些很有意义的做法,使我深受启发。
好代码才是真正的银弹!COLA架构能够在架构层面上帮助程序员写出好代码、研读源代码,它是作者及其团队多年来孜孜不倦地践行工匠精神打磨出的系统产物。对于读者,我的建议是一边研读源代码,一边反复阅读本书,并进一步阅读书中推荐的其他书籍。我相信,不管你是刚入行的新人,还是工作多年、经验丰富的人,抑或是技术管理人员,都能从本书中收获良多。
2013年的“搞笑诺贝尔奖”中提到屎壳郎在迷路时能够利用银河导航。即使我们的工作是在维护“屎山”(Shit Mountain),也请不要忘记时时仰望星空……
Micro Focus架构师
陈萍
2019年7月