阅读:2373次   评论:4条   更新时间:2011-05-26    

架构师必须写代码

——   高效程序员的 45 个习惯之习惯39

 

“我们的专家级架构师Fred会提供设计好的架构,供你编写代码。他经验丰富,拿的薪水很高,所以不要用一些愚蠢的问题或者实现上的难点,来浪费他的时间。”

 

 

软件开发业界中有许多挂着架构师称号的人。作为作者的我们,不喜欢这个称号,原因如下: 架构师 应该负责设计和指导,但是许多名片上印着“架构师”的人配不上这个称号。作为架构师,不应该只是画一些看起来很漂亮的设计图,说一些像“黑话”一样的词汇,使用一大堆设计模式 —— 这样的设计通常不会有效的。

 

不可能在PowerPoint 幻灯片中进行编程                You can’t code in PowerPoint

 

这些架构师通常在项目开始时介入,绘制各种各样的设计图,然后在重要的代码实现开始之前离开。有太多这种“ PowerPoint 架构师”了,由于得不到反馈,他们的架构设计工作也不会有很好的收效。

 

一个设计要解决眼前面临的特定问题,随着设计的实现,对问题的理解也会发生改变。想在开始实现之前,就做出一个很有效的详细设计是非常困难的(见第 48 页上的实践 11 )。因为没有足够的上下文,能得到的反馈也很少,甚至没有。设计会随着时间而演进,如果忽略了应用的现状(它的具体实现),要想设计一个新的功能,或者完成某个功能的提升是不可能的。

 

作为设计人员,如果不能理解系统的具体细节,就不可能做出有效的设计。只通过一些高度概括的、粗略的设计图是没有办法达成对系统的理解的。

 

这就像是尝试仅仅通过查看地图来指挥一场战役 —— 一旦开打,仅有计划是不够的。战略上的决策也许可以在后方进行,但是战术决策 —— 影响成败的决策 —— 需要对战场状况的明确了解。

 

可 逆 性

“程序员修炼之道”丛书中指出 不存在所谓的最终决策 。没有哪个决策做出之后,就是板上钉钉了。实际上,就时间性来看,不妨把每个重要的决策,都看作沙上堆砌的城堡,它们都是在变化之前所做出的预先规划。

 

新系统的设计者  Donald E. Knuth
新系统的设计者必须要亲自投入到实现中去。

 

正像 Knuth 说的,好的设计者必须能够卷起袖子,加入开发队伍,毫不犹豫地参与实际编程。真正的架构师,如果不被允许参与编码的话,他们会提出强烈的抗议。

 

有一句泰米尔谚语说:“只有一张蔬菜图无法做出好的咖喱菜。”与之类似,纸上的设计也无法产生优秀的应用。设计应该被原型化,经过测试,当然还有验证 —— 它是要进化的。实现可用的设计,这是设计者或者说架构师的责任。

 

Martin Fowler 在题为“ Who needs an Architect ?” [1] 的文章中提到:一个真正的架构师“……应该指导开发团队,提升他们的水平,以解决更为复杂的问题”。他接着说:“我认为架构师最重要的任务是:通过找到移除软件设计不可逆性的方式,从而去除所谓架构的概念。”增强 可逆性 是注重实效的软件实现方式的关键构成部分。

 

要鼓励程序员参与设计。主力程序员应该试着担任架构师的角色,而且可以从事多种不同的角色。他会负责解决设计上的问题,同时也不会放弃编码的工作。如果开发人员不愿意承担设计的责任,要给他们配备一个有良好设计能力的人。程序员在拒绝设计的同时,也就放弃了思考。

 

优秀的设计从积极的程序员那里开始演化
积极的编程可以带来深入的理解。不要使用不愿意编程的架构师——不知道系统的真实情况,是无法展开设计的。

 

切身感受

架构、设计、编码和测试,这些工作给人的感觉就像是同一个活动 —— 开发 —— 的不同方面。感觉它们彼此之间应该是不可分割的。

平衡的艺术

  • 如果有一个首席架构师,他可能没有足够的时间来参与编码工作。还是要让他参与,但是别让他开发在项目关键路径上的、工作量最大的代码。
  • 不要允许任何人单独进行设计,特别是你自己。


[1]      http://www.martinfowler.com/ieeesoftware/whoNeedsArchitect.pdf

 

 

 

评论 共 4 条 请登录后发表评论
4 楼 Durian 2010-01-21 10:22
国内很多公司还是相信有银蛋的存在,架构师往往就是扮演了这个角色。
以为,只要有个牛逼的架构师,搞好了设计,剩下就是毫无技术含量的coding工作了。
其实,蠢猪一样的设计也会被coding出来的。只是公司的领导不会见到更优秀的实现而已。外行领导内行,往往出现杯具。
3 楼 libinsoft 2010-01-02 21:38
真正的高手都是从代码中走出来的,国内有很多人自以为是是架构师,其实水平很一般.搞不懂.
2 楼 freedomstyle 2009-12-31 15:37
我见过好多在校学生都拿到架构师的证,其实啥也不写。架构师不会程序,我觉得太不可理解了
1 楼 wangjian5748 2009-12-30 09:17
非常同意这个道理,本人一直就是这样做的,可惜。现实工作中,很多傻人就觉得架构师不需要编码。

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics