说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

《程序员必读之软件架构》作者Simon Brown:架构师与程序员的区别

HTML文档下载 WORD文档下载 PDF文档下载
全球知名软件架构独立咨询师、讲师Simon Brown在接受图灵社区专访时,表示开发者和架构师之间最大的区别就是技术领导力。退后一步反观大局是架构师必掌握的核心技能,开发者需经过经验积累才能成长为合格的架构师。

【编者按】Simon Brown是全球知名软件架构独立咨询师、讲师,创办了专门讨论软件架构问题的网站“编码架构”(CodingTheArchitecture.com)。他自称是写代码的软件架构师和明白架构的软件开发者。自2008年以来的7年时间里,Simon在全球28个国家做过有关软件架构、技术领导力及其与敏捷的平衡等主题的百余场演讲,并于2012年8月在中国举办的ArchSummit全球架构师峰会上以“郁闷的架构师”和“如何设计安全的架构”为主题发表演讲,深受与会者好评。Simon已为全球20多个国家的软件团队提供咨询和培训,他的客户既有小型技术初创企业,也不乏全球家喻户晓的品牌公司。Simon著有《程序员必读之软件架构》一书,他在这本书中打破传统的认知,模糊软件开发和架构在流程中的界限,进而为软件架构正名。近日图灵社区围绕程序员与架构师的区别对Simon Brown进行了访谈,下面为访谈内容。


问:开发者和架构师之间最大的区别是什么?

Simon Brown:架构师和开发者一样,也经常写代码,简单的说,开发者和架构师之间最大的区别就是技术领导力。软件架构师的角色需要理解最重要的架构驱动力是什么,他提供的设计需要考虑这些因素。架构师还要控制技术风险,在需要的时候积极演化架构,并且负责技术质量保证。从根本上讲,架构师是一个技术领导者的角色,这就是最大的区别。

问:一位开发者如何才能成为一位架构师?他/她需要掌握哪些领域之外的能力?

Simon Brown:两个字:经验。我认识的大部分优秀软件架构师同时也是出色的软件开发者,他们都是经过时间逐渐发展成为架构师的。你需要有退后一步看代码的能力,从而理解特定软件系统背后的设计决策。退后一步才能看到“大局”,这是架构师必须掌握的核心技能。这就是为什么《程序员必读之软件架构》一书中加入了有关C4模型的内容,这是一种从多个不同抽象层面理解软件系统的方法。这个方法有助于你退后一步反观大局。

问:你对软件架构的理解是否因为你的经历和实践而改变过?

Simon Brown:是的。我对软件架构的理解是根据我在咨询公司工作时在各个项目中负责软件架构的经验形成的。咨询是一件好事,尤其从最近我开始从事独立咨询师这个工作之后,我可以看到很多不同的团队,不同的架构,不同的技术,以及人们不同的工作方式。世界各地的文化多样性又为工作的复杂度增加了一个维度。无论是寻找特定问题解决方案的过程,还是为各种想法去芜存菁的过程,这些经验和与我共事的人的反馈一起最终形成了我今天对软件架构的认识,这些思维也反应在了我的书中。

问:你书中的每一章内容都很有趣而且很精炼,有没有想过写几本详细论述《程序员必读之软件架构》中重要话题的书?

Simon Brown:我写作这本书的目的是要创造一本让读者可以从头读到尾的书,但是你也可以通过粗略浏览来找到具体问题的答案。对于这个问题来说,没错,有一些相关主题没有出现在这本书中,这些主题可以构成一本与《程序员必读之软件架构》相互补的书。比如,图表和建模的材料就可以扩充成一本完整的书,另外我和一个朋友也讨论过要写一本关于架构模式的技术性更强的书。

问:你在书中也谈到了敏捷方法,你是如何看待现在流行的"敏捷已死"的说法的?

Simon Brown:我听过很多人说“敏捷已死”,他们观点似乎来自两个主要视角。首先,敏捷这个品牌现在虽然已经成为主流,但是其背后的一些意义却在近些年消失殆尽。遵循敏捷实践的软件团队有很多(比如每日站立会议,测试驱动开发等等)但是他们却并不知道为什么要遵照这些规则。盲目仿效敏捷实践并不是敏捷的核心精神。

还有一些团队,他们尝试了敏捷,但是结果却一团糟。我从软件架构的视角特别能注意到这件事。大部分敏捷方法并不明确讨论预先设计,而很多人把这点误解为在敏捷项目中不需要做预先设计。当然,这不是事实,而现在人们开始寻找所谓的传统开发和敏捷开发之间的平衡点。

敏捷并没有死。采用敏捷方式意味着不断地反思和调整你使用的方法,从而达到解决问题、变得更有效率或者更频繁地交付优秀软件的目的。团队要如何完成这件事完全是由他们自己决定的。

问:作为技术领导者,如何协调一个大型项目中不同架构师的协同工作?

Simon Brown:这是一个复杂的问题,根据背景的不同,答案也有很多。在我的经验里,大多数大型项目都包含有一些小团队,可能是根据技术类型、子系统或组件区分的。在这种情况下,每个团队一般都会有自己的软件架构师,因为必须有人要为这些零散的部分负责。为了要管理整个项目,协调合作,有以下几种方式:

一个单独的架构师来管理整个项目,然后通过和基于团队的架构师的合作来确保工作顺利进行。

基于团队的架构师共同协作,分享和执行架构领导者的角色。

某一位基于团队的架构师额外花费一些时间来管理整个团队。

第一种方式是我最不喜欢的,因为多出来的这个人可能不会像其他基于团队的架构师那样投身到每天的工作中,而且他有可能缺少必要的背景信息,无法做出明智的决定。在第二种和第三种方式之间选择的时候,我们可以根据基于团队的架构师的领导力和兴趣来决定。比如,强制一个不感兴趣的人来管理整个项目可能不会成功。我个人比较倾向于第三种方式,但前提是其他基于项目的架构师也应该以某种程度参与进来,因为对整个项目的理解是必不可少的。

问:复杂是软件架构的敌人,很多人欣赏那些已经用了十几年的架构,但是这种情况下多场景预判会使得程序变得复杂。你是如何规划架构时间点上的规模和设计的呢?

Simon Brown:简单的答案就是一开始就使用简洁的设计,然后明确地思考模块化。软件系统随着时间很容易就会发展成“大泥球”,对于需求不断变化的软件系统来说,维护性和适应性的最大影响因素就是不同事物间的耦合程度。如果你从一开始就考虑了模块化,把软件系统分解成高内聚低耦合的小模块单元,在未来你就可以更轻易地对系统做出改变。更进一步说,这意味着你定义的软件架构应该反映在代码中。正如我在书中所说,事实并不永远如此。我去年在一次大会中的演讲(抱歉,演讲是英文的而且在YouTube上)中深度讲解了这个话题->https://www.youtube.com/watch?v=ehH3UGdSwPo

问:你认为从10万用户扩展到1亿用户的架构存在吗?如果存在的话,这些架构具有超强扩展性的原因是什么?

Simon Brown:我确定这样的架构确实存在,但是在构造这些架构之初时,架构师可能并没有设想到如此强的扩展能力。每个互联网级别的大型网站背后的故事都很有趣,它们大多数都已经经历过在开发、部署、运维的同时持续发展架构的阶段。做出架构决策的关键就在于理解利弊和确定优先级。你可以在CAP定理中看到类似的情况。一旦你明白了不能拥有一切,就会更容易做出架构决策了。

问:什么样的架构能够做到快速响应频繁变化的需求?

Simon Brown:和之前的答案一样,简洁的设计和模块化会让你可以快速响应快速变化的需求。如果你需要经常改变架构,但只想改变其中的一部分,为了防止为每个小变化重新部署整个系统,采用微服务架构是一个明智的选择。

问:有没有什么事是架构师永远都不应该做的?

Simon Brown:有,软件架构师永远都不应该停止编程和停止学习!

VB如何使用文件复制对话框? VB如何使用资源文件 VB如何用Dir()函数来列出C下所有TMP文件并且用文本框输出 VB如何在 VB 中使用 Winzip 来压缩文件? VB如何在DOS程序结束执行时,自动将其关闭? VB如何在VB中实现Undo(撤消)功能? VB如何在VB中实现目录遍历 VB如何在Windows操作系统中改变文件打开方式 VB如何知道硬盘是使用那一种文件系統(FAT32,FAT16)? VB如何自动更动成中文输入 VB删除整个目录 VB设置打印页边距 VB实现文件查找功能 VB使用SendMessage函数滚动文本框控件中的内容 VB使用 WIN95 的选择目录对话框 VB使用INI文件 VB使用WriteFile 块读写数据 VB使用历史文件记录 VB使用内存映射文件加快文件操作速度 VB数据报表设计器在多层结构开发的应用 VB突破 TextBox 32K 的限制 VB拖拽节点时实现目录树自动翻滚 位图文件内部初探-VB资料 VB文本的加密与解密 VB显示盘中所有的目录 VB压缩MDB文件 一个移动文件的简单方法-VB资料 VB移动文件到回收站 VB隐藏文本框控件的环境菜单(又一方法) VB隐藏文本框控件的环境菜单 VB用API复制移动文件 jsp参数传递的乱马问题 校园网查看ip的问题 tuxedo分组很有学问,分不好会死,还有内存泄露,请赐教 有关页面调度的课程设计 新手问题,在线等! 内存大小是否会影响到网络速度? 谁来救我 ,SOS,求用C语言写的编译器 修改数据出错,不知为何? 等级考试的问题 请问能不能在不同用户登陆的情况来决定服务A是否启动。 关于还原精灵转储后win98不能启动的问题,请指教!~ 今天,我终于听到项目经理的一句内心话,让我们作为程序员感到一阵阵的寒心 请教一下 dll调试问题 怎样得到OnLButtonDown的point在整个屏幕上的坐标啊?谢谢 递归调用FindFirstFile、FindNextFile、FindClose的问题 页面调度有关的课程设计 关于client端与server端的连接问题 请问能不能在不同用户登陆的情况来决定服务A是否启动。 Textbox如何禁止它记忆以前曾经输入过的值? 我的XP的CPU经常占用90%以上,高手指点. 安装完win2000,又安装了天网防火墙,再安装SQL server 2000,快完成时启动服务警告“无法定位程序输入点” 急招深圳周边(含深圳).Net程序员 ??qustion Laney(6吨大肥猫) 快来啊^@^ 有关struts的<html:text>标签的问题!!!!!!!!!!!!!!!!!!!!!!! 为了考试挑灯夜读,遇到一个菜问题请大家帮忙! 哪位高手帮帮我!时间紧急! 关于还原精灵转储后win98不能启动的问题,请指教!~ 有几张漂亮图片,看看你的计算机是怎么累死的 求C++算法代码。 怎么实现在IE中将查找到的关键字用红色标记指示出来? 求C++算法代码。 请问哪里可以下载Numega DevPartenr Studio 测试工具 ㊣㊣ 什么也不多说了,帮忙给解决这个问题吧, 先多谢了!! ㊣㊣ 有个小小问题 寻找监测某端口的数据流量软件 都市幽灵·里面一定有宝藏 非常奇怪:为什么超链接无效? 显示异常 下个星期开始到新公司了,请大家给点经验,好吗 急!jsp+mysql,急寻blob输出方法!!! 修改记录问题 StringGrid的自画 导出 救命呀,关于XP的激活问题. 语句 请问有什么好的串口调试工具,可以模拟串口发送数据的??????? 简单问题高分相送 MessageBox.Show 方法需要什么样的名空间 使用ghost硬盘刻录硬盘怎么区分源盘和目标盘,请大虾详细说说,在线等 英语翻译A data structure is a way to store and organize data in order to facilitate access and modifications.No single data structure works well for all purposes,and so it is important to know the strengths and limitations of several of them.这 高一数学题目..不会 ..求解1.已知U=R,A{X∈R|1<X<4} B={X∈R|X≤-1 或 X≥3},求CuA和CuB2.已知全集U={0,2,a的平方+2a+3} A={0,2} CuA={1,2},求a的值3.已知集合A={X∈R| 1≤X≤5} B={X∈R| a≤X≤2a+1} 且A≥B,求a的 少昊、颛顼、帝喾、.尧、舜他们还有官名吗 为什么我单词3500都背会了但阅读还是老看不懂? 时光荏苒,怎么念 为什么希腊是现代科学精神的起源? 为什么背了单词还是看不懂文章单词尽管背了,可现在一做阅读发现单词还是看不懂啊,郁闷啊,只有90多天了,咋办 品读经典,完成下面的填空.1.《水浒》中的主要人物有:行者______,花和尚______,黑旋风______. 黄帝、颛顼、帝喾、尧、舜庙宇在什么地方 英语翻译内容是:"既然你开口叫我负责,我会负责到底的!" 单词背了就忘 阅读看不懂 愁死了 世界的统一性问题中,何谓一元论?何谓二元论?如题,要确切.重点是一元论与二元论. 实矩阵A特征值为r+is,有1/2(A+A')的特征值均为实数且为b1 在玉树地震时,电视新闻和报纸进行了大量的报道,谈谈最让你感动的一个画面,一个人或一件事 论述世界统一性原理是唯物一元论的前提和基础 谁能帮忙写篇作文啊悲观主义说,这个世界有无数的墙.乐观主义说,这个世界有无数的门.现实主义说,这个世界是由无数的隔膜和沟通的门组成的.你怎么理解这三种看法?请从上面三种看法中选 惆怅是什么意思 世界的统一性在于它的什么 谁能帮我写篇文章RT,主题是庆祝火锅店开业一周年.字数800左右. 惆怅的意思是什么?拜托了各位 谢谢 高一数学题 谢谢了诶~1.如果loga2>logb2>0,那么( )A.1 谁能帮我写篇作文啊?《爱点亮我的心灵》700字 一定是亲身经历的~ 请问一下惆怅是什么意思? 高一数学诶……泪流满面求指导做前三道就好了 我承认我问题很多==请给详细解释 谢谢 七年级下册地理的重点? 指出句子所运用的修辞手法:1.他正向古代典籍钻探,有如向地壳寻求宝藏 2.闻先生大无畏地在群众大会上,骂特务,慷慨淋漓,并指着这群败类说:你们站出来!你们站出来!阅读题:1.仰之弥高,越 《大道之行也》全篇课文的断句 您好,请问杭州离海宁有多远? 人情冷暖 世态炎凉 是什么意思 Mr Smith often helps the poor people.He is a man with a kind h_____________Mr Smith often helps the poor people.He is a man with a kind h_____________ 什么叫结构化程序设计?它的主要内容是什么? 翻译成英语 人情冷暖世态炎凉 “三皇五帝”中为何把炎帝划分在“三皇”里,而黄帝划分在“五帝”里在中国通史远古时期传说中,黄帝和炎帝同为有典氏的儿子,都是很杰出很有名望的部落酋长,为什么“三皇五帝”里把黄 英语为啥这么难? 世态炎凉鸡最懂,人情冷暖鸭先知. 三皇的“天皇”、“地皇”、“泰皇”,和“伏羲”、“神农”、“黄帝”.是一样的么?如题 为什么英语这么难 翻译 企业文化我们企业是以位置相关的各种信息的应用与发展,维持与改善人类生活作为企业发展方向和坚定不移的目标.把位置相关的信息领域所取得的成就做为我们衡量一起活动的标准. 三皇中的“黄帝”与五帝中的“黄帝”是否一样? 为什么英语回这么难 念天地之悠悠,独怆然而涕下.神木意思? 某天文观察者观看到下列现象,依据天体的相对位置判断,不可信的是.白天看到日食,同一天晚上看到月食为啥不对,日落后既看到火星又看到木星为啥对?跟剧天体的相对位置判断 为什么英语对于我来说这么难? 翻译:念天地之悠悠,独怆然而涕下 关于天文星象的基础问题:是根据什么判断一个星次里边有二十八宿中的哪几个呢?比如说正月,如果在正月的时候观星,是在黄昏的时候太阳落山的西方出现的星宿属于娵訾吗?是我没有表达清 世态炎凉人情冷暖世态炎凉.人情冷暖.为什么真么说 在经济繁荣时期和萧条时期因怎样分别运用财政政策? Taking your measurements won't help when it comes to picking your size (v-2s)/(2x-u)=(v-s)/s (u、v都是正数,且v+u≠0,求出s,并推导出1/s=(1/u)+(1/v) 如何提高学前教育经济效益 英语翻译when it comes to 一般在什么时候用的 已知圆面C:(x-a)^2+y^2 怎么写学前教育专业学习情况? 黄帝姓公孙,根据司马迁史记记载,为何其孙,孙之孙颛顼和帝喾都姓高,即高阳和高辛. 重点论也是一元论,对吗, 这是科学,请学霸帮我,谢谢! 请从语法角度分析.The date marks the end of...the date marks the end of one of the periods of roughly 400 years into which the Mayan calender is divided. 谁能帮我写篇文章 为什么在发达的资本主义国家美国马列主义著作有一定的市场 能帮我翻译一下这个句子吗?at the end of an income year ending on the date of death 斯里兰卡庆祝科伦坡国际机场高速路建成外媒关注《新快报》为“记者门”事件道美报报道 北京推“自住型商品房”稳定外媒报道中日论坛因钓岛引发“语言冲突美国“天翼掠过休斯敦”航空展揭幕韩独岛宣传片涉嫌非法引用日媒资料被要禁化武组织称叙利亚提交销毁化武初步计俄罗斯航空专家开始在美国上空进行观察麦当劳与四十年“老伙伴”亨氏番茄酱分美国共和党参议员计划推迟叶伦的美联储美国广播公司高管就“杀光中国人”视频日借太平洋岛国会议插手南海朴槿惠为职棒比赛开球 露甜美微笑【组纽约华裔家庭五人被杀案疑犯被捕 为被女教师被调离因婆婆抗拆 评论吁查幕后中国海警编队10月28日在中国钓鱼岛安倍称不容中国“武力崛起” 外媒称中美医保网站高管被爆系奥巴马夫人同学 马尼拉市长将赴港道歉 评论称菲律宾一哈萨克斯坦时装周:黑白搭配永不过时美海军航母编队在中国南海训练演习中越两军举行首次边境高层会晤 将在越北青报:严控死刑,从减少“死罪”开始粤媒为广东生死战支招:加强轮转 防死加强动物防疫执法 规范兽药经营管理福田2014年 公益培训报名6人造谣“东莞遭恐怖袭击”被拘新股发行改革成败 关键在二级市场金融应成为实体经济的源头活水未配合查违执法 每处场所罚5万虚构中标工程 骗走50万元地下管网破损致两处“受灾”东莞一大学生因爱生恨 捅前女友11刀让金融成为“爱富不嫌贫”的活水目前宜合理控制仓位银行提高收益应战“宝宝军团”中国改革将稳中求进A股后市如何演绎社会主义核心价值观重在“行”冷空气携雨雪入侵中东部 局地降温超1微博广场光明新区学校 互派教师任教
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘