《代码精进之路—从码农到工匠》读后感

2023-04-29  本文已影响0人  夫礼者

书名趋同于《程序员修炼之道 - 从小工到专家》。

1. 前言

两年前刷微信公众号推文时,偶然看到对于COLA架构的介绍,同时了解到阿里云平台将COLA作为推荐项目样例模板。笔者自己对构架的思考也一直在迭代,于是花了些时间认真了解了下这个COLA架构,在此期间知晓作者出版了这本《代码精进之路—从码农到工匠》,同时在找到的介绍性文章中看到了作者书中所引用的“成长型思维和固定型思维对比图”。

正是这张图让笔者决定购入这本书。不论是作者对COLA背后的思想的介绍,还是书中引用的这张图,都能让人对这本书本身的质量有一定的信心,而且也很好奇作为一个能够取得如此成就和思想的人,他对世界的看法是怎么样的? 我是否能够有所借鉴?


2. 全书印象

相较于一般的技术类书籍,这本书的厚度属于偏薄的。而其内容所涵盖的又比较多,从技艺,思想和以COLA作为范例的实践,三个角度去分享自己的经验。这就势必使得这本书不会纠结于技术细节。

  1. 技艺篇中,作者从最基础的命名开始,延伸到规范、函数、设计原则、设计规范以及模型和DDD,从细部到大局都有涉猎,从这里面就可以看出作者扎实的技术功底和面对复杂性的大局观,属于是进可以敲得一手号代码,退可以排兵布阵,指点江山的全能型人才。
  2. 思想篇中,作者以软件开发领域为例,介绍了人类控制复杂度最重要的两个方法:抽象和分治。同时从技术人和技术Leade两个角度,分别探讨了应该具备的素养,给读者指明努力的方向。
  3. 最后的实践篇,作者介绍了COLA架构的思路和实现,以及以COLA架构为基础搭建的工匠平台实践思路,属于是理论完毕之后的验证性实践了。

3. 一些思考

整本书看下来,其实大部分观点我在过往阅读过的经典中都已经见识过多次了,但这本书依然给了我一些更具实践意义的启发。

3.1 规范的意义

首先是第二章中对于规范的解释。我们总是强调规范,规范,但始终有一种有力使不出的感觉 —— 为什么强调规范? 过往我们给出的答案都过于口语化,什么统一之后维护成本低啊,人员变更之后对系统造成的冲击小等等。

而本章中,作者开门见山点明了:

事物的复杂程度在很大程度上取决于其有序程度,减少无序能够在一定程度上降低复杂度,这正是规范的价值所在。

认知是有成本的,而混乱的代价在于让我们对事物无法形成有效的记忆和认知,导致我们每次面对的问题都是新问题,每次面临的场景都是新场景,又要重新理解一遍。

软件工程中,许多必须控制的复杂性是随心所欲的复杂性。

规范的意义在于可以将规则性的东西固化下来,尽量减少随心所欲带来的复杂度。一致性可以降低系统的复杂度。

3.2 行动和进展,忙碌与多产

懒惰的对立面除了勤奋之外,也可能是“硬干”或“苦干”。后两者并没有带什么光环,而是一种徒劳、低效、大可不必的努力,只会说明你做事很急切,但并不是在完成工作。人们容易混淆行动和进展的概念,混淆忙碌与多产的概念。

在有效的工作中,最重要的是思考。一个总是很忙碌的程序员,可能并没有用到他最有价值的工具 —— 自己的大脑。因为人在思考的时候,通常看上去不会很忙。


3.3 Leader 之提升团队技术氛围

作者在“技术Leader的修养”一篇中,介绍了不少可落地的实践,就我个人目前而言,感触比较深刻的应该就是团队技术氛围的养成。

过往在阅读过数本技术管理类书籍之后,于朦朦胧胧中我感觉当前技术团队中存在向心力问题,于是顶着压力坚持一周一次分享,将自己所解决问题的方案和思考过程记录到文库中并不断找机会输出给相关人员,这个过程至今为止已经做了五年多,由一开始的懵懵懂懂,到不断明晰自己想要改变的是什么。

不得不承认,五年之后的现在,改变微乎其微,但能够看到自己的理解没有偏离正确的道路,确实是一件值得开心一下的事情。

3.4 不要教条

整本书下来,如果说我印象中出现比较多的,除了控制复杂度之外,就是这个"不要教条"了。

作者每每在介绍诸如设计模式,DDD思想等等的时候,都会再次强调"不要教条",看到后来我不禁有些好笑 —— 这是经历了多少场景才形成这样的条件反射,都整出PTSD了吧。

本书的最后一章的最后一个小节的结束语正好用来作为本小节的结束语:

不同的业务场景面对的问题域不一样,COLA并不是必选项。万物流变,不用教条。但无论怎样,我们做好设计,写好代码的初心不应该变,持续精进和持续学习的热情不应该改变,追求卓越和工匠精神的决心不应该改变。

3.5 让业务先赢

本书中作者只是陈诉其观点时顺带提及了这几个字,也不是什么新观点,算是"技术是为业务服务的"的翻版,但正如人类的历史是一个循环一样,这个观点被不断被不同人的人所领悟的同时,也是被前赴后继的人所违背。

在兼顾一定前瞻性的同时,作出最适合当下的技术决策,尽快达成业务目标,这才是一个公司愿意支付技术这一项成本的目的。 在你能够跑到业务前面,用技术引导业务之前,最好收起"技术为王"的圈地自萌思想,这才是一个成熟的职场人,技术人的表现。

3.6 奥卡姆剃刀原理

"如无必要,勿增实体",这真是一个常看常新,每过一个阶段再看都会有新感悟的句子。

作者基于这个思想,将COLA从2.0重构到3.0,然后到现在的4.0。而笔者自己呢,在日常的工作中,除了即使到了现在,在行业内浸淫了这么多年之后,依然会陷入过度设计的怪圈之外,也看到了兄弟部门的软件只靠主观臆断增加的新功能,加入的新的技术复杂度,导致了无谓的成本增加。这样的场景一再出现,并且未来也一定会持续再现。

4. 收尾

行文至此,特意去看了下购书时间,本以为是一年前买的,没想到到目前为止,这本书躺在书架里已经超过两年了。

这本厚度刚过两百页,对于其中介绍的大部分基础思想已经内化于心的我而言,读取来还是比较轻松的,也许正是因为这个原因吧,所以整个阅读过程还是挺流畅的,可以感觉自身在阅读过程中的那种放松,完全不似《技术的本质》,《金字塔原理》这类于我而言需要需要反复推敲,读起来有一定精神压力的著作。

总言之,非常推荐打算走技术路线的同学读一下这本书,尤其是那些看书困难户。这本书读取来没有那么大的精神压力,而其中所讲诉的却都是一些能够让你在职业生涯中持续受益的基础能力和认知,早点知晓并开始持续实践,有助于职业生涯的平稳,以及职业天花板的突破。

5. 引用

  1. 应用架构COLA 2.0
  2. 应用架构COLA3.0:让事情回归简单
  3. COLA 4.0:应用架构的最佳实践
上一篇 下一篇

猜你喜欢

热点阅读