在我心里,程序员可以分为三个层次:普通程序员、工程师和架构师。
普通程序员是编写代码的人。编写代码的方式有很多,只要能让程序跑起来,能正确地处理业务流程和对数据进行计算,就可以说“会编写代码”。程序员需要熟悉整个程序的逻辑及处理过程,需要熟悉程序语言的特性,还需要熟悉一些计算机操作系统的交互调用方式,才能写出从用户侧交互,到数据和业务逻辑处理,再到与计算机系统交互的代码,有效地把用户信息、数据、业务和计算机串联和拼装出来。
插画来自《架构整洁之道》
然而,其中一些程序员发现,只让代码跑起来是不够的,因为这个世界是不断变化的,他们发现自己需要花更多的时间来维护代码:增加新的需求,扩展原有的流程,修改已有的功能,优化性能……一个人完全维护不过来,还需要更多的人,于是代码还需要在不同人之间轮转;他们发现代码除了需要跑起来,还需要易读、易扩展、易维护,甚至可以直接重用。于是,这些人使用各种各样的手段和技术不断提高代码的易读性、可扩展性、可维护性和重用性。我们把这些有“洁癖”、有工匠精精、有修养的程序员叫作工程师,工程师不仅仅是在编写代码,他们会用工程的方法来编写代码,以便让编程开发更为高效和快速。他们把编程当成一种设计,一种工业设计,把代码模块化,让这些模块可以更容易地交互拼装和组织,让代码排列整齐——阅读和维护这些代码就像看阅兵式一样舒心畅快。
但是故事还没完,这些拥有工匠精神的工程师们还是难以解决某些问题,这些人渐渐地发现,这个世界上有很多问题就像翘翘板一样,只能要一边,这一边上去了,另一边就下来了。就像要么用空间换时间,要么用时间换空间一样,你很难找到同时满足空间和时间要求的“双利解”;就像 CAP 的三选二的理论一样,这个世界不存在完美的解决方案,无论什么方案都有好的一面和不好的一面。而且,这些工程师还渐渐发现,每当引入一个新的技术来解决一个已有的问题时,这个新的技术就会带来更多的问题,问题就像有一个生命体一样,它们会不断地繁殖和进化。渐渐地,他们发现,问题的多少和系统的复杂度呈正比,而且不仅是线性正比,还可能呈级数正比,此时就越来越难做技术决定。但是有一些资深的工程师开始站出来挑战这些问题,有的基于业务分析给出平衡的方案,有的开始尝试设计更高级的技术,有的开始设计更灵活的系统,有的则开始简化和轻量化整个系统……这些高智商、经验足、不怕难的工程师们引领着整个行业前行。他们就是架构师!
感觉 Bob 大叔的系列著作好像也在走这个过程,Clean Code 教你写出易读、可扩展、可维护、可重用的代码,Clean Coder 教你怎样变成一个有修养的程序员,而Clean Architecture(《架构整洁之道》)基本上是在描述软件设计的一些核心理论与观念。《架构整洁之道》大体分成三个部分:编程范式(结构化编程、面向对象编程和函数式编程),设计原则(主要是 SOLID),以及软件架构(其中讲了很多高屋建翎的内容)。总体来说,这本书中的内容可以让你从微观(代码层面)和宏观(架构层面)两个层面对整个软件设计有一个全面的了解。
插画来自《架构整洁之道》
但是,如果你想从这本书里找到一些可以立马解决具体问题的工程架构和技术,恐怕你会感到失望。这本书中更多的是一些基础的理论知识,看完后你可能会比较“无感”,因为这些基础知识对于生活在这个高速发展的喜欢快餐文化的社会中的人来说,可能很难理解其中的价值——大多数人的目标不是设计出一个优质的软件或架构,而是快速地解决一个具体的问题,完成自己的工作。然而,可能只有你碰过足够多的壁,掉过足够多的坑,经历过足够多的痛苦后,再来读这本书时,你才会发现本书中的这些“陈旧的知识”是多么充满智慧。而且,如果有一天,你像我这个老家伙一样,看到今天很多很多公司和年轻的程序员还在不断地掉坑和挣扎,你就会明白这些知识的重要性了。
我个人觉得,这本书可视作架构方面的启蒙读物,但经验不足的读者一时间不会产生最多的共鸣。有 3~5 年编程经验、需要入门软件设计和架构的工程师或程序员,则完全会有不同的感受。
插画来自《架构整洁之道》
最后,我想留下一个观点和一组问题。
观点:无论是微观世界的代码,还是宏观层面的架构,无论是三种编程范式还是微服务架构,它们都在解决一个问题——分离控制和逻辑。所谓控制就是对程序流转的与业务逻辑无关的代码或系统的控制(如多线程、异步、服务发现、部署、弹性伸缩等),所谓逻辑则是实实在在的业务逻辑,是解决用户问题的逻辑。控制和逻辑构成了整体的软件复杂度,有效地分离控制和逻辑会让你的系统得到最大的简化。
问题:如果你要成为一名架构师,你需要明确地区分几组词语(如何区分它们正是留给你的问题),否则你不可能成为一名合格的工程师或架构师。这几组词语是简单 vs.简陋、平衡 vs.妥协、迭代 vs.半成品。如果你不能很清楚地定义出其中的区别,那么你将很难做出正确的决定,也就不可有成为一名优秀的工程师或架构师。
我相信这个观点和这组问题将有助于你更好地阅读并理解这本书,也会让你进行更多的思考,带着思考读这本书,会让你学到更多!
本文选自《架构整洁之道》Clean Architecture,电子工业出版社10月出版。
整洁之道再续新篇
Bob大叔封山之作
熔举世热门架构于一炉
揭通用黄金法则以真言
左耳朵耗子|余晟倾情作序
了解本书详情:https://u.jd.com/zzVkmM