Posted on 2005-12-17 16:40
非鱼 阅读(3166)
评论(16) 编辑 收藏 所属分类:
面向对象设计
今天被鄙视了一下。一个编码比我好的朋友说:“非鱼,说实在的,我挺鄙视你搞的架构师小组的。基本功不扎实,就搞什么架构师,是我一向鄙视的行为。”其实我自己也认为自己不是一个合格的架构师,或许勉强算是一个预备役的架构师吧。
但这并不影响我对于架构师职业的理解和学习,而我也愿意把我的学习经验和大家分享。目前国内真正的架构师还是极少的,我以“架构师”来称呼自己,算是自
诩,但更是自勉。我建立“架构师之家”这样一个团队BLOG,更多是想加入的人(多半还不是架构师吧)一起学习进步,所谓每月至少一篇关于架构师的文章算
是一种督促吧。
朋友的意思,如果我没有理解错的话,基本功是指的编码。没有写过代码的人来做架构师,是一个笑话。但如果只有Anders
Hejlsberg这样的人才能成为一个架构师的话,恐怕这个世界上的架构师就太少太少了。每个人都可以向Anders
Hejlsberg学习,但不是每个人都要成为Anders
Hejlsberg。我认为一个架构师应该对编码很精通,能够掌握各种数据结构和大部分算法,知道何时何地应用何种数据结构和算法。这样应该足够了。
架构师应该精通分析和设计。架构师应该比常人容易理解事物的基本原理,具有正确的分析手段和良好的认识论、方法论基础。掌握各种设计原则和模式是一个架构
师的职业要求。架构师应该具有一定的领导能力,带领一个团队。架构师应该具有良好的沟通能力,和客户沟通以确保产品满足其需求。
架构师往往没有一个他“自己”的产品,如Martin
Fowler,这个牛人也没有什么架构产品吧?架构是产品的基础,但架构本身不是一个产品,架构师所做的都是幕后工作。架构师是编剧,重要而不如导演名气
大,但Hollywood是编剧负责制,不是导演负责制。有激情的程序员不屑于架构师,因为架构师没有一个产品。
架构师需要考虑满足多个风险承担者的利益。站在不同风险承担者的角度权衡利弊,尽可能满足所有人的要求。他象一个走钢丝的杂技艺人,最终会为自己的成功表
演而感受内心的愉悦。但架构师不是无原则的走中庸之道,他的原则就是所有风险承担者的利益。
成功的架构师会把杀手特性扼杀在摇篮之中。他不允许一个程序员过度考虑一个看上去非常吸引人但代价高昂的特性(中国称“亮点”)或高性能的实现。因为这会对整个产品的发行造成负面影响,甚至于导致项目失败。
架构师对于产品质量的敏感是程序员做不到的。他从全局角度考虑质量,并把这些质量的属性反映到产品中。
“另外作为架构师还要考虑的问题很多,甚至比技术架构更重要如授权模式、部署模式及成本、维护方案、安装及升级方案、商标及商标的相关元素、发布及发布管
理、安全因素、市场因素及技术市场架构(个人认为这个因素最难也最重要)” ——
Donald