架构师的必备素质和成长途径

2016年11月18-20日SDCC 2016中国软件开发者大会,易宝支付CTO陈斌给我们带来了“架构师的成长之路”的演讲。主要谈及了架构师的必备素质和成长途径及给准架构师的建议。


它山之石可以攻玉,尽管每个架构师都有自己的成长路径,但是了解其他架构师的成长之路,对未来想成为架构师的人有一定的借鉴价值。首先以我自己的成长过程为例,描述一下我的架构师之路。

图片描述

图1 我的架构师之路

1989年研究生毕业后进入政府机构工作了三年,随后加入新加坡国际航空公司,从事IBM主机系统的汇编语言研发。顺应互联网技术的发展,航空公司开始把订票业务从传统的主机终端转向现代化的彩色PC客户端。为此需要在IBM主机系统和UNIX/Oracle数据库之间来回传输数据,所以我就开始研究Unix/oracle,取得了Sun、HP和Oracle的认证,并由此进入了互联网技术领域。2000年以前,很多系统都是采用两位数字来标识年份,比如02代表1902,一个客户的出生年份是1902,系统会把他的年龄当成是两岁,这就是所谓的世纪之虫。很多医院、铁路、银行、政府机构都面临着这个问题,采用新的基于Unix/Oracle和互联网技术的新系统成为一个有效的解决方案。美国在这个方面有大量的需求,因此我就去了美国,专门做主机系统和Unix/Oracle以及互联网上的信息交互,这让我有机会接触大量不同的架构和系统,从而积累了丰富的经验,为后期的架构师之路奠定了坚实的基础。

日本工程师的特点是专、深、细,但是缺乏把所有的要素整合到一起解决一个问题的系统集成能力,所以我就成为负责系统集成的总体架构师,大量的系统集成业务为我提供了丰富的锻炼机会,把业务需求转换成技术解决方案,并进一步设计成各种系统,这些工作为我积累了丰富的架构经验。2004年,加入Abacus任首席架构师,开始协调其他的架构师一起做航空订票方面的互联网技术架构工作。2008年开始在eBay和PayPal任移动应用的高级架构师,从互联网时代进入移动互联时代。

纵观自己的架构师成长之路,我认为必须要踏踏实实地做好当下的事情,保持好奇心,不断地学习新技术、积累新经验和掌握新技能。紧跟时代的发展和技术的进步,不断地扩大自己的业务和技术领域,那么成长成为架构师就是水到渠成的事情。

建筑设计与软件架构

图片描述

图2 古玛雅金字塔建筑设计之美

要了解架构师的成长之路,就要先清楚什么是架构。架构一词不是软件行业的专有名词,而是从古老的建筑行业借来的。在墨西哥有个很出名的古代玛雅金字塔,叫ChiChen Itza。塔的四个面分别代表春夏秋冬四个季节,每个面上有91级台阶,代表每个季节91天,4X91=364,再加上塔顶共365,代表一年有三百六十五天。在每年的冬至和夏至,塔身因为阳光照射会出现神奇的蛇影,准确地预测季节变化。古玛雅人的架构设计形神兼具,甚为奇妙,充分体现了架构之美。我们今天的软件系统架构设计与之相比,相形见绌。

图片描述

图3 建筑师如何做架构设计

在日常工作中,架构师在设计系统的时候会画一张图,HP的服务器,思科的路由器,Palo Alto的防火墙,Tomcat的应用容器,MySQL的数据库等,把各种产品拼凑在一起叫架构设计。这是很棒的产品宣传。如果这是一部电影,可以售卖植入式广告。每个解决方案的供应商都肯定会对这个架构设计表示由衷的感激。 对建筑物,最好的建筑师从来不用供应商的名称来描述桁架、梁和支撑,而是用这些部件的大小、负载能力和组成等。这是因为建筑师会基于价格、信誉和质量选择不同供应商的解决方案。建筑师心里很清楚,用供应商的名字描述的是实施,而通过规范和要求来描述,这才是架构设计。

实施代表着你已经作出了选择性的决策,这些决策包括成本的考虑、自建与外购、投资回报率、团队的技能等等。用C++、JavaPHP作为编程语言并不代表你的架构;相反,这些只是为实施架构的组成部分而选择的工具和材料。选择微软数据库,还是Sybase、mysql或者Oracle数据库,这并不是架构,而是实施架构中的数据库组件。选择使用开源系统还是由供应商提供的解决方案是另一个实施决策的例子,这与使用微软的操作系统还是Linux的某个版本同样是实施决策。

假设现在某个业务需要一个解决方案,架构师负责把业务解决方案转换成技术解决方案,如果把所有产品罗列起来或许可以解决问题,但是也肯定不会有什么创新的机会。相反,如果从事情的本源或本质出发,往往有机会创造新工具或新方法,这就是非技术设计的概念。例如,当我们要解决近实时的动态交易量统计的时候,可以利用传统的数据库来做累加。也可以写一套类似Storm的工具,既轻松优雅地解决了问题,同时也带来了创新。做为一个合格的架构师,就要有能力从事情的本源出发去独立思考问题并做出各种分析和设计,最后拿出一个非常合适的解决方案。

架构师的必备素质

图片描述

图4 架构师的七个素质

做为一个合格的架构师必须具备七个重要的素质,包括业务理解、技术广度、技术深度、丰富经验、美学素养、动手能力和沟通能力。架构师的业务素质就是指要懂业务,对业务有足够的敏感度,能够清楚地知道自己的设计能给公司带来多大的业务影响。对技术素质最基本的要求是深度和广度。美学素质是要求架构师有美感和艺术感,所以易宝经常安排技术人员听音乐会,看艺术表演,因为艺术和设计是相通的。动手能力是指在适当的时候架构师能够上手实际操作,需要写代码的时候动手写代码,尤其是底层的关键代码。沟通能力也极为关键,因为架构师水平再高,如果沟通能力很差,花半天时间说不清楚自己的方案,那么再好的方案又有什么用途?在易宝每个周五的下午请架构师进行内部分享,讲讲最近都设计了什么有价值的系统,把自己做的解决方案用一句或几句话清楚地表达出来。因为能简洁地表达清楚意味着架构师已经深刻地思考和提炼了自己的设计思想。

在美国工作时,曾经有一位CTO跟我说:我不希望架构师有太多的协作,希望架构师都是孤单的鹰。你什么时候看见过鹰是一群一群飞的?真正的雄鹰都是飞得很高很孤独的,架构师也是这样。这里并不是说架构师不需要交流,而是在正常的情况下,架构师应该有足够的智慧和独立思考能力去做出最优的技术与业务判断。架构师的位置越高这种孤独性就越大。假如你是CTO,整个公司的技术问题都要你自己去规划,并对结果负责,根本没有人可以商量。要求有鹰飞的高度还有一个原因,就是只有飞到一定的高度才能够看到全面和整体。另外,除了飞得高,还要求架构师要有鹰一样敏锐的眼睛,能够观察到设计中不为人知而又很重要的细节。架构师还要具备有艺术的品位,设计出的系统足够优雅,那么,应该怎么理解这个品位呢?每个系统研发人员,如果做研发的唯一目的是实现一些代码,做出某些满足业务需求的功能,那么就没有什么艺术品位。所谓的品位是指有个人独特的风格。做出的解决方案,具有不同于常人的地方,是经过架构师充分的独立思考提出来的。我们非常看重有独立思考和个人风格的艺术品味。

图片描述

图5 架构师的三商

架构师要怎么做才能具备鹰飞的高度、鹰眼的敏锐和艺术的品味呢?首先架构师要有较高的智商,其次,架构师要有一定的的情商,做为一个高级的技术人员,拥有开放的心态、谦虚的态度、幽默的气质会帮助他传播自己的设计理念,形成自己的设计风格,赢得广泛的影响力。再次,还有另外一个不常为人知的悟商亦至关重要。这是百悟科技的负责人张总从老子《道德经》里领悟出来的,我有幸为该书作序。所谓的悟商是指足够快速感应并适应周边环境变化的学习能力。做为一个架构师,要能跟随技术发展的脚步,该做主机系统的时候学习主机系统,该做分步式计算的时候能适应分布式处理,该做移动应用时能设计移动服务。技术在不断地演进,业务在不断地变化,在这个世界上唯有变化是永恒的,特别是互联网技术领域,架构师的悟商有多高,学习和适应能力有多强,基本上决定了这个人能在架构师之路上能够走多远。

架构师成长途径

关于架构师的成长之路,还存在着一个误区,就是把架构师默认为软件架构师。因为今天我们所遇到的架构师,大多数都是围绕着软件研发。事实上这个认识有一定的片面性。诚然,现今我们所构建的系统都是软件系统,但是在实际的工作过程中,随着信息技术在深度和广度上的快速发展,除了软件研发以外,测试、网络、安全、配置、系统和数据都已经形成了具有自己独特专业知识和经验的领域,也都需要各个领域的架构师。比如信息安全是一个非常专业的领域,要软件架构师无法完全理解和驾驭信息安全是勉为其难。网络架构师日常研究的各种网络问题,软件架构师也难以置喙,因为这是完全不同的两个领域。数据方面亦如此,能够把整个公司业务数据之间的关联性了然于胸的人,一个公司或许能有一两个,这种人就是数据架构师。现实的情况是,软件架构师占据主导地位,基本上掩盖了其他领域架构师的光芒。当然出现今天这种情况的主要原因也是因为大部分的技术领导者也都是来源于研发领域。这种状态要尽快改变,否则在运维、安全、数据、测试等其他领域工程师很难有自己的成长空间。

图片描述

图6 架构师的种类与成长历程

架构师的成长基本上可以分为初级、中级、高级、架构四个阶段。初级阶段是指大学毕业后的两年时间。这两年主要就是学习,目前大学的教材和讲义往往比现在企业正在使用或者发展的技术有一个时间差。学校教授的东西可能是几年前的技术,不是当下正需要的,所以毕业进入企业后要通过不断的学习赶上新技术发展的步伐。中级阶段是指两年到四年这段时间,主要是积累知识和技能,比如,怎么思考业务问题、怎么解决问题的技能,在这一阶段的人会在自己的工作小组内暂露头角,小有影响力。高级阶段是指四到七年这段时间,在这一阶段主要是积累经验,就是说以前类似的业务问题是怎样转换成技术解决方案的,这次应该怎么解决,方案的优点是什么,缺点在哪儿,未来怎么改进等等,这个阶段的人会逐步在自己的部门内有一定的影响力,开始带团队。架构阶段是指至少具备七年以上的经验,在美国,其实架构师不少都是鬓染白发的技术领导者,我在eBay工作的时候属于比较年轻的架构师。到了架构师这一阶段,企业期望架构师具有能够把各种经验和知识综合发挥的智慧,这里强调的是智慧,而不仅仅是经验,而且要求他们具有跨部门的影响力,也就是架构师的设计方案能够影响到公司副总裁一级的决策。

给准架构师的建议

总而言之,对普通技术人员成长为架构师,我有五个建议:第一要有高度,培养自己的思维高度,从而对技术和业务有整体的视野。第二要有深度,培养自己独立思考问题,看清问题本质的能力。第三要有广度,拓宽自己的技术和业务范围,从而确保自己不成为井底之蛙。第四要有新度,培养自己的好奇心,对任何相关的东西都感兴趣,并想去了解,不断地学习新技术掌握新技能。第五要有沟通力,培养讲清楚方案的能力,特别是用一句话把事情讲清楚的能力。今天,互联网技术飞速发展,已经成为社会和生产的重要推动力,架构师的作用由此变得愈来愈重要,成为很多技术人员的职业目标。从普通技术人员成长为架构师是一条艰苦漫长而且布满荆棘的路,如何对准目标、设计路径、培养素质、积累经验是每个想成为架构师的技术人员都必须要认真思考的问题。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 成为一名 Golang 架构师需要掌握的技能包括:熟练掌握 Golang 语言的基础知识;熟悉 Golang 应用程序的构建;具备良好的编码能力;了解 Golang 常用的 Web 框架;熟悉分布式系统概念及架构;具有高可用架构设计能力;了解常用的数据库及缓存;具备良好的调试和性能优化能力。 ### 回答2: 作为Golang架构师必备的技能主要包括以下几个方面。 首先,深厚的Golang编程基础是必不可少的。作为一门编程语言,Golang具有简洁、高效的特点,因此熟练掌握Golang的基本语法和编程范式,能够灵活运用Golang的各种特性和库,是架构师必须具备的基本技能。 其次,设计和构建分布式系统的能力是重要的技能之一。在当今云计算和大数据时代,分布式系统成为了架构师必须面对的挑战。掌握分布式系统的设计原则,了解分布式系统的常见模式和技术栈,能够使用Golang构建高可用、高并发、可扩展的分布式系统,是架构师必备的技能之一。 此外,良好的系统设计能力和架构思维也是不可或缺的。架构师需要能够对系统进行全局的规划和设计,考虑系统的可靠性、可扩展性、性能等方面。通过分析和抽象复杂的问题,采用合适的模式和架构风格,将系统划分为不同的模块和组件,并定义它们之间的交互和通信方式,以实现系统的复杂需求。 另外,熟悉常用的开发工具和框架也是必备的技能之一。如Docker、Kubernetes等容器和容器编排工具,如gin、beego等Golang框架,如ELK、Prometheus等监控和日志分析工具等。熟悉这些工具和框架,能够帮助架构师更高效地构建和部署系统。 最后,良好的沟通和团队合作能力也是Golang架构师必不可少的技能。架构师通常需要与产品经理、开发团队、测试团队等进行有效的沟通和协作,了解需求和业务,提供技术方案和指导。同时,能够与团队成员密切合作,共同完成项目的设计和开发。 总之,作为Golang架构师,需要具备扎实的Golang编程基础、分布式系统设计能力、系统设计和架构思维、熟悉开发工具和框架,以及良好的沟通和团队合作能力。 ### 回答3: golang架构师必备技能包括以下几个方面: 1. 熟练掌握Golang语言:作为Golang架构师,首先需要对Golang语言有深入的理解和掌握。这包括了对Golang语法、特性、标准库的熟悉,以及对并发编程、内存管理等方面的了解。只有对Golang语言的熟悉,才能使用它来构建可靠、高效的系统。 2. 深刻了解分布式系统设计:架构师需要有扎实的分布式系统设计知识和经验,包括分布式计算、分布式存储、分布式消息传递等方面。对于Golang架构师来说,熟悉Golang在分布式系统中的特性和优势,能够合理地应用Goland来设计和开发分布式系统,提高系统性能和可扩展性。 3. 掌握常用的系统设计模式:架构师需要了解和掌握常用的系统设计模式,包括但不限于单例模式、工厂模式、观察者模式、代理模式等。这些模式能够帮助架构师更好地设计系统结构,提高系统的可维护性和可扩展性。 4. 熟悉微服务架构:微服务架构是一种将系统拆分成若干小的、自治的服务的架构风格。Golang架构师需要熟悉微服务架构的原理和设计思想,并且能够使用Golang来实现和部署微服务。熟练掌握微服务架构可以提高系统的灵活性、可扩展性和可维护性。 5. 具备高可用和高性能系统设计能力:架构师需要具备设计高可用和高性能系统的能力。这包括对系统性能的监控和优化、负载均衡、容错处理等方面的知识。Golang作为一门高性能的语言,架构师需要了解Golang的性能优化技巧,使用Golang构建高可用和高性能的系统。 总之,作为Golang架构师,不仅需要熟练掌握Golang语言,还需要具备分布式系统设计、系统架构设计、微服务架构等方面的知识和经验,才能设计和构建出高效、可靠的系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值