在互联网开发领域,架构师可以分为业务架构师、中间件架构师、系统架构师。 根据不同的方向,在相关招聘平台上,对于架构师的岗位职责和任职要求各有不同。在招聘网站上可以看到真实的例子:
以上是三种不同架构师的能力要求,虽然类型不同,技术要求侧重不同,但是我告诉你,成为架构师都要具备以下能力。
1、技术掌控力:
成为架构师要掌握全面的技术栈,一切技术皆工具,包括开发语言、框架、各种中间件都是工具,要达到熟练使用,了解其原理和长短板,具备合适场景合理选型和灵活运用的能力。
比如要成为业务架构师,那么必须掌握Java生态圈方方面面的技术。如何做到呢?首先需要把所有技术列出来,然后将自己现在所拥有的技术跟这个图表做一个匹配,标出里面哪些熟悉,哪些还有待提升,最后把有待提升的技术学会。
2、架构师思维
我们常说道与术的问题,架构思维就是架构师的“道”。
随着工作时间的增长,会悟出一些道理,感受到一些规律性的东西,这些东西可能现在大家觉得有点虚,但是慢慢地大家会认可。
(1)知行合一,做之前,先考虑意义 在做某件事之前,一定要知道自己的目的是什么。目的和做的事情两者要合一,这是第一个层面。 第二个层面是清楚地知道你手里的资源允许你干什么事。比如说Spring Cloud,我很想去用,但是我的团队hold不住,你强行把这个东西推下去之后,事情做的并不成功。结果还是需要你承担责任。
(2)原生优于定制,约定大于配置 如果你没有特殊需求的话,官方的东西最好,保持原样,除非它不满足你的要求,你再去定制它。因为你改了之后,一旦发生问题,你很难摸清楚错误发生在什么地方。而如果官方的出现问题,整个社区都在给你撑着,你就能够及时地把这东西补上去。
(3)什么都是,最后会沦落到什么都不是 这是我早期搞架构的时候犯的一个错误。当时我老想着做一套完整的系统,无论你想做什么样的业务,拿来之后稍微一修改什么都能支撑,后来发现根本不是我想的那样,它几乎什么都不能支持。就像造汽车,偏舒适还是运动,两者兼顾的没有。
(4)控制技术欲,不要瞎折腾 看到新技术就想用到自己的系统中的,这不是一个好架构师的行为。做架构的前提是稳,这是底线,试错一定在生产环境中。
(5)留下扩展,但不要想到100年后 当代人做当代人的事情,不要考虑那么久远。当代留下的坑,只能留给后代补。
(6)没有最好的,只有最合适的 跟第3条比较像,但第3条是广度上,这一条是深度上,垂直领域不要总想做到最完美。
(7)够用就好,玩的越花,风险越大 比如有人玩 ++i++;finally(return);if(赋值) ,这都太花了,风险很大。
(8)大巧不工,简约最美 要把代码写的很简约,很优雅。
3. 解决问题的能力
具备日常场景下的解决方案积累,举几个例子:
- 单点登录
- 分布式事务及数据一致性
- 秒杀并发场景
- 复杂工作流
- 超高并发、吞吐量
4. 团队协调力、管理能力(加分项)
你的思维和设计要落地,必须具备团队层面推进事情进展的能力(尤其架构团队的leader)
5. 最后,扩展自己的人脉。
人脉很重要,随着职位的提升,段位的提升,需要一定的背书。
以上就是架构师要具备的能力,其中技术掌控力可以很快通过学习来提升。方法就是罗列全面的技术栈,然后对号入座,找到自己的短板,最后逐个攻破。