image 是否有程序员奢侈地想过,加入这样一个团队:那些世界上顶尖的架构师坐在你的身旁,与你结对设计;或者当你遭遇难题时,亲自为你指点迷津;或者在架构评审时,为你点评架构的优劣。他们态度优雅,行动举止之间透露出Geek的风范;他们不厌其烦,展现出非凡的技艺。他们作为你的导师,言传身教传承着优良的软件工艺。这些顶尖的架构师或者声名显赫,或者技术超群。他们是Neal Ford,Michael Nygard,Bill de hOra,Rebecca Parsons……

 

我知道,你认为我在讲述天方夜谭。没有哪个程序员可以这样奢侈,可以这样幸运。

 

不错,这确乎是我的幻想。不可求,不可遇。然而,书却可以拥有这样的魔力,可以让这样的幻想得到实现。感谢Richard Monson-Haefel荟萃了这样一个团队,并将他们带到每一个读者身边,那就是这本薄薄的小书《软件架构师应该知道的97件事》。

 

我不想为这本书唱赞歌,然而阅读此书,确实让我受益匪浅。以下是我在阅读本书时摘要的笔记:

在大型软件项目中,关注根本复杂性,消除偶发复杂性,抽丝剥茧制订解决方案,才是真正的挑战。……应该尽量选择源自实际项目的框架,警惕那些象牙塔里的产品;分析方案中有多少代码直接用来解决业务问题,有多少只是用来实现用户与应用的交互;谨慎使用软件厂商在幕后推动的方案,它们并非一无是处,但往往包含偶发复杂性;要量体裁衣,为问题制订“合身”的解决方案。

沟通必须简明清晰。没有人愿意阅读冗长的架构决策文档,架构师言简意赅地表达观点是项目成功的必要条件。项目启动之初,凡事能简则简,千万不要一头扎入冗长的Word文档里。可以借助工具,比如简单的Visio图表来表达你的想法,尽量画简单些,毕竟时过境迁,想法总会变化。非正式的白板会议是另一种有效的沟通手段,把开发人员召集起来,在白板上写下你的想法,比任何方法都来得有效。

假设有另外不同的团队打开了代码库,他们很容易便可了解到当前在做什么,这是优秀架构的基础。无需对架构进行过度的简化或为之准备面面俱到的记录文档;好的设计会以多种方式说明自身。

 

类似这样的架构箴言,在本书俯拾皆是。不要认为这些言论仅仅是泛泛而谈,仔细分析,你会发现其中蕴含的真理令人深省。不错,阅读本书无法让你成为一名优秀的架构师,毕竟本书并不是要传授架构的技巧,但它却能开拓你的视野,让你认识到软件架构以及架构师的诸多方面。正如本书的译者序写道:

全书由97篇格言式散文构成,没有高调的说教,没有抽象的术语,而是以平实、幽默、智慧的笔触,将他们认为对成为优秀软件架构师而言至为重要的精髓和盘托出。全书犹如一块玲珑剔透的水晶,97个切面折射出来的都是出自一线软件架构师的专业智慧。

 

本书不是为初学者准备的,那些经验之谈对于初学者而言,略显隔靴搔痒;只有真正战斗在一线,并曾经为设计难题而头撞南墙,或者技术水平发展到了一个瓶颈期的架构师或者软件设计与开发人员,在阅读这些话语时,才会搔中他的痒处。就好比孙悟空听菩提祖师说法,手之舞之,足之蹈之,那是因为他听到妙处,体会了各种玄妙,所以才会喜不自胜,不觉作出踊跃之状。