首页 » 程序员必读之软件架构 » 程序员必读之软件架构全文在线阅读

《程序员必读之软件架构》建造大师角色的差异

关灯直达底部

多数看法都一样:建造大师并没有太多时间去建造,尽管他们具备这样的技能。回到软件行业,软件架构师应该写代码吗?我直截了当地回答:“理论上,是的。”更完整的答案可以在这本书 里面找到。为什么?因为技术不是一个实现细节 ,你需要理解为自己的决定所做的取舍。

那么现代建筑师为什么不为实际的建造过程出力呢?为了回答这个问题,我们要看看这个角色这些年是如何演化的11 :

11 http://en.wikipedia.org/wiki/Architect

在古代和中世纪的历史中,大多数建筑设计和建设都是工匠完成的:下至石匠和木匠,上至建造大师。直到现代,建筑师和工程师之间也没有明显的区别。在欧洲,建筑师和工程师的头衔主要因地域不同而经常交替使用,但指的都是同一个人。

结构工程的维基百科页面12 提供了更多信息:

12 http://en.wikipedia.org/wiki/Structural_engineering

自从人类开始修筑属于自己的结构,结构工程就出现了。在19世纪末的工业革命期间,建筑专业体现出了与工程专业的不同,成为一个更正式的专业。直到那时,建筑师和结构工程师通常还是同一个人:建造大师。19世纪和20世纪初,随着结构理论专业知识的发展,专门的结构工程师才开始出现。

本质上,传统建筑师的角色已经分化为两种。一种是结构工程师,确保建筑物不倒塌;另一种是建筑师,负责与客户交流,收集他们的需求,从美学的视角进行建筑设计。马丁·福勒(Martin Fowler)的bliki13 有一个页面谈到了两种角色差异的意义:

13 http://martinfowler.com/bliki/BuildingArchitect.html

软件架构师被看作是首席设计师,是把项目的每件事凝聚在一起的人。但建筑师可不会干这些。建筑师关注的是与想要建筑的客户交流。他的精力集中在客户觉得重要的事情上,比如建筑的布局和外观。但建筑也不仅限于此。

因其背后蕴含的包括物理定律在内的丰富知识,建筑现在被看作是一门工程学科,这些知识能够建模和预测建材的行为。相比之下,软件开发行业还比较年轻,正以惊人的速度发展。今天的建筑大多还是使用和几百年前相同的材料,但似乎我们每20分钟就会发明一种新技术。我们生活在“互联网时代”。除非我们这个行业发展到软件的构建方式和预测工程项目相同,否则团队中有人一直跟随技术的发展,有能力做出如何设计软件的正确决策,还是很重要的。换句话说,软件架构师还需要扮演结构工程师和建筑师的角色。