在我的理解中架构师是一个既懂得技术又懂得业务的中间角色,当然也是关键角色。
虽然架构师在市场上按照开发语言或者项目可以分为很多种,比如软件架构师、java架构师、php架构师等等,但在工作内容与性质上没有本质区别,同样要求架构师自身具有深厚的技术功底与较强的沟通能力。
这两个要求本身就注定了架构师的稀缺,对我自己而且虽然有着架构师的职位名头同时也在做着架构师的工作,但我却无法否认我距离一个合格的架构师还具有较远的距离。
- 首先说技术功底,架构师要想全面而完善的设计一个系统需要对项目各个阶段与技术有较深的了解,因为对于系统而言任何一个环节出现了瓶颈那么整个系统的效率都将随着这个瓶颈而降低,这就要求架构师对代码效率、数据库结构、运维效率都必须有明确的架构设计;这就从而延伸出了架构师的工作内容:服务器架构、代码架构、数据库设计甚至包括代码审核、自动化运维等等;而要想全面精通这些技术显然难度是很大的,一般的小厂达不到这样的技术需求也就没有实际的实践可言,而大厂一般分工非常明确与精细,要想全面精通这些技术需要付出巨大的努力,因此每个成功的架构师都是非常难得的。
- 其次说沟通能力,技术出身的估计给人的感觉都是寡言少语、神情木讷,而事实大部分也确实如此;要想长期坐在电脑前从事技术工作需要安静的自我空间同时与人交流也会相对减少,这就造成了开发人员不喜欢说话的错觉,但不管是性格也好或者工作需要也好与人沟通的减少必然会使得缺少与人沟通的技巧与熟练度,那么相对应的技术人员沟通能力也会相应降低。
那么架构师到底是做什么的呢,借用我看到的一篇文章的说法:
能够把一个复杂的大系统真正的想清楚与透彻,同时还能够把大系统拆分成松耦合的多个模块,最后又能够在各个模块独立并行完成开发后,能够通过预先定义的接口将这些模块组装与集成起来,这就是一个架构师应该做的事。