GitHub 趋势榜第一的项目来自架构师 Justin Miller,他分享了自己关于「如何成为更好的软件架构师」的想法,这个 repo 现在已有 5.4k star。
几年前有人问我:「你是怎么成为一名软件架构师的?」我们就此探讨了必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从那些五花八门的工作中学到的东西。
软件架构师是什么?
在进行深层次的探讨之前,我们先来看两个定义:
- 软件架构师:是指那些制定高级设计决策,并确定技术标准(包括软件编程标准、工具和平台)的软件专家。这之中的首席专家就是总架构师。(来源:Wikipedia: Software Architect)
- 软件架构:是系统的基本组织构成,这种组织主要体现在其组件、组件之间的关系、组件与环境之间的关系,以及决定系统设计与演化的原则。(来源:Wikipedia: Software Architecture)
架构的「层级」
架构主要可以抽象成以下几个「层级」。不同层级所需的技能也不同。尽管对层级的分类有很多种标准,但是我最喜欢把架构分成 3 个层级: