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

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

初创公司Treasure Data:每天处理7000亿行数据的20万次查询 豌豆荚王俊煜:将推支付SDK 与开发者3:7分成 英特尔-百度移动应用测试中心(MTC)正式启动 Intel将在2014年为数据中心用户定制低功耗SoC芯片 情绪低落?没事,让计算机来帮你! 水果生意难做 前新浪架构师徐佳转行试水挖煤 思考软件开发中的快与慢 Apache CouchDB注入新鲜血液,整合分布式技术 CSS Shapes:Web设计人员的新工具 Android 4.3正式发布:四大新功能一览 史玉柱的创业经验谈 3G门户和GO桌面:海外推广的生意经 系统级编程语言性能大PK D语言成首选 解读Facebook第二季度财报 移动业务风生水起 如何避免失败,像Google一样玩转大数据 首届游戏运营技术论坛隆重开幕,共论大数据时代的游戏运营之道 OpenStack Swift遇到了Erasure Code 微软Win7 IE11开发者预览版发布 开始改进开发工具讨好开发者 个性化推荐服务商百分点宣布B轮融资1000万美金 全球著名互联网企业背后的开源力量 基础设施对决Facebook vs. Google:差距绝不是一点点 Amazon Q2财报同比转亏,但AWS反其道而行:高歌猛进! 开拓海外市场的两年:海外上线小技巧 SDCC 2013首批讲师名单出炉 一线工程师唱主角 [开源推荐] 跨平台的.NET运行环境 Mono 3.2发布 Heroku发布API平台Beta版 采用OAuth2.0安全授权 大数据时代:移动数据能为我们带来什么? iOS开发经验谈:如何提高应用开发效率? 贝索斯:你否定亚马逊的现在 我决定亚马逊的未来 谷歌新产品Chromecast:一夜之间价格从35美元飙至100美元 移动周报:苹果5周年限免神作,BADLAND开发者访谈 串口打不开怎么办? 请问各位大虾,怎样在java里打开一个IE窗口。 网络问题! 我的浏览器怎么了? 在局域网中,如何在代理服务上作手脚,使处同一局域网某些人可以上网,某些人不能上网。各位帮忙! 如何制作安装盘,我的做好了,为什么到别的机器上安装不能运行 急急急·高手帮忙,在Java中引用C++的动态链接库,中文字符串参数变成乱码,怎么办? 有前锁问题 找个扫雷源程序! 发送邮件时,对现在大部网站要求的smtp认证,如何处理?急用! 连接的ACESS数据库可以是EXCEL的链接表吗? 神呀救救我吧? 谁知道哪有Delphi写的代理服务器源代码? 关于MFC的动态生成对象的问题 有谁把平台转向XP了,不知在这种新环境下开发出的软件在别的机器上会不会有问题(包括运行库及打包) 帮帮我,好吗?(谢谢大家了) 千山、恶人、老鱼、念雪、浪人及各位大虾,小弟也遇到了Dll引出MDIChild的问题,但是在linux下,不能正常退出,请各位帮忙,多谢了。 我的浏览器怎么了?? 心情好到最高点!放分!!!!!!!!!! 大家一定要帮帮我~~~~~~~~~ 一个关于重载的问题! 不活了 不活了.... 在VC中讲Edit控件的属性设置为ReadOnly后,如何改变控件的背景色??? 深圳的户口政策以及用人单位对户口的态度是怎样的? 200分求购一个VB写的用mciSendCommand播放VCD或者AVI的例子!!!!!!!! 请问大家认为数学对程序员来说是一个怎样的地位................ 紧急,求救!!!!!!!!!!!!!!! 请问在GSM MODEM编程中,如何知道短信是否已发送到目的手机! 急:为什么都用uses包含了,还是报告说没定义变量? 删除表时遇到的问题 *************stringgrid的问题?????? 再问几个问题 如何查找csdn上网的朋友 用 ADO 对 Oracle blob 字段读写 (谁能解决送1000分) 请问oracle9i比oracle8i多了那些功能?这个产品是否成熟? VB读串口数据 请问,你们做项目一般用什么分析设计方法,生命周期法? 快速原型法? 面向对象分析设计法?? 请问如何用query删除一个记录???????????????????????? 请问那里可以下载到雷电(指点一下也给分)……………… 初级问题,关于硬盘文件格式转换,请多多帮忙,谢谢! 那里有比较好的软件公司 毕业设计选题 谁有读写注册表的原代码? 请问那位大哥有画切线的C语言算法 如何使页面上的按钮被点击后自动打印当前页面? 哪儿可以下载星际争霸? 注册表中如何建新的主键?30分 寻求在tc下设置640*480(256色)模式的代码 DELPHI 真的好难 哪里有支持ASP+access的免费空间?!!30分 SaveDialog该如何使用? 地球是什么颜色的啊大神们帮帮忙地球是圆的吗?它到底是什么颜色的呢? 读了这个故事,你有什么感悟老舍的生活一直不富裕,他曾说世界上“最伟大的一个字——‘饭’——给我时间与饭我能够写出较好的.”在抗战时的重庆尤甚,那时老舍特别关心好友吴组缃先生 直径是20厘米的圆中,画一个最大的正方形,正方形的面积是多少? 地球是什么颜色的谢谢了,大神帮忙啊 灯光可以代替太阳光吗一般的花草都喜欢阳光 放在室内的盆栽很少能见到阳光 那么灯光对它能起到光合作用吗 请问不锈钢的种类有哪些? 地球是什么颜色的?谢谢了,大神帮忙啊 蚊子可以区别太阳光和灯光?蚊子都是白天休息,晚上出来的多.但好像和光线关系不大啊? 爱国主义电影观后感要真实!字多点! 什么原因造成钢的碳含量减少?材质证明书中的保证值是0.04%,经过焊接后,做化学分析试验,发现碳含量低于0.40%,母材和焊材的碳含量都在0.40%以上,为什么会出现这样的结果? 从物理学角度阐述一下摄影的柔光灯的柔光和太阳光和灯光有什么区别? 爱国电影观后感《董存瑞》210字左右 我的多彩未来 作文 怎么写啊各位大神帮帮我啊 太阳光与灯光有什么具体的区别?请详细点.谢谢. 爱国主义电影读后感 作文:其实,我很××拜托各位大神 活性混合材料和非活性材料掺入到硅酸盐水泥中各起什么作用? 是作用!求解答呀 特别是活性材料的作用 爱国影片的观后感求2篇爱国电影观后感,字数350——450啊!注意字数啊! 起点小说大神们用什么软件写作啊?起点网写小说很麻烦,你看要每次跟新字数都要确定多少多少,还有毕竟写小说,自然要方便快捷的. 掺混合材水泥和 硅酸盐水泥在性能上 有何差异?并 请 说明原因.( 要 爱国主义影视片 观后感求一篇爱国主义教育题材的影视片观后感急 限两天时间 快 马上就要交了 爱国人物的故事的读后感要500字左右的,不然不给分.小学生能写的范围之内 水泥混合材料可使硅酸盐水泥的性质发生什么变化 一个直径是8分米的圆桌,要在上面铺一块比桌面直径大4分米的圆形桌布,桌布的面积是几? 《中国近代爱国主义人物故事》读后感 名人爱国故事读后感!联想到别的故事! 欣欣家的桌面是半径为5分米的圆形,她想在桌子上铺一块直径比桌子直径大3分米的台布,问台布的面积是多少? 这个字的颜色是怎么弄出来的 照射到地球的太阳光几乎是()色的 太阳光和灯光有什么本质的区别?对植物的效果是一样吗 这个字不是打的,是我家族谱上的一个字,拍照下来的 不认识 太阳是什么色 硅酸盐水泥的技术性质有哪些?最好说的详细一点 求教大神“涐”这个字怎么打 太阳什么色的 太阳光与灯光性质有何区别??大哥大姐们帮帮忙! 20钢碳含量是多少 硅酸盐水泥强度等级确定时标准试件的尺寸 电灯光与太阳光本质的区别是 这个字读什么? 硅酸盐水泥强度的发展规律怎样 建筑工程材料 圆的直径是20厘米,求中间正方形的面积 这个字到底叫什么 怎么打出来的 太阳光由7色组成,看起来是白色,而为什么将7种颜料混合却成黑色了?怎么才能用颜料混合成白色?我要的是怎么才能配成白色?用什么颜料才能配成白色 下图中圆的直径是20厘米,求正方形的面积!急 2015新年感言500字与生活关联以学生的角度来写 太阳光由红橙黄绿青蓝紫7色组成,看起来是白色,而为什么将红橙黄绿青蓝紫7种颜料混合却成黑色了? 爱国故事读后感(最好是钱学森得) 超急啊!今晚就要啊 求新年感想作文一篇500字左右? 为什么硅酸盐水泥和普通硅酸盐水泥早期强度低,后期强度高?抗腐蚀能力强?水化热低? 关于爱国的读后感有关爱国的文章读后感,例如:读《詹天佑》有感、读《祖国,我终于回来了》有感等等.每段的段末要写出段意. 钢铁分类方法? 掺混合材料的硅酸盐水泥耐水性好么 爱国读后感? CF里的彩色字体跟彩色昵称都有哪几种颜色!CF里的彩色字体跟彩色昵称都有哪几种颜色!请具体点!有几种分别是哪些颜色! 读《爱国故事》有感 请告诉我和钱学森一样爱国的人的事例吧,写读后感.好的追加悬.快啊,这个上午我要写完的 地球是什么颜色的?大神们帮帮忙 读什么故事有感 关于爱国读后感的题目
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn