架构设计师能力模型

不论是在公司内部,还是在面试过程中,经常看到很多开发人员,说想成长为架构师,但是实际上却像一支无头苍蝇一样学习、成长。所以今天我就来简单总结一下,开发人员要成长为一个架构师,都应该学习哪一方面的知识。也就是:架构师的能力模型。

(PS:本文纯属个人见解,并不一定完全正确。对于此类话题,每个人可能都有不同的看法。欢迎大家拍砖。)

 

开发人员职业发展方向



在说明架构师能力模型前,我得先说明开发人员在职场中的职业发展方向图。

开发者应该根据自己的性格、爱好来选择自己的职业方向。对于性格外向、愿意多与人交流、沟通能力较好的同学,可以考虑向管理方向发展。对于热爱技术、喜欢钻研、性格偏内向的同学,则更适合往技术方向发展。

两个方向并没有好坏之分,只是术业有专攻而已。两个方向也不是完全独立的,对于技术总监、架构师及其以上的岗位,往往也需要较强的沟通能力,以及一定的管理能力。

CTO 是很多开发人员理想中的最终职业方向。但是对于不同的公司而言,对 CTO 要求不尽不同(可以看看 2016年炒得比较火的某 CTO 离职事件)。所以 CTO 也会由不同的岗位成长而来。但是,并不意味着每个人都要以 CTO 为自己的职业目标。图中黑体的岗位,都可以作为开发人员的职业方向。

对于还没有职业方向的的开发人员来说,选择好一个奋斗的方向,非常关键。方向对了,就不怕路远!方向不清晰,则会做很多徒劳无功的事。关于更多关于开发者如何对自己的职业进行规划,请看知乎:《开发人员如何规划自己的职业生涯?》。其中有一点非常关键:听从内心的召唤!

 

架构师能力模型



网上已经有前辈在 2007 年时,已经总结了他对架构师的能力模型的理解。写得非常详细,见:《架构师的能力模型(图)》、《能力要成体系》、《旧文重发:做人、做事,做架构师——架构师能力模型解析》。

个人觉得,上文中的能力模型有些过于具体,不方便读者按照该模型进行学习。同时,也缺少一些我认为必需的元素。

我在面试架构师或者挑选架构师的苗子时,往往看得很重要的一点是此人对技术的热情程度、学习能力。如果他在面试过程中说“我以后会转管理”,那我基本会认为此人不适合。因为不热爱,所以难做好。引用知乎某牛的观点:“对新技术发自内心的喜爱和好奇,对自己产品和代码的尊重与自豪,是技术人员从优秀走向杰出的关键因素。

这些因素为什么会成为架构师能力模型中的关键因素?

下面我来补充一下我对架构师的能力模型的理解。能力模型分为两个层次。

 

通用能力层



可能读这一节,读者会觉得有些偏题、有些抽象,但是本层中的能力其实才是最重要的能力。这些能力要求,其实在任何一行、任何一岗都是非常重要、且适用的,这当然也包括架构师职业。

可能比较抽象,我对本层能力模型中的各个能力点做一些简单的诠释:

  • 学习能力,是一切能力的源泉!所有的知识,都可以学习。学习能力是一个人的核心能力!所以,在学习任何事之前,应该先学习如何更好地进行学习。把自己的学习总结出一套方法体系并不断完善,是对自我学习能力的提升,是快速构建其它能力的基础。这是我多年之前写的《学习过程反思》,供各位参考。
  • 要做事,先做人。
  • 人生需要有规划。活着就是为了美好的人生!
  • 人生规划中,财务规划和职业规划是两个比较重要的环节。
  • 财商:要做一个独立的人,财务方面需要独立;要做一个自由的人,财务方面先得自由。
  • 智商:CPU,表示了你大脑的运算能力。(该能力难以主动提升。)
  • 情商:30%自我情绪的控制+70%控制他人的思维。
  • 思维能力:如果把智商比作 CPU,那么思维能力则是算法。在有限的智商之上,我们只有使用更加高效的算法,才有利于提升我们自己的思考能力。
  • 哲学:研究方法的方法。是抽象的方法论。有利于其它方法的学习。
  • 结构化思维能力:方法要有体系化。
  • 沟通能力:每个人作为社会群体中的一个个体,要想办法更好地与周围个体进行连接,才能更好地达成群体中的各类协作。有时候,连接比个人能力重要得多。
  • 个人管理:最基础的管理技能。把个人管理好,才谈得上管理他人。把自己的小事管好,才谈得上管理更大更复杂的事。
  • 团队协作:原因同沟通能力。
  • 项目管理:使用结构化、体系化思维来管理一个项目的能力。项目是一个抽象的词,并不单指 IT 项目。
  • 其它:……

 

专业能力层



通用能力层之上,就是架构师能力模型中第二个层次:专业能力层。这一层的能力越精通,说明越能胜任架构师。

 

基础能力层:基础能力层的特点是非常简单,但是却非常重要。

入门级的打字、输入法、快捷键等能力,其实在 IT 盛行的今天,不应该算是一个专业技能,而更是一个通用技能。想象一下,一个人,特别是开发人员,这一辈子要打多少字、多少汉字?如果锻炼了打字、输入法后,会为你节省多少时间(提升 30% 效率,意味着每10年,你比别人多出3年的时间)?但是又有几个开发人员专门去练过打字,练过五笔呢?练武之人,应该先练好马步!

开发语言:道理同输入法。开发者只能通过开发语言来跟电脑进行沟通,所以对语言中每一个语法的精通、高效运用,都能提高你写出来的程序的素质。

开发框架:为什么要学?要学到什么程度?见我09年为自己写的《框架学习计划》。

 

设计能力层

开发者往往会花大量的时间在一些具体的技术上,例如基础能力层中的开发框架。学了一个框架,又学另一个框架;学了一门语言,又学另一门语言;学了前端开发,又学后端开发。其实,这都只是在第一个层次上进行学习,兜圈子。想要成为架构师,还得先成为设计师,提升自己的微观、中观设计能力。

我面试过很多的高级开发者、架构师,但是往往只是经验丰富、框架用得较多,设计能力却非常薄弱!

算法对程序设计师来讲非常重要,影响到设计师编写的代码的微观结构。不过,由于其处于微观层面,现在大多数语言框架都已经提供了大部分基础算法的封装,所以对更高级的架构师而言,常常不再需要关心具体的算法。

UML、面向对象是非常重要的两个分析、设计能力。特别是面向对象,当前主流的高级语言都是面向对象的,所以可以说是“设计师”的必备技能。

设计模式:这里我想说的不是只设计模式的重要性,而是“模式”的重要性。在《》的抽象层次章节中,我指出了模式是在方法层内、实践层之上,是经过经验总结出的可复用的方法,非常重要!在《学习过程反思》中,指出了总结对于学习的重要性,其实,总结出来的东西,也都是可复用的模式!对后续的实践起到很好的指导作用。所以,设计模式对设计来说,很重要!

 

架构能力层

架构设计方法:如何进行架构设计?架构设计的方法有哪些?我非常惊讶地发现,95%面试架构师的人,都没有系统地学习架构设计的方法论……是不是大家以为架构师都是靠忽悠?还是说只要会搭几个基础的程序架子就算得上架构师了?汗……

架构模式:可复用的架构的模式有哪些?

对于架构师而言,要求会高许多。专业能力除了纯技术能力,软件开发过程也是很重要的一个内容(瀑布、RUP、敏捷等)。软件的架构往往与开发的过程是相关的。很多架构甚至是伴随着开发过程而演进的。

业务理解能力,也是架构师的要求之一。更好更快更全面地理解业务,才能设计出匹配的架构。

其实,想成为架构师的同学,可以尝试考一下国家软考的架构师。通过过程中的学习,可以系统地学习架构师相关的很多知识。

 

结语



回头想想,其实在我个人写程序之初,脑子里面就有简化版本的这个能力模型架构了。这使得我在学习专业知识的时候,很快地学习了几个层次的相关内容。并在后来的时间里,不断对这些能力进行深化、巩固,少走了一些弯路。

上述能力模型中,我无法列全所有的技术分类。但是我列出了我认为比较重要的技术。同时,一些新、老技术,你都可以把它们归类到这三个层次中。这样,在能力分层之后,大家就可以按照这个图来进行规划自己的学习了。图中的每一个点,都需要进行学习,规划到你的学习计划当中去。当你真正学会这些内容后,恭喜你,你已经成长为一个非常优秀的架构师了。

(注意,我说的是“学会”。所以你得先好好总结一下自己的学习!看完本文,读者要是能总结一下自己的学习方法,那就算我熬夜到三点写的这篇文章没有白费……

时间: 2025-01-20 22:57:26

架构设计师能力模型的相关文章

DevOps的能力模型、演进及案例剖析

引言 运维工作是实践性的学科和工作,即便没有高深的理论也可以开展工作,继而从事这个工作的朋友不缺乏实际动手的能力. 但从事物的发展规律性和普遍性来看,从实践出发的Ops恰恰缺乏必要的理论指导和思想探究. 本文是我对运维工作的理论.思考和定义的总结,同时给出DevOps相关概念的定义,明确其工作范畴,能力要求,产出标准以及演进建议.一家之言尚未完善,抛砖引玉,欢迎讨论. 从一次面试开始 问题1 问:如何通过Python或者Shell给Nginx添加/删除一个虚拟站点? 答:通过Python或者Sh

产品经理为什么要建立产品经理的能力模型

如今,越来越多的人想做产品经理这个岗位,有不少公司.团队也都建立了以产品为中心的组织形式.所以,网上出现了很多"产品经理的能力模型",大家都觉得很重要,理解之后就可以入行,同时又发现各种模型之间是有很大不同的,纠结不已.最近一段时间,我越想越觉得讨论所谓的能力模型又陷入了"方法中心"式的思维,和"最好的文档模板"."最优的组织结构"没什么区别,其背后的本质还是要先"问题中心",也就是思考"为什么要

从空间角度诠释安全体系架构:花瓶模型V3.0

["防护-监控-信任"体系:"五边界"."五控点"."三验证"] 入侵就是要意想不到,出现在你不注意的角度与方位:若你还没有看清楚入侵者是谁前就盲目动作,往往步步被动,被对手牵着走."用空间赢得时间"是安全设计的常用理念,空间换取的是你可以反应和准备的响应时间.在现实生活中这很容易理解,但在"虚拟的网络上",如何建立网络空间的概念,如何设计安全体系架构呢? 花瓶模型(V2.0)是从时间维

系统架构设计师考试大纲

一.考试说明:   1.考试目标   考试合格人员应能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确.合理的软件架构,确保系统架构具有良好的特性;能够对项目睥系统架构进行描述.分析.设计与评估;能够按照相关标准编写相应的设计文档;能够与系统分析师.项目管理师相互协作.配合工作;具有高级工程师的实际工作能力和业务水平.   2.考试要求   (1)掌握计算机硬软件与网络的基础知识;   (2)熟悉信息系统开发过程;   (3)理解信息系统开发标准.常用信息技

四层架构设计驱动模型在CKM中的实践

写在前面:本文纯属个人想法和http://www.aliyun.com/zixun/aggregation/7335.html">经验总结,如转载请注明出处,如有雷同纯属巧合 (: 1. 一般的架构设计流程 所有的软件开发方法都要解决从需求到实践的转换问题,为了提高软件的质量,前辈们提出了需求分析工程和各种建模技术,但是在需求和设计之间还是很难逾越,也就是说缺乏能够反映做决策的中间过程,于是软件架构设计应运而生. 对于架构设计人们已经提出了许多方法,分类为:工件驱动的方法:用例驱动的法:模

视觉设计师怎样让前端100%实现设计效果?

  这是一个经常被讨论的问题,「创新设计能力 & 跟进还原能力」.这是一个商业设计师而非艺术家的两重技能要素,同样重要,缺一不可,甚至在很多时候后者的作用力会更大,毕竟我们还是要做一个落地的商业产品而不是意淫的概念稿.这是任何一个在职的商业设计师能力模型之内不能被忽视的要素之一. 一.效果实现难度 设计师天马行空的大脑会迸发出各种奇思妙想,例如一个看起来酷炫的动画,结果跑到工程师面前,工程师很犯难的表示做不了,或者硬着头皮做到最后也发现不尽人意.所以前期对实现难度的基本沟通是必要的,很多时候,酷

在首席架构师眼里,架构的本质是……

目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识. 什么是道,什么是术?道是事物发展的本质规律,术是事物发展的具体途径.规律只有一个,途径很多,条条大路通罗马,罗马是道,大路是术.道为本,术为途,如果事先知道罗马在哪里,那么遍地是路,路路相通.架构也是如此,如果能领悟架构的本质,就不会拘泥于现有的实践和理论框框,而以最直接的方式解决问题,无招胜有招.本文的内容包括架构

架构的本质(转)

目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识. 什么是道,什么是术?道是事物发展的本质规律,术是事物发展的具体途径.规律只有一个,途径很多,条条大路通罗马,罗马是道,大路是术.道为本,术为途,如果事先知道罗马在哪里,那么遍地是路,路路相通.架构也是如此,如果能领悟架构的本质,就不会拘泥于现有的实践和理论框框,而以最直接的方式解决问题,无招胜有招.本文的内容包括架构

网页设计师需掌握的比较重要的6条能力

网页制作Webjx文章简介:网页设计师需掌握的6种能力. 我在前面的<抄袭–网页设计师必备的本领之一>讲了设计师提升设计能力的一个方法.那么,除了提升设计能力外,想做为一个优秀的设计师还有些方面需要了解甚至是学习才能设计好网页.不得不说一个网页设计师就是个杂学家.平面设计师可以随心所欲的使用各种特殊的字体.使用不规则的排版.等等,而由于网页的某些局限性使得网页设计师需要在些特殊的限定下完成设计.除了要懂得设计外,还需要了解甚至是学习些与设计无关的知识才能做好设计. 我在写本文之前虽然已整理过了