一个人太不切实际,我们称之好高骛远;一个人有眼界视野,我们称之高瞻远瞩。同样是高、远,为何描述着两种完全不同的人?因为前者的好、骛讲的都是追求,而后者的瞻、瞩,指的却是具体的行动。当我们把高远的目标只作为一种追求,而不付诸于实践的时候,就是不切实际;当我们把它变成“时时顾看”这样的行动时,我们就渐渐地变得有眼界视野了。

所以志存高远并没有错,只是要切忌不务实。这里的“着眼于高远”,便是架构师的基本修养,而几乎所有的架构思维,都从这修养中来。

就架构来说,“高”就是指空间上的可拓展性,即系统的复杂性是否可以通过组成部件的增减来解决;“远”就是指时间上的可持续性,即系统的规模是否可以划分为多个时间阶段来实施。以软件架构为例,在讨论系统——这一架构目标的属性时,架构师可能关注的话题包括性能、可用性、可靠性等十余种,我们可以通过高、远两个维度的思考将它们大致地分类,如图4-1所示 。

enter image description here

如果我们说,这样的图是没有意义的,因为它对一个工程的具体实施毫无意义,那么这是项目经理的思维;如果问这样的图是如何以及用什么样的工具做出来的,又或者讨论填以什么样的颜色更为漂亮,那么这是程序员的思维。但是,如果我们问:在这个图的形成中,我们做了什么?那么,这就是架构师的思维了。

如上这些谈论,总的来说包括了修养与思维这两个方面。其论述为:

(1) 我们做了一个语言文字中的高、远与架构思维中的高、远的比拟;

(2) 我们对架构思维中的高、远进行了明确的定义;

(3) 我们将既有的架构方法置于上述定义,并尝试消化其中的冲突;

(4) 我们确定上述思维的结果,是一种架构产出;

(5) 我们通过对比找出几种思维模式的差异,并确定上述过程,即是架构师的思维;

(6) 我们通过回顾这一过程,证明架构思维过程的有效性:产出上述的架构。

在上面,我们反复地运用架构思维,得到了两个主要的架构产出,其一是“架构师的基本修养”,其二是“架构师的思维过程”。在这个过程中,不同阶段我们使用了不同的思维工具,如表4-1所示。

enter image description here

任何一个优秀的架构师都有自己独特的思考方式,这决定了他如何抽象系统,以及如何“创造性地”设计与构画这个系统。例如,我们一直在讨论的“架构思维”——这样一个内在的系统与规则都是未可知的新东西。对此我们没有现成的、成熟的词汇去描述它,因而必须构建一个抽象系统,或映射或重现这个“架构思维”,进而阐述清楚它的架构与逻辑。

在这个过程中,我们需要三种能力:概念抽象能力、概念表达能力和基于概念的逻辑表达能力。我们已经展示了概念抽象能力,即上述步骤中的第1~3步;概念表达能力,即图4-1与表4-1;概念的逻辑表达能力,即上述步骤中的第4~6步,以及至此你所看到的全部过程。