架构师
一位优秀的架构师,一是要能够在全局上看问题,二要有足够强的责任心,三是要有影响力,能够去驱动事情,最终要能把你的理想变成现实,而且变成大家的共识,最终落地成大家的成果。
如何定义优秀架构师?
成为架构师就挺难的,成为优秀架构师反而没那么复杂了。工作以后我发现了一条规律叫求仁得仁,你把时间花到哪里去了就一定会有所回响。如果把写代码做架构当成养家糊口的本事,以为糊弄完老板就结束了,这样的人难以成为优秀的架构师。
刚毕业到工作的前几年,我每天最开心的就是中午熄灯的时候,我当时觉得好像灯关了世界就是我的,于是我会花很多时间去看书、看别人分享的文章,技术大会视频,了解大家怎么写代码做架构。这背后主要还是兴趣驱动,当你阅遍了各种架构,虽然不能保证成为优秀的架构师,但至少不会去选择一些冷门奇怪,不怎么令人喜欢的架构做实现。
举个例子,以前我在面试时有遇到过一个做实时交易系统的架构师团队负责人,在公司内的级别非常高,他们希望能找到一个更现代化的语言来代替解决 C 语言实现实时框架,用 Go 语言去做这个工作,整个团队大概有 100 来人参与,花了一年时间。后来发现, Go 语言本身自带垃圾回收机制,很难干涉具体时间点进行垃圾回收,就容易导致系统实时性不足的问题。
为了解决这个问题,团队做了很多方案,最后都没法上线,最终决定把 Go 语言的垃圾回收机制关掉。这样导致的内存泄漏,团队负责人竟然不把它算作泄漏,而是对上级重新“定义”为“内存增长”,交易关闭的时候重启就好了
在这个例子中,我认为他也许是一名优秀的工程师,但却不是一名优秀的架构师,因为他没有解决一个实际的问题。很多时候我们要想清楚,是否非要在某个方向里去解决一个无法解决的问题?
想变得优秀,就要在保持热情的同时去解决实际的问题,拆解业务所面临的问题,为什么要设计这个架构?别人不解决的问题可能本身就不需要解决!我在工作中,时常会对架构设计得非常复杂的方案提出质疑,是否必须这样设计才能解决问题?我认为优秀的架构师要把复杂变得简单,而不是把简单变得复杂。优秀的架构师要让工程师团队都能看得懂,参与进来。你需要扎到业务场景中去,再抽象出来,解决实际问题,让其变成一个可复制、抽象层次上的问题。
最好的架构师不是具备了多丰富的知识点,他最需要的特质是折中,他可以在任何场景下都给出优雅的设计方案。举个例子,像腾讯这样的大公司,架构设计上要关注于高并发,但对小型团队来说,架构设计更应满足快速迭代、持续交付的特性。
从本质上看,优秀的架构应该满足的关键就是降本增效。你所做的架构设计是增加了人力和其他成本,还是让人力、运维等降低了,或者让效率提高了?这些才是最关键的。前面提到的折中,再进一步,架构设计的真实本质,就如李力老师说的那样,就是看你能不能把复杂问题简单化。
优秀的架构师还需要有大局观,全局视野,并且少不了责任感,能把事情在更横向的层面去驱动和解决。另外一点还需要有影响力,要让别人对你认可。你是不是优秀的架构师,自己说了不算,要看大家是否认可。所以一位优秀的架构师,一是要能够在全局上看问题,二要有足够强的责任心,三是要有影响力,能够去驱动事情,最终要能把你的理想变成现实,而且变成大家的共识,最终落地成大家的成果。