很多做软件开发的小伙伴都立志想成为一名系统架构师,却不知怎么样才算是一名合格的架构师,下面我们一起来看看!
一、架构师需要具备什么能力?
这个其实不太好回答,在招聘网站上,不同的公司对架构师要求都不一样,公司的业务不同对架构师能力的侧重点也有不同。但基本要求的能力至少满足以下几点:
1、负责公司系统架构的设计、研发工作
必须在某一特定领域有自己深刻的理解和实践经验,比如在java领域,就应该熟悉各种开源框架,并能在开源框架上开发各种系统功能,比如系统安全,与异构系统通信协议、高并发下各种缓存、集群、分布式。架构师应该是在微观上能解决各种系统异常的人,宏观上能为公司的发展提供可匹配的架构支持(架构水平可扩展)。
2、能够制定技术规范,能够对开发人员在技术上提供指导
所以架构师必须在技术上有一定权威的人,必须是团队的技术核心人物,能够根据最佳实践制定技术规范,并要求技术人员按照规范实施。如果开发人员,尤其是新员工不能理解如何使用架构进行开发的时候,架构师应该组织对大家培训,开发相应的demo,交付大家使用,必要时,必须阐明架构为什么这么设计的缘由。试想,如果在关键的技术决策的时候,没人care,想想你真的具备架构师的能力吗。
3、组织大家完成技术攻关,对核心的技术选型有自己见解,能识别系统风险点,也能识别系统的优化点
在关键的技术难点需要攻关的时候,架构师应该冲在前头。有经验的架构师,应该在系统设计之初就应该预想到可能的技术难题,并提前做技术研究。所以架构师必须知识面比较广,能够对不同的技术选型有自己的判断,并能对不同的技术组合做出权衡,识别各种技术选型与组合的风险,对已经运行的系统,应该持续优化,既能够凭借自己的经验识别系统的优化点,也善于运用各种工具,定量化分析系统的性能瓶颈,并组织技术小伙伴一块解决。
4、业务理解能力与一定的项目管理能力
上面说的三点,想必立志成为架构师的小伙伴都能明白。但是在技术上有追求的架构师对业务、对项目管理天生有一定的排斥感,因为这两样都必须和人打交道,跟人打交道对架构师来说效率低下(其实,很多架构师都偏内向,不喜欢也不善于和人打交道),不如敲代码那么酣畅淋漓。所以,直觉上认为,执着于做一个架构师是不需要以上两方面的能力,把架构做到极致、把技术做到极致就够了。其实,技术是服务于业务的,你的用户只有两千人,你做个能应对两千万的人架构那只能是浪费资源。对业务的理解会有助于架构师在更高层面上去理解架构,做出的架构就比较适用,后期也能够对业务做到随需应变。
架构师在工作中,往往会主动或者被动参与些开发管理工作,比如工作任务分配和预估项目进度,因为往往理解技术人员专长的人是架构师(或是技术经理)、架构师能把合适的技术任务分给合适的人。或者即使不是架构师来分配任务,一般项目经理也会征求架构师的意见。比如开发了新的架构,需要给大家培训。比如系统要和其他部门系统通信、集成,需要跨部门的协作。各种各样的场景会将架构师卷入一些项目管理中,从一定职业生涯规范考虑,学习或者参与一定的项目管理,能从更宏观的层面去看一个项目的发展,而不单单将自己局限在技术上去看问题。
当然,架构师还要求有很强的自学能力、分析能力、发现问题、解决问题的能力。在互联网时代,还需要写作、沟通、培训的能力,所谓“教是最好的学”,将自己的架构知识传播出去,既能帮助别人,同时加深自己的理解,还能认识到这个行业里志同道合的人(这些也是我为什么做“系统架构师”这个公众号的原因)。
二、公司说你是架构师你就是架构师吗?
其实架构师在不同的公司有不同的标准,一个不知名的小公司的架构师和bat的架构师差距就很大。而且在互联网泡沫的情况下,一些互联网公司的title有明显的水分,明明只具备初级工程师的能力,title就已经高级工程师了,明明连基本的设计模式、UML都不了解,却言必称“架构”了(明明是谁?)。这些架构师往往在是公司的初期就加入的,从事着技术方面的工作,随着公司业务的增长,享受到了公司发展的红利,成为公司的元老,但是否真具备了架构师的能力值得商榷。
在有的公司,招聘架构要10年以上的工作经验,这又不是给手机充电,10个小时才能充满,就具备了架构师的能力。我平常负责项目组的技术面试,有些公司的人有个3、4年工作经验,但是能力却不及毕业生,一些热门的技术术语一概不知,仿佛安装了技术敏感词屏蔽器。也面试过几个毕业生,有很好的技术深度和广度,进来之后表现非常不错。所以第一份工作、个人资质、成长速度都非常重要。往往这些对技术有独到见解和热情的人,在一个很好的平台,有很好的人带,不出几年就有具备架构师的能力,可能限于公司制度的原因,没有架构师的头衔,却已然挑起了架构师的重担。
也就是,你现在有架构师的头衔,也不定是个真正的架构师;你现在工作不满5-10年,没有架构师的头衔,但实质上也很可能是个货真价实的架构师。
三、有《系统架构师》证书就是架构师了吗?
有人说我有国家软考《系统架构师》认证,那我应该是个架构师了吧,这个问题就好像我有硕士文凭,我一定比本科优秀一样的问题。《系统架构师》是个锦上添花的东西。绝不能期望通过一张证书让你成为架构师,IT行业是一个相对公平的行业,一切靠能力说话,不看证书、不太重视学历。一切以提高自己的能力为主,切勿本末倒置。
虽然我有《系统架构师》、《信息系统项目管理师》两个高级证书,但是然并卵,扔两个大石头也没泛起一丝涟漪,只有在年底述职的时候,闪耀了那么几秒。但是我还是建议想成为架构师的技术人员,尤其在传统行业的IT从业人员,可以抱着“以考促学”的心态去考一下这个证,报名费不到三百,所涉及的学科有10多门,可以开拓自己的视野。而且考试的强度很大,分为综合知识、案例分析、论文。光论文就要求在1个半小时写2500-3000字的论文,对于习惯敲键盘的技术人员来说,也是一个非常大的挑战。
当然,你要是做着架构师的工作,有架构师的能力,还拿了一个《系统架构师》认证,那就是两个字:完美。
四、如何做才能越来越像一个架构师?
1、关注架构知识,比如关注“系统架构师”这个公众号(哈哈)
主动关注一些架构的微信公众号,或者相关技术牛人的微信、微博,了解一些架构的技术动态。有个理论是说,你想成为什么样的人,你终究会成为那样的人,不管中间多么曲折。在互联网时代,大家更容易达成自己的目标,因为获取资讯更难容易,何况这些资讯都会根据你个人兴趣进行推送。当然,碎片化的知识还不够,需要深入学习书本知识,每个月至少看完一本技术书吧。
2、主动思考,主动实践,关注互联网公司架构实践
保持对架构的好奇心,主动思考一些问题,比如微博的更新是推还是拉,双11的秒杀是如何实现的,memcached的缓存服务集群如果有台挂了怎么办。抱着问题去看书,查资料会有更深的了解。平时应该看一些一线互联网公司的架构实践,如有必要,可构建类似的业务场景,在本地试验。一些大公司如阿里也开源了很多项目,有很多优秀的中间件,可以或看看底层实现原理和代码,这也是很好的途径,虽然可能你没有一线互联网的工作经验,但这样可以形成架构师的思维。
3、学会担当,培养抽象思维与总结能力
在一个项目里面,最有可能成为架构师的技术人员,通常是那个最有担当的人。一个技术难题摆在大家面前的时候,谁都不会,但是这个人主动承担下来,不仅让领导认可你的态度,一旦你经常挑战你不会的东西,并且挑战成功,就会形成良性循环,以后就会形成这样的共识,再难的问题交给你也能搞定,因为你已经具备了这样的直觉和经验。看看身边有没有这样的人,这个人其实已经有架构师的潜质了,所以说,要做为架构师一定要让自己不舒服,要经常挑战对自己有难度的技术和知识,而不是固守着已经熟悉的领域。
其次,要有抽象思维能力。比如,我问JVM、适配器模式、代理服务器、TCP/IP协议有什么共同点?感觉像是风牛马不相及的概念,其实,都有借助中间层的概念,计算机发展这么多年,本质上的理念却没有质的变化。要成为一名合格的架构师,既能在微观上解决具体的bug,也能宏观上洞悉问题的本质,技术的原理。
最后,总结分享是非常必要的,还是那就话“教是最好的学”,把自己所知所想写出来既是重新梳理思路的过程,也能让别人收益,而且随着自己经验的积累,可以形成自己的知识库,面对类似的问题可以直接从知识库找到答案(这点对年龄偏大的技术人员尤其适用),不用再重复造轮子。
4、多和行业大牛交流,参加行业聚会
如果有机会,多参加行业聚会,结交技术大牛,看看他们对架构有什么独到见解。做为技术人不仅要埋头钻研,还要抬头看路。