什么是架构师
我的目的不是做某一个平台或者功能,而是做成一个系统,并在此过程中,锻炼自己,成为架构师。
架构师(Architect /ˈɑːrkɪtekt/)是很多技术人员的职业发展目标。但是绝大多数人(至少我身边的绝大多数人),对于架构师的定义、工作职责、能力要求并没有一个很清晰的了解。这也就导致大家的职业规划只是嘴上说说,没有明确的目标和行动策略。
架构师的定义
wiki 上对于 architect 的说明如下:
An architect is a person who plans, designs and oversees the construction of buildings. To practice architecture means to provide services in connection with the design of buildings and the space within the site surrounding the buildings that have human occupancy or use as their principal purpose.[1] Etymologically, architect derives from the Latin architectus, which derives from the Greek (arkhi-, chief + tekton, builder), i.e., chief builder.[2]
Professionally, an architect’s decisions affect public safety, and thus an architect must undergo specialized training consisting of advanced education and a practicum (or internship) for practical experience to earn a license to practice architecture. Practical, technical, and academic requirements for becoming an architect vary by jurisdiction.
架构师一词起源于建筑学,这是一个专业性要求非常高、且知识范围涵盖比较广的职称,必须经过专业的训练和实践,才能获得该职称。这和建筑的要求有关联,试想如果一个高楼因为架构不合理,在使用过程中突然塌了,后果不堪设想。
软件开发其实也是类似的,如果初期架构设计不合理,到后面轻则推到重来,重则导致严重 BUG,如果是一些对于安全和稳定性要求非常高的行业,比如医疗、航天、银行等等,出个事故也是非常严重的。
但是我们目前面向开发人员,是没有这类专业训练的,都是自己在工作中摸爬滚打,去踩坑踩出经验。这其实是很缓慢、很局限的,你的视野往往受限于你当前的工作范围,做出的设计也难以应对将来的变更。
架构师的工作乐趣远比程序员低,因为架构这个东西,其正向反馈的速度很慢,不像写程序,可以快速看到成果。因此如果立志要成为架构师,你就得先确定自己能接受这种慢反馈的工作。
架构师的工作职责
个人感觉就 2 点:
1、整体规划:制定系统性的解决方案
架构师是把握整体方向的人,因此必须要有良好的整体规划能力,这个需要有很强的全局观和前瞻性。架构师经常需要画图(架构图、战略图等),并且持续不断的去完善这些图,其实就是完善整体规划。
参考大盘上涨时行情堵包的案例:今天说堵了,加两台机器;明天又堵了,又加两台机器;结果天天加,天天堵,但是问题一直没解决。
普通开发:头痛医头,脚痛医脚。
架构师:设计系统性的解决方案。
2、协助他人>成就他人->成就项目->成就自己
一个人是成不了大事的,架构师完成整体规划后,细节上的实现就需要借助大家去实施了。在实施过程中,架构师需要凭借自己丰富的经验去帮助他人完成工作,进而成就他人,优秀的完成整个项目和工程,最终成就自己。所以架构师也必须具备优秀的沟通、人员管理、协调、推进能力,能驱动他人做事。
如何成为架构师
最近看到一篇文章,里面提到一个概念:
只有天才的程序员,没有天才的架构师。
架构师其实也是一个普通的职位而已,一定是从项目经验中慢慢积累起来的。也就是说,只要你的经验足够多,那么你就一定可以成为架构师。注意这里的经验,可绝对不是将一年的经验重复十年这种,而是真正的从事不同规模、难度、类型的项目。
所以,成为架构师其实也很简单,只要你不断尝试更大规模和复杂度的项目,善于积累和总结,那么自然就会水到渠成了。
复杂到一定程度,架构出现是必然的,和前端、后端没关系。
一些经典语录
有经验的架构师通常会
提前花时间踩坑,然后让新加入的同事认为这些很自然,是应当的,在开发过程中感受不到阻滞的存在。这个坑可能是具体技术上的,也可能是流程和组织方式上的。
架构师的职责:规范、模型、配套工具
能力强的架构师,会考虑
整个团队的技术层次,如果架构师不考虑整个团队每个成员的技术层次,那么做出来的东西如何谈性能?
打个比方:你团队里的开发人员还处于套模板的阶段,而你架构了一套基于 node 的模块化,那么这东西要如何继续下去?
参考资料
怎么判定 web 前端架构师的能力高低? - 张云龙的回答 - 知乎 https://www.zhihu.com/question/26187669/answer/32470493
怎么判定 web 前端架构师的能力高低? - 老仙奶我写出 bug 的回答 - 知乎 https://www.zhihu.com/question/26187669/answer/493555282