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

《程序员必读之软件架构》作者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:有,软件架构师永远都不应该停止编程和停止学习!

Surface Watch?传微软正测试搭载Win 8的智能手表 又一美国造?联想在美设厂制造产品 软件定义未来 2013 SDCC中国软件开发者大会全面开启 可以直接拿来用的15个jQuery代码片段 程序员最害怕的5件事 你中招了吗? 机器智商已达四岁:亲,是时候考虑你的饭碗了 读60行代码完成的NoSQL数据库,看数据库打造面临的挑战 聚焦全球移动市场:韩国,开放之后是春天? Github 终于开始认真考虑开源项目许可证了 雅虎发布今年第二季度财报 总营收为11.35亿美元 既然无法避免被GAE锁定,何不考虑其中的机遇并自力更生 19亿美金背后的分析:91为什么要卖?百度为什么要买? 直接拿来用!最火的iOS开源项目(三) 让代码飞一会儿,超级有用的CSS编码工具集 创业者如何在Demo演讲上打动投资人? 微软小打小闹的移动版Outlook Web App,会不会被用户抛弃? 哪门编程语言影响力最大? 微软启动“Companion Web”计划 可互连多屏幕设备 让你望而却步的密码管理服务已获得100万美元的种子基金 SDCC 2013开始公开征集讲师和演讲主题 不用图片和JS,照样创建绚丽的动态CSS3菜单 是福还是祸?开发者饱经风雨的内心独白 设计师/开发者看过来,七月35款新工具速递! Hadoop进军机器学习:Cloudera收购Myrrix共创“Big Learning” 张民杰:三人团队的OpenStack机会 White Elephant:开发者必备的Hadoop利器 不及分析师预期:微软第四季财报揭晓 净利49.7亿美元 Facebook收购英国手机代码验证公司Monoidics Apache基金会废弃其C++标准库 鲍尔默宣称微软有一百万台服务器,这个数字真的靠谱吗? 全球6000开发者:iOS、Android、WP最痴情谁? 简单的一道题,各位高手指点一下把! 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 美丽的故事悲伤的结局 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 98安装故障,急!请帮看看! 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 oracle 入门的书籍,请大家推荐!本人是菜鸟现在想学习 oracle请大家多多指教!!!!! 谁有好的VB电子书籍 不会使用网上的控件,谁教我? **********四大网站被黑!!!********** 怎麼寫這兩條SQL語句;(1)顯示當前數據庫?(2)顯示當前所有用戶表? 急,謝謝 送分问题,绝对给分! 如何才能不改变字体大小? 数据窗口有bh(编号),name(名称)两列,编号是string型,用什么方法可快速查找出bh中的最大值?只准对数据窗口操作。 delphi(dll) 大话爱情大结局 ??如何编写邮件服务器? createfont怎样创建一个随意宽高的字体? 急,请问有函数可取字符串后面N位字符吗?在线等待 怎样显示报表页总数问题 在打印中如何实现实现小计(即每页显示金额的总和)100分 问一个简单的问题,关于初始化 请问谁有动态树状目录的原码啊,急需!! 什么问题,怎么解决? 西瓜:有人要求我贴你的没穿外套没穿鞋子的照片 就是你说生气的那张 贴不贴啊? 怎样将一个十进制数转换为二进制数,并将二进制数中的每一位单独取出来? GetProcAddress在VB中的使用? excel单元格格式问题 用按钮保存网页的问题 用c++ builder和access.数据表中的记录多了之后,应用什么方案将之备份以及恢复? 以下ASP在Win2000server上运行报错请问大家为什么??? 在指定位置输出文本 怎么办? 如何启动和终止一个NT服务 .Net——又一个起跑线 怎么样注册jsp上的jdbcoracle驱动 什么问题,怎么解决? 我的爱情大结局----失败爱情原闯文章 在学习了2个月的delphi后,总结四大问题! OnPaint()的问题?为什么我的程序要刷很多次才能得到正确的结果? win2000 Server中的终端服务问题,急,所有的终端都趴下了! 深入浅出MFC 100分﹕vs.net正式版的產品密鑰 怎样动态改变下拉框中的值? 如何将已有的程序(有源程序)封装成ActiveX控件? 讨论一个数据库建模的使用工具问题? 关于Flash的Action的小问题 怎样为xslt中的超联接加上参数? 问题 如何设置datagrid行背景颜色? 安装程序安装完运行显示“运行时错误'380':无效属性值”是怎么回事? 格式:名称、分类、数量、生活环境、作用(至少写十个) 数学·九年级·全一册(人教版)(十四)九年级上册数学期中测试卷(A)的答案 有没有根据由若干小正方体堆砌而成的立体图形的三视图判断有多少个小正方体这一类的题目?越多越好! 初一生物调查报告 急!生初一的物报告能不能光写表格呢?不写那些研究报告 我的主要意思是问交的时候怎么写才算过关? 可不可以不写研究报告 急.一定要准确啊 四一班和四二班班比赛乒乓球.每班选出乒乓球最好的5名同学参赛,共打打5场球,5局3胜制.如果你是.四一班体育委员,你怎么安排本班的的5名选手出场比赛才有可能打赢比赛. 启航 三年级4个班进行乒乓球比赛.每两个班一场,4个班一共要赛多少场? 甲、乙两个乒乓球运动员进行乒乓球单打比赛,比赛规则是5局3胜制(如果甲或乙无论谁先胜3局,则宣告比赛结 是试卷!全名是 英语三辰影库音像出版社的! 每个年级选出打乒乓球技术最好的5名同学参赛,共打5场球,5场3胜制,假如 乒乓球比赛的规则是五局三胜制三局两胜哪个好 用若干块相同的小正方体搭成一个几何体,该几何体的三视图如图所示用若干块相同的小正方体搭成一个几何体,该几何体的三视图如下图所示,则搭成该几何体最少需要的小正方体(我最想知 帮我写一份初一的生物调查报告!可以是关于血液在人体内的循环,花粉如何传播等等 两个乒乓运动员进行单打比赛,每赛一局甲胜的概率为0.6,乙为0.4.问三局两胜和五局三胜哪种对甲有利要有计算过程 六年级英语课外读物 淘气一家三口和笑笑一家四口到餐馆用餐,两家决定按人数分摊餐费.淘气家付了60元,笑笑家应该付多少元? 乒乓球比赛七局四胜和五局三胜有什么区别 梦想起航用英语怎么说? 某班有科技和美术两个兴趣小组(每人至少参加一项).已知全班同学中有3/5参加了美术组,7/10参加了科技组,两项都参加的有15人.该班共有多少人? 八年级上册数学复习提纲(人教版)代数部分最好多弄点 梦想从这里起航用英语怎么说? 六(1)班办了科技和美术两个兴趣小组(每人至少参加一项),已知全班有五分之三参加了美术兴趣小组,十分之七参加了科技小组.又知两项都参加的有15人.六(1)班共有多少人? 求九年级数学上册的复习提纲 由此起航英语怎么说 如果六(1)班20名同学进行乒乓球比赛,如果每两名同学之间都进行一场比赛,一共要比赛多少场? 就是要第一章:证明(二)第二章:一元二次方程第三章:证明(三)第四章:试图与投影第五章:反比例函数琳子在这里谢谢各位了.我明天要考试. 起步晚用英语怎么说RT 北师大版八年级语文上册教学计划 初一生物学调查报告怎样写?格式是怎样的?是七年级上册的生物学.调查校园、社区的生物种类! 得了把 都开学了 如题, 六年级一班9名学生进行乒乓球比赛,如果每两名同学之间进行一场比赛,一共要比赛多少 人教版九年级上册数学复习提纲 课堂上同学们都在复习语文或数学,只复习语文的占48%,只复习数学的是只复习语文的人数的50%.问:两门功课都复习了的人数占总数的百分之几 初一校园生物调查报告格式以及内容啊, (1)七年级(3)班的队列以每小时6km,李强从队尾以每小时10km的速度赶到队伍的排前后,又以同样的速度返回队尾,一共用了7.5min,求此队伍的长(2)甲、乙两名同学在同一道路上相距5km的A\B 1.有一些苹果,把其中的30%给小张,把余下的20%少2个给小王,再把剩下的给小李,这样小李得到的比小张多28个.一共有多少个苹果?(列式计算)2.一项工程,甲队单独修要10天完成,乙队单独修15天才 六一班8名同学进行乒乓球比赛,如果每两个同学之间都进行一场比赛,一共要比赛多少场? 小华与小斌骑自行车从学校出发去博物馆参观,如果每小时骑10千米,上午10时才能到达,如果每小时骑15千米,则上午9时30分便可到达.求学校到博物馆之间的距离.同学们都说是15千米,如果真的是, 六年级上册的工程问题 急!不要太难哈 某班20名同学进行乒乓球比赛,若每2名同学都进行一场比赛,共要比赛多少场? 甲乙两人进行乒乓球比赛,比赛规则为“3局2胜”,即以先赢2局者为胜,根据经验,每局比赛中甲获胜的概率为0.6,则本次比赛甲获胜的概率是? 新北师大一年级上册数学《有几瓶牛奶》评课 两个班的12名同学举行乒乓球比赛,每个班的6名同学都分别要同另外一个班的6名同学举行一场比赛,共()场算式列出来 设篮球队甲和乙进行比赛,若有一队胜4场则比赛结束.如果甲和乙在每场比赛中获胜的概率都是1/2,求比赛场数的数学期望. 小学一年级数学有几瓶牛奶教学反思 足球联赛的积分方法如下:胜一场得3分,平一场得1分,负一场得0分,某小组四个队进行单循环赛,其中一队积7分若该队胜了x场,平了y场,则[x,y]是------ 写过程 谁有“广西师范大学出版社8年级寒假篇假期园地“答案本人跪求! 新版北师大版一年级数学上册有几瓶牛奶教学反思 当今世界杯足球赛积分如下,赢一场得3分,平一场1分,负一场0分,其中一队得七分,该队赢了x场,平了y场(x,y)是()和() 注意,是二元壹次方程 广西师范大学四年级假期园地全部答案广西师范大学后面有出版社 北师大版数学一年级上册《有几瓶牛奶》课件 某校初一年级1班与2班决定分别打一场乒乓球比赛,规定:男生4人,女人2人,举行团体赛(即一队的每位队员与另一队的每位队员分别赛一场,男生与女生间不比赛),胜一场得3分,负一场得1分,无 9月份上初一,我平常读什么课外读物好?我平常读意林少年版,还有什么杂志有少年版,而且对我有益? 数学人教版小学六年级上册第五单元测评最后一题快!题目是。一筐枇杷,先拿出140个,又拿出余下的40%,这时,筐内还剩下原来总数的1/5,原有几个枇杷? 人教版九年级下册数学市质量检测第47页第16题怎么作? 已知一个棱长为2的正方体,被一个平面截后所得几何体的三视图如图所示,则该几何体的体积为A.8 B.20/3 C.17/3 D.14/3 小学六年级数学上册第五单元93页的2题是什么 要单元检测(六)和(八)的答案噗…… .如图,是一个由若干个相同的小正方体组成的几何体的三视图,则组成这个几何体的小正方体的个数是( )
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘