在不同的公司,由于组织架构不同,每个公司的技术团队都有不一样的特点,但是不管什么公司,你一定都听说过架构师这样一个职位,那么架构师这个职位是做什么的呢?
一、架构师的定义
以下是维基百科对系统架构师的定义:
系统架构师(System Architect,簡稱SA或SAr),是在信息系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施的人。他们(与系统分析师共同)确立系统的主体架构和实现方向,并负责指导软件工程师等开发人员的编码开发工作。
通过定义,我们得知,架构师有如下几个职责:
- 技术选型
- 主体框架搭建并实施
- 确定系统的实现方向
- 负责指导软件工程师
二、架构师的误区
因为以上架构师的职责,许多人对架构师的工作有了误区,主要有以下几个误区:
- 架构师负责把控项目进度
在专业的公司中,有专门把控进度的职位,我们称之为项目经理。
项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能
对架构师产生此误区的原因为,在有些公司,架构师是带领团队完成整体设计到产品上线的,所以容易让人对架构师产生此误解。
- 按照架构师的框架开发就行,无需怀疑
在架构师搭建出来框架后,因为有些情况是臆想出来的,与实际开发过程不符也是正常现象,一个好的框架搭建出来,少不了的是这样一个正向过程:
设计
验证
反馈
其次,架构就算在稳定之后,也不是一直一成不变的,也会随着业务的变化而演变
使用一个技术就好比是搭积木,只要问题明确 ,寻找技术并组合来实现架构 的拆分并不是难事 。如果架构师能够深人理解技术背后的驱动力 ,了解技 术是如何实现的 ,则能够做出更合适的判断和选择, 这就是所谓的 “接地气”。 所以架构 师在做好架构拆分后, 会形成不同的生命周期 。针对不同的生命周期 ,要选择不同的技术来进行支撑, 再把不同 的生 命周 期分工交 给不同类型的软件工程师去实现。 这就是架构师和技术人员的分工配合 架构师拆分生命周期 ,技术人员实现生命周期。
- 架构师不用写代码
我也见过一些架构师,就写写ppt,说一下思想,就把活丢出去的人,这个是对架构师最大的误解,也是我本篇最想说的内容。
一个只做高层设计,不低下头去写代码的架构师,那就相当于纸上谈兵。
这样的架构师会造成一系列的问题。
想做好技术的使用者并不容易。架构师必须深入地了解不同的技术, 知道这些技术的强项和弱点, 懂得合适的取舍。 比如作为一个 建筑架构师, 建造砖瓦结构的房屋 ,如果不了解 砖、 瓦是怎么制作出来的, 就无法理 解砖 、瓦的特性、 弱点以及寿命, 也就使用不好砖、 瓦。 如果没见过砖瓦匠如何使用砖瓦 砌墙的, 就不知道有些砌法是中空的, 有些是实的。 不同 的砌墙技术, 其承重能力如何保温性 能如何, 等等 ,都无从得知。这样是无法使用好技术的 。同样, 无论是采用钢结构, 或是采用木结构, 都要对这些材料, 以及现存 的技术有一个比较通透的 解 ,才能够做出靠谱的判断, 但并不是说架构师必须是所有技术的 专家 。比如木结构里面的 “榫 卯” 1 结构 ,架 构师可以 很了解并使用 。但让架构师自己来做 一个 “ 榫 卯 ” 结 构 , 则并不容 易 , 木工活要非常精细才行 。当架构师需要 一 个 “ 榫 卯”的时候,还是要找木工来解决问题,而不是花时间去学习木工,自己来做。
三、架构师不写代码会怎样
- 不能准确感知自己设计的架构是否有问题:如果仅依赖于“验证->反馈”,这样一个过程,会出现
- 反馈的结果可能是错误的
- 在出现问题的时候可能没人反馈
- 长期的疏离代码,会让架构师的技术判断力下降,感知力的缺乏,会让架构师的架构能力越来越弱
- 只写代码的架构师更加不合格
作为架构师,如果把大部分心思花在写代码上,代码感知力是很强了,可是更上一层的高屋建瓴的能力,也即是架构师的核心竞争力,就会下降了,所以一个架构师花费少量的时间去写代码就行了
四、架构师需要具备的能力
沟通能力
往往一个项目甚至一个产品的上线,需要多个团队共同协作,产品、业务、软件研发、硬件研发等等。
在三国中有一个非常著名的典故,叫做七擒孟获,为何诸葛亮要如此大动干戈呢,因为
一个人只有口服心服,才能好好地为你做事,才能让你无后顾之忧
而沟通能力就是具有,在跨部门的过程中,让其他部门的人心甘情愿帮助你的能力,并且在这种情况下,他们针对出现的情况还会给出合理化的建议,让你的工作做的更好。
领导力
架构师需要安排软件工程师做很多工作,具有影响力,能获得软件工程师的信任,能协助你把工作做的更好。
技术判断力
架构师每周都可以
- 花两个小时,去写写代码,写写需求
- 与其他部门和团队多沟通
以此在高屋建瓴和实际落地,两个层面把架构做好。
五、小结
本篇文章主通过
- 架构师的定义
- 架构师的误区
- 架构师不写代码会怎样
- 架构师需要具备的能力
介绍了架构师并讨论了架构师该不该写代码,并得出结论:架构师每周最好可以花费2个小时左右的时间写代码