怎样才是真正的架构师?(文章收藏)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

下面文章做个人收藏之用。

西门子中国中央研究院首席架构师、图书《架构之美——软件架构的艺术》作者李伟,从架构师的定义和内涵、能力和素质要求、成长途径等方面向您阐述成为一个真正的架构师需要经历的历程。


记者: 您认为具备哪些能力,才算是真正的架构师?

李伟:虽然业界有关什么是“软件架构”有着明确的定义及共识,但是确实没有软件架构师的定义。简单地讲,架构师是一个技术控制的角色。技术控制是从客户或市场开始,一直到交付或服务的整个链条。如果大家对一个应用研发机构或产品研制机构的主要活动熟悉的话,就知道该链条上存在很多需要架构师负责的控制点。以西门子为例,西门子的战略市场部门就会和业务部门的很多架构师进行协作。这主要是由于战略市场部门的职能之一就是对未来十到十五年的技术和创新进行预判。这样的技术预判,如果没有架构师作为技术控制,单凭MBA出身的市场人员,大家能相信这样的技术预判吗?所以架构师需要具备一定程度的技术及创新预判能力。

从一个架构师的日常工作来看,他面对的基本上有七大问题:商业问题、系统问题、子系统问题、构件问题、技术问题、流程问题、项目管理问题。其中,前五项是一个架构师主要负责解决的。这里我尝试提几个问题,让大家检验一下自己是否具备解决这些问题的能力。

如果进行企业应用开发,你知道经典的商业运营手段一般有哪些吗?例如:公司中一般有哪些典型的职能机构?最经典的公司财务部运作是什么样的?最经典的公司纯研究机构的运作是什么样的?或者,最经典的公司纯销售机构是怎样运作的?

如果你负责一个实时系统的架构,经典的架构构建步骤有几步?一个医学CT机系统应该用什么架构风格来构建?军用舰艇上的3C系统又应该使用什么架构风格?除了我们都熟悉的MVC风格的架构,你还知道哪些架构风格?再具体一些,对于系统的并发问题,你知道业界流行的经典解决手段包括哪些?

如果你负责子系统及构件设计,经典的设计步骤有几步?分别又有哪些活动?除了你熟悉的Gang of Four的23个设计模式,你还知道什么设计实践?再具体一些,设计中有关同步、事件、资源管理等,你知道哪些前人的最佳实践呢?

实践工作中,我们遇到的现实是:盲目追随业界通用框架,即对框架或中间件的严重依赖。这些框架或中间件背后实际隐藏了很多技术、设计、应用场景,也就是说为设计开发人员隐藏了很多系统设计开发的复杂性。如果架构师把各项系统级架构质量的要求,想当然统统扔给这些框架或中间件去处理,将会带来灾难性的后果。业界有这样一句话:“框架或中间件是用来帮助你的,而不是代替你去思考和工作的。”所以我们必须根据现实的系统要求,自己动脑筋去构建适合现状的软件架构!

简而言之,架构师需要具备的能力=熟知最佳实践+动脑灵活使用+技术及创新预判。


记者: 在中国,一个程序员如何才能成长为一个职业架构师?

李伟:曾经无意间读过一篇纪事报告《最后的大师》。此文作者是应钱学森先生的邀请,来记录自己的导师,清华大学物理系及清华大学创始人之一的叶企孙先生。叶先生早年在美国留学期间,在物理方面做出过杰出的贡献。虽然大多数后人并不知道叶先生,但是他的学生没有一个会忘记他,其中包括三钱、华罗庚、李政道、杨振宁等等。可以这样说,你所知道的中国大师,大多都是他的学生。阅读完此文,颇受启发:真可谓“大师培养大师”。我非常欣赏这句话。

如果身边有大师,自然是从程序员成长为架构师的捷径了。我身边没有大师,便选择这样的道路:认真反思自己这些年来的学习和实践,并将其上升为智慧。毕竟,智慧既是指导我继续工作的原始动力,也将指导自己未来的创新工作。因此,我选择了阅读、学习和思考。


记者: 您认为在中国的软件企业中,大家在普遍认识中对架构师这一职业有哪些误区?

李伟:误区一,架构师与项目经理没有区别。大家经常在谈论架构师时,混淆了项目经理的职责和架构师的职能。项目经理要对人、流程、钱等内容负责。但是架构师主要是对技术负责。所以我个人不是很喜欢在谈论系统架构时,过多的谈论流程或管理。虽然我也是流程方面和管理方面的专家。

误区二,技术好的人就能成为架构师。其实,职业架构师与职业编程人员有着同样重要的分量,只不过各自负责的工作内容及需要具备的能力各不相同。例如:架构师熟知如何将系统架构构建得适应系统后续国际化/本地化的工作;但是并不一定必须知道界面热键在.NET下调用什么来实现。

误区三,架构师必须懂得业务领域的知识。从本质上来看,软件架构本身就是在模仿人类大脑的问题思考和解决习惯。自然,专业架构师所掌握的知识就是解决那些反复出现的相似问题的最佳手段。所以,业界都知道这样一个著名的故事:一个非航天专业的软件架构人员,可以被美国国家航天局请去做航天系统的架构评审。这一点儿都不奇怪,因为他知道解决系统并发问题时,当今最经典的那么几种手段,你能说航天系统的并发问题与企业应用并发问题本质上不一样吗?由于当前国内软件研发的各种局限,很多软件从业人员的认知还停留在“懂业务+技术好”就是架构师这样的层面上。其实,懂得经典的解决方法,并能从实践中抽象出理论或最佳实践的人,才是架构人员的专业水平。


记者: 在《架构之美——软件架构的艺术》一书中,您认为最创新的理念有哪些?

李伟:一个架构从创建、进化、老化到消亡的整个过程,是此书的核心。如同宇宙万物,架构也存在一个生命周期的概念。即“架构生命周期(Architecture Lifecycle)”。

怎样才是一个真正意义上的软件架构师?

当面临构建一个软件架构时,应该采用怎样的流程去工作呢?

怎么做才能构建出满意的高品质架构及设计呢?

当我们阶段性地完成了架构的构建,如何去评估结果呢?

软件产品在演化,软件架构也会跟随演化,如何应对这种变化?

十年前开发的产品,架构文档残缺不全,设计人员已经离职,怎么把产品的架构从纷繁复杂的头绪中清理出来呢?

如果我们要研发十几个功能相似的产品,该如何高效地工作呢?

上述这些理念,基本上是一个职业架构人员所需具备的专业素养。奉献给大家,以供参考。


(本文来自《程序员》10年05期,更多精彩内容敬请关注10年05期杂志)


infoq架构师月刊下部 介绍infoq上关于架构的内容,由于csdn上只能上传小于500M的文件,分成两部分, 本合集收录2013到2017年8月份月刊 立即下载

相关推荐

架构师电子杂志2018年全年刊

架构师杂志2018年所有的电子期刊,分享给从事架构设计工作的童鞋们

5月刊推荐:怎样才是真正的架构师

from 《程序员》杂志官网  <br /><br /><br />李伟<br />西门子中国中央研究院首席架构师、图书《架构之美——软件架构的艺术》作者李伟,从架构师的定义和内涵、能力和素质要求、成长途径等方面向您阐述成为一个真正的架构师需要经历的历程。<br /><br /><br /><br />记者: 您认为具备哪些能力,才算是真正的架构师?<br />李 伟:虽然业界有关什么是“软件架构”有着明确的定义及共识,但是确实没有软件架构师的定义。简单地讲,架构师是一个技术控制的角色。技术控制是从客户

Chatopera 1251

蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式

蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式

怎样才是真正的架构师

西门子中国中央研究院首席架构师、图书《架构之美——软件架构的艺术》作者李伟,从架构师的定义和内涵、能力和素质要求、成长途径等方面向您阐述成为一个真正的架构师需要经历的历程。 记者: 您认为具备哪些能力,才算是真正的架构师? 李伟:虽然业界有关什么是“软件架构”有着明确的定义及共识,但是确实没有软件架构师的定义。简单地讲,架构师是一个技术控制的角色。技术控制是从客户或市场开始,一直到交付或服务的...

weixin_30783913的博客 187

架构之美--《软件架构的艺术》

架构之美--《软件架构的艺术》 【作  者】李伟;吴庆海 【丛 书 名】 架构之美 【出 版 社】 电子工业出版社 【书 号】 9787121076701 【上架时间】 2009-4-24 【出版日期】 2009...

csdn1232的博客 665

InfoQ中文站电子杂志《架构师》8月刊出版

由InfoQ中文站推出的电子杂志《架构师》8月刊已经发布!该杂志是InfoQ中文站于2008年推出试刊,于2009年7月正式创刊的全新电子杂志, 面向高端开发人员和项目经理。和以往的各期一样,本期《架构师》向大家提供过去一个月中InfoQ中文站最为精华和热点的内容。每条新闻,每篇文章,每个 推荐,都是经过编辑们精心甄选。为了保证能够将一个月以来技术社区的飞速发展浓缩在短短数页纸上,InfoQ中文站...

啊啊啊啊2 431

Python Cookbook 第二版 汉化版 [Recipe 1.5] 去除字符串末尾的空格

Recipe 1.5. Trimming Space from the Ends of a StringRecipe 1.5. 去除字符串末尾的空格Credit: Luther Blissett问题用户输入的字符串中,头尾可能带有空格,而您在处理字符串时,并不需要这些空格。解法字符串对象的 lstrip, rstrip, strip 方法正是为解决此问题而设。每个方法都可不接收

方舟 K ][ N G of A R K 3450

Python Cookbook 第二版 汉化版 [Recipe 1.4] 对齐字符串

Recipe 1.4. Aligning StringsRecipe 1.4. 对齐字符串Credit: Luther Blissett 问题您想按照居左、居右、居中的方式来摆放字符串。解法字符串对象的 ljust, rjust, center 方法正是为此而准备的。每个方法都接收单个实参,用来指明操作结果中字符串的宽度;方法的返回结果是个字符串,其中包含了原来的字符串以及追加

方舟 K ][ N G of A R K 2666

Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

Recipe 1.1. Processing a String One Character at a TimeRecipe 1.1. 逐个处理字符串中的各个字符Credit: Luther Blissett[问题]您想逐个处理字符串中的各个字符。[解法]您可以构建一个列表,其中每个元素存放一个字符串中的字符(由于 Python 中没有用来表示单个“字符”的类型,因此列表的每个元

方舟 K ][ N G of A R K 2465

Recipe 1.12. Controlling Case(Python Cookbook)

capitalize1>>>'onetWothrEe'.capitalize()2'Onetwothree'3>>>'hellosunshine'.title()4'HelloSunshine'5>>>"abc".upper()6'ABC'7>>>"RAY".lower()8...

weixin_30950887的博客 121

Recipe 1.10. Filtering a String for a Set of Characters(Python Cookbook)

1>>>importstring2>>>allchars=string.maketrans('','')3>>>defmakefilter(keep):4delchars=allchars.translate(allchars,keep)5defthefilter(s):6...

weixin_30367873的博客 109

Recipe 1.5. Trimming Space from the Ends of a String(Python Cookbook)

1>>>x='hej'2>>>print'|',x.lstrip(),'|',x.rstrip(),'|',x.strip(),'|'3|hej|hej|hej|4>>>x='xyxxyyhejyxyyx'5>>>print'|'+x...

weixin_30386713的博客 74

Recipe 1.6. Combining Strings(Python Cookbook)

string1>>>importoperator2>>>pieces=['a','b','c']3>>>largestring=reduce(operator.add,pieces)4>>>largestring5'abc'6>>>faststring='...

weixin_30721899的博客 103
上一篇: 《软件架构师应该知道的97件事》
下一篇: Silverlight 安全性:保护您的 Silverlight 应用程序的安全
Ai2015WER
博客等级 码龄18年 395粉丝 328原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值