什么是架构师(Architect)以及要如何养成?

之前被问到这个问题的时候很头痛,因为一讲就要讲很久,而且对方如果底子不够的话,恐怕会像鸭子听雷。再说我不当工程师很久了,虽然见过各式各样的架构师,但是总不好意思一直拿十多年前的职场经验来吹嘘,毕竟信息科技产业进步很快,有些事情已然不同。

欣见这篇文章谈“从程序员到架构师”,也可以提供给上述提问者参考,省下我讲解的时间。虽然这里主要讲的是构建优化云计算服务的软件架构师,但是大同小异,尤其在非技术的部分,例如沟通、架构、抽象分析、决策等能力,则多半也适用于其他类别的架构师。有兴趣想理解架构师的人,或是想朝架构师发展的人可以大致浏览一下。以下是我的补充说明。

技能树

有些人看到上述文章,可能会先被两张“技能树”图片所震撼,一张是卓越的程序员(程序师)的技能树,一张是架构师的技能树,如作者所言,从程序员到架构师,是一个不断经验累积的过程,所以架构师不可能光是懂一堆高深的理论却不懂得写程序。然而各位如果比较这两张技能树,会发现有大不同,并不是单纯靠累积经验值就能升级的。

不过,请注意到,架构师有很多类型,技能树有所不同,分享文可以作为参考,但是不要被绑住了。我个人不认为要刻意去把技能树上的技能学全,重点应该在于融会贯通重要的技能,有一套能解决问题的好方法。

化学反应

因为经验积累到后来, 重点不在于“量的增加”而在于“质的跃升” ,所以不是说你学过越多的语言和算法、用过很多的工具、做过很多的项目、写程序代码的速度超快,就能蜕变升级成为架构师。过程中必须产生类似化学反应,才能将经验和能力集成后提升到另一个层次。但这个类似化学反应的蜕变的关键和契机因人因领域而异,很难说明清楚,分享文中也没有多讲。我最后会谈一下这件事,并且分享一下我的个人经验给朋友们参考。

重质不重量

为什么说学了很多东西、项目做得再多,未必能成为好的架构师呢?好比你拿了五个硕士学位,是否可折换一个博士呢?当然不行,因为真正博士等级的训练极为注重“质的跃升”,看看学生是否能在融会贯通知识经验之后,做出优秀的原创作品。同理,发布十篇二流的论文是否等同于一篇一流论文?做了十个“快老二”的研发项目,是否相当于做出一个高技术门槛的原创作品?当然不是。

当事人本身要具备足够的基础,其次则是要有适合的环境以及良师益友,否则恐怕学再多也难以济事 。至于“质”要如何来认定呢?通常得通过实际战果以及其他资深架构师的肯定来孚众望,否则即使勉强挂上架构师的头衔也是无用。

视野和典范

重质不重量的概念并不难懂,但实际上与当事人的视野有关。所谓“夏虫不可语冰”,如果根本没看过架构师,缺乏典范,那么要如何评价一位架构师或是学习成为一位架构师呢?有些工程师长年卖力钻研,成为某项技术项目的达人,但是技术达人并不见得具备架构师的能力。台湾的信息电子业有不少的技术达人,但是在产业需要转型提升的时候,需要构思前瞻和总体策略的时候,才会发现架构师的重要性。

架构师的光谱

架构师有许多种,有的偏软件,有的偏硬件,但是大多数都要软硬兼备的素养。分享文所谈的云计算软件架构师,比较偏向软件技术,但是也要懂得系统架构和性能分析优化;台湾比较常见的是嵌入式系统的研发工作,过去的发展受限,往往停留在为硬件产品写固件(firmware)的层次,但是到了物联网时代之后,就开始需要懂软件的系统架构师来带领方向。到了数据挂帅的今天,还要再加上AI和信息安全的素养,又是另外的维度。

基本素养和专业能力

刚进入信息科技领域的学生,由于从写程序入门,往往过度热衷于写程序(或是完全排拒写程序)以及沈迷于算法。其实这些就像英文和数学一样,是信息科技人的基本素养,某些公司面试新进员工的时候,考验程序写作和算法的功力,也是理所当然的事情。但是切莫以为基本素养就是专业能力,应聘资深工程师或架构师的时候,除了确认有基本素养之外,更加着重于专业能力。

什么是专业能力呢?请参考一下技能树。基本上,信息工程系课程中有不少有助于培养架构师的课程,不要傻傻的觉得会写程序就行。有些东西在大学和研究所时期不好好打基础,到了业界就难了,尤其是与系统和硬件相关的技术,需要有环境与良师益友,才会事半功倍。

环境与良师益友

回顾我自己在求学和担任工程师的过程,感到颇为幸运地找到不错的环境和良师益友。我高中参加电研社开始奠定写程序的基础,大学则是从电子电路、嵌入式系统到大型计算机都碰过,尤其是后来出国念博士班时专注研究大型平行计算机性能优化技术的时候,有机会钻研最先进的软硬件,是我个人蜕变的关键和契机。


Jacob Lund via shutterstock

之后到硅谷Sun工作的那几年,有幸在性能工程部门,与处理机设计部门、高端服务器系统架构部门、网络存储产品部门、操作系统核心开发部门、信息安全研究部门、Web软件发展部门的资深架构师共同合作,不仅实际验证我的技能,也通过他们对我的赞许让我拿到成为架构师一员的门票。

架构师的发展机会

在我选择回国家教书的时候,有几位具备架构师资历的同事也离开公司回到他们的祖国贡献于科技业。好几位回去中国发展的同事,获得政府的注资,后来发展得很不错。相形之下,台湾信息产业转型提升的步调颇为缓慢,无论是产业或学术,鲜少人了解架构师的重要性,愿意长期积累技术经验成为架构师的人少得可怜,乃至于大多数人连架构师是什么都不大清楚。但有趣的是,这几年业界想转型,三不五时就会有朋友要我推荐架构师。

我分享以上这些个人经验和看法,不是想往自己脸上贴金,只是想告诉学生们什么是架构师以及如何把自己培养成架构师的历程。当然,我不是什么厉害的架构师,只是当年有幸从多位厉害的架构师身上学到一些皮毛而已,不过我认为我这点皮毛,在这个架构师罕见的学术环境,还是有点价值,也欢迎理解成为架构师的难度后仍想成为架构师的学子们一起来学习。