不积跬步无以至千里
不久前,我参加了一次企业开发年会。在年会的五个分会场中,架构师与团队管理分会场人头攒动,场面格外壮观。这给我一种错觉,大有架构师多如狗,项目经理满街走的态势。然而,当我在演讲到架构与通用设计原则时,分明看到下面听众茫然的眼光。我心底一惊,有种不妙的感觉浮上心头。为了印证这是否错觉,我随意询问了听众几个问题。听众的回答让我的心拔凉拔凉的。原来,距离架构师的百花齐放,我们还有很长的路要走。对于这个行业,我们最大的问题并非不知其不足而盲目地自大,而是我们的软件从业人员内心已经浮躁了,这其中自然也包括我。每个纯粹走技术道路的开发人员都向往着架构师的头衔,却忽略了若要成为一名合格的架构师,需要经历的沉淀与历练。拿破仑的一句名言不想当元帅的士兵不是好士兵,激励着我们向着远大目标迈进。可是不要忘了,我们中国还有一句古话:一屋不扫,何以扫天下?
恰好在前几日,我应西南大学之邀,为计算机学院的学生们开展了一次讲座。讲座的题目为软件从业人员的五项能力修炼。我偷窃了Peter M. Senge 所谓第五项修炼的概念,不过内容上却是大相径庭。据我过往的经验,我认为软件从业人员必须具备如下五项能力:
l 实现域的逻辑思维能力
l 问题域的分析与抽象能力
l 业务域的建模与设计能力
l 未知域的学习研究能力
l 组织域的交流协作能力
这或许是我的一孔之见,却也是我沉思所得。这里所指的软件从业人员其实是片面的,我心底里的思想还是在向架构师靠拢,而且是面向技术设计的架构师。这五项能力正是架构师所必备。如果没有好的逻辑思维能力,就无法提供好的算法与实现,不能写出优美的代码;不具备分析与抽象能力,就很难解决纷繁复杂的需求问题,无法建立一个可以经得起考验的架构蓝图;架构师需要建模,无论是数据模型还是领域模型,无论是计划式设计还是演进式设计,模型都可以帮助架构师理解需求,进而帮助开发人员理解设计。
人类社会的发展总是充满未知,科学如璀璨的星空指引我们探秘与求索。软件开发同样是一门科学,它的善变是永恒的。站在高端的架构师,如果不具备良好的学习研究能力,因循守旧,故步自封,最后就会湮没在变化的浪涛中。软件开发需要团队,脱离交流与协作的架构师,就如匹马单枪的堂吉诃德挑战风车,结果是头破血流,败得一塌糊涂。交流的重要性不言而喻,一个再好的设计,如果没有合适的方式表现出来,并能够被人理解,它就是无用的。架构师的成长漫长而充满艰辛。是否能够成功,除了需要远大的目标,还需要脚踏实地。最近,我阅读了两本好书。一本是Kent Beck 所著的《实现模式》,另一本是Robert C. Martin的《代码整洁之道》。他们是举世公认的设计大师,但在这两本书里,他们谈的不是架构,而是代码,是实现。荀子曰:不积跬步,无以至千里;不积小流,无以成江海!架构师站得高,所以望得远,但如果根基不稳,就极容易跌下来,摔得屁滚尿流。窃以为,不浮躁而保持虚心,不畏难而坚定执著,不偏狭而开放进取,此乃架构师成功之道。不知读者诸君,意下如何?