Who needs an architect?---Martin Fowler
英文及译文下载链接:http://pan.baidu.com/share/link?shareid=163291504&uk=1428554614
1、文章主题总结
首先我们从文章的几个小标题看每部分讲了哪些:
1.1 What's architecture?
作者在写他的著作 Patterns of Enterprise Application architecture 中尝试将architecture定义为:define architecture as a word we use when we want to talk about design but want to puff it up to make it sound important. 即Martin认为architecture一词被滥用,大家在想要说明某个东西重要时,就加上architecture这个名号。
另外Martin赞同Ralph Johnson的观点:对architecture的定义依然是:组件和组件交互的接口。不同的是,这些组件和接口是被expert developers所共同认可的。他强调人的重要性。expert developers认为重要的才是真正重要的,才是可以加到architecture里的。并且不是一个人,而是一群人,因为本来软件开发就不是一个人的活动。
1.2 The architect’s role
architect不应该是做所有决定的人,而是一个guide。guide本身是skilled,experienced的team成员,他引导其他人,保持与整个团队的通讯,从全局上指导developers更好的开发,并进而提高整个team的abilitity。
1.3 Getting rid of software architecture
开发过程中,change是不可避免的,所以我们采用这样的开发方法,它可以消除程序的不可变性(敏捷开发就是其中的一种方法)。而architecture可以define为人们认为程序中难以改变的成分。我们的目标是去不可变性(irreversibility),所以我们要去architecture。
2、我的观点
Martin很重视人在software development中的角色。现在软件理论技术实际上已经比较完善,但是项目开发依然面临很多问题,这些问题是因为缺乏真正的expert人才。有这样一张图:

从图中看出,programmers很多,但各公司依然在喊急缺,因为他们要的是experienced programmers。所以,人是目前software development成功与否的关键。
architecture很重要的一点是社交性。因为它不但依赖于软件,而且依赖于软件的什么部分是重要的,而其重要性是开发组大多数人的共识。这个很重要。因为一个搞土木的朋友曾说:建筑设计师做出的东西都很不负责,他们只为了好看,都不考虑设计出那样的图,是否真的可以实现。好多地方的承重什么的,他们都没有考虑。但是最终出名的都是他们。
因此有专门一个architect的组织不够合理,他分离了architect和programmer(真正的实施者)。因此拥有一个像guide那样的人很重要,如who needs an architect所言。
Who needs an architect?---Martin Fowler的更多相关文章
- 微服务(Microservices)—Martin Fowler【翻译】
本文转载自:http://www.cnblogs.com/liuning8023/p/4493156.html -------------------------------------------- ...
- (转载)持续集成(第二版)[来自:Martin Fowler]
转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...
- 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别
马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别 http://martinfowler.com/articles/injection.html 中文翻译:http://files ...
- <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691
Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...
- 福勒(Martin Fowler)
福勒(Martin Fowler),在面向对象分析设计.UML.模式.软件开发方法学.XP.重构等方面,都是世界顶级的专家,现为Thought Works公司的首席科学家.Thought Works是 ...
- Martin Fowler关于IOC和DI的文章(中文版)
IoC容器和Dependency Injection模式 Martin Fowler 编者语:最近研究IoC,在网上搜索到很多网页推荐阅读Martin Fowler的一片名叫Inversion of ...
- Martin Fowler关于IOC和DI的文章(原版)
Inversion of Control Containers and the Dependency Injection pattern In the Java community there's b ...
- MARTIN FOWLER谈敏捷开发
转自:http://www.scrumcn.com/agile/scrum-knowledge-library/agile-development.html#tab-id-9 每个人都在谈论敏捷开发( ...
- 什么是微服务 Martin Fowler的microservices
https://martinfowler.com/articles/microservices.html https://martinfowler.com/microservices/ 微服务,最早由 ...
随机推荐
- CF Error Correct System
Error Correct System time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- ASP、JSP、PHP 三种技术比较
目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor). 简 介 : A ...
- 关于CSS的一些总结
通过对CSS基础一天的学习以及练习,觉得自己以前还是蛮无知的,一直以为CSS样式是别人写好的,自己只需要像导包一样拿过来用就可以.直到自己认真学了之后才直到是什么样的.自己如果不去敲代码感觉永远都学不 ...
- Unity Rigidbody 刚体中的Angular Drag和Freeze Position/Rotation
Rigidbody中 Angular Drag (角阻力):同样指的是空气阻力,只不过是用来阻碍物体旋转的.如果设置成无限的话,物体会立即停止旋转.如果设置成0,物体在上升过程中,会发生侧翻旋转. ...
- JavaScript 参考手册
http://www.w3school.com.cn/jsref/index.asp https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
- 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...
- header函数
header函数 主要用于对http协议头设置相关信息 设置浏览器显示编码(解决乱码) header("Content-type:text/html;charset=utf-8") ...
- 关于IE8以上 不引人css 症状
不知道各位有没有体验过 这样的状况 在同一个文件夹中 <!DOCTYPE html> <html> <head> <meta charset="u ...
- ZigBee协议学习之网络层
ZigBee的体系结构中,底层采用IEEE 802.15.4的物理层和媒介层,再次基础上,ZigBee联盟建立了自己的网络层(NWL)和应用层框架. ZigBee网络层的主要功能包括设备的连接和断开. ...
- java-多线程-join函数
join()>>不带参数 线程A调用线程B.join,意思就是线程A并入了线程B,当执行完线程B,再去执行线程A后续动作 join(int keepTims)>>带参数,与上面 ...