几年前规划自己的发展方向时,待选目标里面有:

  1. 后台系统架构师
  2. 技术专家。

按当年的理解:架构师偏向于技术的广度,要带领团队建设系统。技术专家偏技术的深度,更关心自己的一亩三分地。

什么是架构师

但什么是架构师呢,似乎并没有清晰的职责描述,不像"JAVA程序员"这个职位一样,很明确的知道其岗位职责。从国内互联网公司的职业体系看,虽然招聘jd上会有架构师的岗位,但入职后,往往采用通道+职级的称呼方式,比如"初级后台开发工程师", “高级后台开发工程师”,架构师不会经常提起。

之所以出现这样的情况,是因为没有搞清楚这些称呼的真是含义。按我现在的理解:“工程师"是一种职业,类比军队行业的"军人”; “初级后台开发工程师”、“高级后台开发工程师"是一种职级,类比"营长”, “团长”;而"架构师"只是一种临时的、针对特定项目的头衔,类比于军队中的"总指挥官"也是针对特定战役的。所以说"架构师"是服务于一个特定产品或项目的,而充当架构师的往往是一些高级开发工程师,如果说招聘JD里面说招聘一名架构师,那潜台词已经表明招聘一名高级工程师了。

到这里可以给出架构师的定义了:架构师,指的是某一项目或产品的架构设计者

举例说明,Anders Hejlsberg在wikipedia中的一个称呼是:the chief architect for the team that produced Delphi

那一个项目的架构师应该架构哪些方面,其应该具备哪些架构能力,怎样衡量其是否完成架构呢?

为什么需要架构师

如果一个规模很小的软件,一个人可以完成,则此时不需要架构师,只需要关注代码的结构。只有当项目规模复杂,涉及人员较多时,为了更好的完成项目,此时才需要架构师,其职责是:

  1. 分层,拆解模块
  2. 制定接口规范,中间件选型,统一术语
  3. 推进开发进度,关注开发风险
  4. 关注性能和扩展性问题

架构师的目标

“总指挥官"的目标是通过指挥达到战役的胜利,架构师的目标当然是通过架构达到产品的成功。那怎样算成功呢?

  1. 产品本身是积极向上的,是有益于社会的。
  2. 产品的按时交付,为公司或组织完成了更高层次目的。
  3. 产品的可持续性。

架构师的能力要求

  1. 更高的视野
  2. 了解团队的实际情况
  3. 丰富的技术经验
  4. 攻克难题的能力
  5. 人才的传承