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

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

iPhone 6和Galaxy S5暂不会采用弯曲屏技术 当程序不工作时,开发者常用的借口 携程技术副总裁叶亚明:三次重大技术改进的故事及背后原因 Google抛弃C语言,采用Go语言重写Go编译器 jQuery Mobile 1.4.0正式版发布,着重性能改进 IBM收购Aspera加速大数据传输 各式各样的极品程序员,你属于哪一种 Google员工离职前必做的14件事情 GitHub上最火的开源项目及编程语言是什么? 2014的12个大数据趋势:Hadoop继续升温,R将进入主流 研究称三星手机可能存在安全漏洞 初创IT公司里开发者最容易犯的九种错误 还有多少开发者在为IE6做兼容性测试? 解读华三“新IT易之道”理念下的云计算和数据中心 回顾苹果2013:硬件几乎无突破 热衷收购 敏捷开发流程管理须参考的3个要素 微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来 Jail Breaking之后,iOS 7的指纹识别还hold住么? “勇者前线”开发商Gumi获1900万美元融资 工信部发首批10张虚拟运营商牌照 开发者有哪些新机会 【PPT集萃】十位一线专家分享Spark现状与未来 谁主沉浮,亚马逊和思科角力DaaS市场 忆往昔峥嵘岁月稠——看苹果第一代iPhone的“风骚”往事 开源工具链“大牛”的经验分享:HelloGCC 2013精彩演讲回顾 20个超实用的JavaScript技巧及最佳实践 【开源专访】Linux Deepin:做更好用的Linux桌面系统 访Andy Jassy:感受亚马逊AWS生态观,思考国内外云计算差异 站到风口,最先飞起来的能将服务做到极致的IDC 苹果Siri再获一专利:可使用自然语音输入来搜索和标记图片 研发周报:Google抛弃C语言,采用Go语言重写Go编译器 取其精华 IE11里移除和新增的功能 如何模拟键盘输入。。模拟过程中的一些问题。。有实践的朋友,讨论一下。 一个很笨的问题关于程序中的重新登陆 路过的走过的都进来看看我,珠海的或北京的帮个忙~ 如何让Form2成为Form1的真正子窗体? 对于我来说是个难题,高手请看看。急用。 用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!! 用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!! ftp可用,但http站点却不能用,为什么?急急急!!! 兄弟寻求ActiveX文档方面的帮助,先谢了 用到水晶报表控件的工程在发布时要用到哪些动态库? 大讨论:到底要不要考高程? 学好c++ builder还要掌握pascal??? 如何做"标签窗口"????请高手明示!! 急救!怎样用shell 命令读取 *.chm 格式的帮助文件? 请教各位高人哪种51单片机抗干扰性能好点。 回答就有高分!一个简单的问题! 急!Word档案变成X档案了!-------请微软专家也过来帮忙 双重系统引导的问题 现在网上还有没有好的免费个人主页空间?最好支持asp等等,空间小点没关系,高分求! 请问什么地方有PPP over Ethernet(PPPoE)协议 技术资料!!! 请问为何我的程序在Release版本下出错? 再帮忙看看这段代码,即使密码正确也显示"错误:请确认阁下的身份!" 怎么回事啊? 请教这个API(ShowWindow)怎么使用? 谁能告诉我 virtual(虚) 析构函数目的何在干什么用的? 救急 装一个rose要多大空间啊 关于CJ60库实现Visual stduio的界面的问题! 请问要实现在空表上建立数据时,如何做到text1.text能显示“1000”,即Number的“标识种子”值! 这个UDL文件错在哪? 推荐一篇文章《麦子的颜色》 大家来灌水. vc service pack? 关于聊天室的界面 c++库函数的头文件有.h和没有有什么区别?为什么c++的库函数在VC很多不能用,怎么办? 可以在dll里面放SDI框架并调用吗? MIDAS中,怎样通过Client.exe生成MS Sql2000数据库?(就像《管家婆》那样,运行一次客户端,输入数据库的名称,就会自动在SQL Server2000 如何查找一个对话框的owner窗口? 我应该选择VC还是C#??? 在系统启动时至少有一个服务或驱动程序产生错误,详细信息,请使用事件查看器查看事件日志 操作系统是如何发现新插入的设备的? 关于对Com1,Com2读取条形码的编程 帮个忙,先,谢了! 接着那个堆栈问题,创建了,试验了。但应用时出现了对创建错误? 我想在对话框上输出一个char数组,用什么方法比较好????????????? 怎样移动较大副图片的时候避免或者尽量减少闪动? 怎么把网络编程和数据库联系起来 如何贴背景透明的按钮?急,急,在线等待!!! 奇怪了! 请问如何获得居于网中一个工作组下的所有计算机?? 还是一个dll内部变量的问题。 怎么回事? c语言编程中k=(m=5,n=3),求k=?为什么? He____choose the red shirt because it makes him look handsome.A.can B.need C.must D.may man和men分别怎么读?拼音. c语言 求1^k+2^k+3^k+……+n^k,假定n=6,k=4#includeint sum(int n,int k){int i;int s=0;for(i=1;i "希望奇迹般的出现了"用英文怎么说呢可以说The hope is miracle appearance.或者 The hope is appearance miraculously? 属于热带范围内的地区终年有几次太阳直射现象?要有原因, 只有绿色的树叶能吸收二氧化碳吗?其他颜色的呢? "到处都有奇迹"用英文怎么讲不要什么 NOTHING IS IMPOSSIBLE. 不要太偏. 一年中有太阳直射现象的区域名称是什么 why don't you choose the red tie?for me,it doesn't ___ my shirt very well.a.fix b.match求大神帮 一个又一个的奇迹 的英文怎么讲?如题,英文:一个又一个奇迹 怎么讲?谢绝翻译器~~~~:] 电脑读卡(2B铅笔涂的卡)的原理是什么?是根据石墨的量来判断的吗?如果是这样,那为了保险,我岂不是可以用9B铅笔涂卡?(经事实验证,我中考时用6B铅笔涂的卡,读出来了) Why don't you choose the red tie?For me,it doesn't my shirt very well A fix B accept C compareD match要详细理由 奇迹总会出现用英语怎么说 do well in的意思 my happy day初一英语短文内容写去公园玩的或者爬山的 传奇英文怎么写?简短一点的.还有传说 英文怎么写? (只要用力呼吸,奇迹就会出现)的英文怎么说? 地球真的是昼夜平分的吗,我指的是,一半白天一半黑天我想不通的是,中间不是应该有黄昏吗,怎么可能一半白天一半黑天的平分着来,话说,老师是这么讲的 修改病句:他穿一件红背心和一顶白太阳帽.错误在哪? 请以“A happy trip to”为题目,写一篇短文要写清时间,人物,地点和去的方式以及所件所闻所感,字数不少于60(不必要太难,我只是初2)呵呵,你的这个太难咯,我不懂, 地球为什么有黑天在银河系约有2000多亿个恒星,而且光也是无孔不入的.为什么除了太阳别的恒星不能给地球带来光明呢? m(m+1)=4则m=______ k(k+1)=10则k=_____ A Happy Trip (一般过去式) 哪个国家和中国黑天白天正好相反 哪个国家和中国黑天白天正好相反 k+m=-4,2k-m=1,求k和m的值. 南京大屠杀是从什么时候开始的,又是什么时候结束的?如果可以请再告诉我一些其他细节, men's english nameI am a student.I like English,but i haven't an english name.I want sb to give sm suggestion to me !By the way,I like jaylon Zhou! 2km=1 k/m=12km=1k/m=1 以“My trip”为题、写一篇初一英语作文 60词左右! it s raining men - geri halliwell 英文翻译歌词翻译成中英文对照 谢谢 最佳追加20分it's raining men geri halliwell schizophonic by kutyly humidity is rising barometer's getting low according to our sources the street's the place to 已知k=m-a/n-a(k≠1).则a= 根据中文提示要求,以my happiest trip 为题,写一篇60词左右的短文.1,去年暑假我乘火车去杭州旅行.2,杭州,我国最美丽的城市之一.树多花多.以西湖著名.有许多名胜古迹.3,游园,泛舟,爬山.,美好时 man与men在美语中的应用美国人非正式口语中怎么那么多men与man,Hey man?oh man 形容大戈壁的荒凉的成语! 以My pieasure trip to...为题,写一篇60词的初二作文 man 英文怎么说 南京大屠杀这段历史告诉我们什么?我们为什么不能忘记它? My father returned home 是主谓宾还是主谓状 英语里的“man”和“men”之间的变化是? 怎样判断一个单词的重音在哪里?为什么有的单词没有重音?给我一个方法来判断!还有例如post为什么没有重音?怎么判断?方法方法?A Chinese B complete C concert D computer 有个不同,怎么找? 形容沙漠面积广阔的成语 动植物是怎么改变自身结构适应环境的? 地球月球在公转的同时为什么还要自转?地球的自转还可以理解为均衡受热.但月球呢? do well in 后面加动名词对吗?是不是do well in+doing You ______ _______ ________(被期望) arrive here before six o’clock. 写一篇关于“A Happy Trip”的英语作文本周末,你和好朋友一起去爬泰山乘公交车前往描写自然环境和周围的登山游客用了半天时间登上山顶,并拍了许多照片虽然感到累,但玩得很愉快不少于90 [3(m十n)2]3[一2(m十n)3]2 英语翻译人权作为公民的基本权利已经日益被人们关注,我国现行的《刑事诉讼法》在多方面体现了对犯罪嫌疑人或被告人的人权保障,基本上明确了无罪推定等原则,但与国家尊重和保障人权 地球自转周期和月球公转周期分别为多少? 5(m-2n)方-3(m+n)+2(m+n)-8(m-2n)方,其中m=-10,n=-6时,怎么算 英语翻译统计行政执法是统计行政机关为了执行统计法法律、法规、规章和其他具有普遍约束力的规范性文件,依法对某一具体事件或个人采取处理措施的活动.经过多年的执法实践,在取得一 一篇以“A happy trip in Kunming"为题目的英语作文(60字) do well in的do能不能换成别的动词 英语翻译和谐社会背景下的缓刑适用若干问题探析内容摘要:缓刑作为一种集刑罚社会化、个别化、教育化、经济化于一身的刑罚制度,为世界各国刑事立法所广泛采用,并在适用中保持较高 A Happy Trip (English作文)5該啦,快 非主流成语带“那”字 与中国传统的24节气关系最大的是a月球自转b月球公转c地球自转d地球公转 单词辩音:1、woof、choose、wood 2、shirt、cleaner、learn再补充3个:3、boat、cabbage、thumb 4、water、gas、bat 5、actor、cinema、cloud 关于man的发音是不是man的所有的复合词的发音都是一样的?都是/mən/?比如Englishmanman的发音是[mæn],它在复合词中的发音是不是都是/mən/?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘