【什么人适合架构师】架构师到底是做什么工作的?
广义的架构师当中分两种。其实包括架构人员,和工程人员,也就是所谓的架构师和首席工程师。狭义的架构师一般是不写代码的,你所见的架构师写核心代码,其实是因为在实际工作当中,一般架构师还会兼任首席工程师。
首席工程师是解决具体工程问题的,比如写核心代码或者框架代码,也会处理相应的技术难点,比如性能问题,安全性问题,和一些灰色地带的问题。所以首席工程师还可以按领域分:首席框架工程师,首席性能工程师,首席安全工程师,所谓首席,就是他在这个领域最牛。在小规模公司,一般“主程序员”就是首席工程师,或者候补首席工程师。
而架构师按照系统的规模有区分,最底层的叫做应用架构师,application architect,这种一般是处理单一系统,或者有限的几个小的,紧密集成的系统的。他们主要确定模块群之间的关系,确定模块和大型子模块的高层设计(也有叫概要设计)。
再之上是多个系统群的架构师,叫做系统架构师(system architect)(或者系统群架构师),这些人不处理单个系统内部的设计,主要是多系统之间的集成,这个其实是最复杂的,需要很多精力,将多个系统当中的集成详细地画出来,是非常非常困难的事情。
再之上,是企业级架构师(enterprise architect,我不知道怎么翻译,就直译了),一般在国内,多数是CTO,在境外大的公司,会有一个CTO office,有数个企业级架构师组成这样一个委员会。
(在大多数中国公司的一种领导一言堂,在境外公司很少,主要是一个委员会集体决定)。企业架构师基本上已经不处理特别的一个具体的case,除非某个case是非常巨大,重要或者有战略意图。他们主要负责把控整个企业软件体系的方向,比如主要语言,语言混合比例,权重,软硬件,中间件的方向,迭代周期等等。
以上这些人,其实工作量不是日常恒定的。所以会有时候很闲有时候很忙的状况出现。他们很少有日常工作,主要还是以处理突发性,或者战略性为主。在中国,因为软件工程方面发展较弱较晚,并不区分首席工程师和架构师,所以很多架构师,你可以看到是在做首席工程师的工作。
处理最难的bug。这就像救火车,你不会希望救火车天天出勤,这意味着软件质量太差。你也不会因为救火车不出动而cancel它,因为一旦需要的时候,没有救火车,就是灾难了。