架构师和全栈工程师和、或者高级工程师最主要的区别在于,两者之间的思想维度上。
我举个例子,假如现在有个需求:公司想要做一套直播卖货的系统。
产品需求给出来了,在小蓝成为架构师之前,作为程序员的他会怎么想?
小蓝的想法可能是最简单直接的:
·需求中的礼物打赏如何实现
·是不是得有房间
·房间的逻辑是如何实现的
·滚屏単幕该怎么落地
......
也就是说,作为程序员,小蓝的第一反应是:业务如何转化为技术,各种业务功能是如何用技术实现的。
那么,在小蓝做过架构师之后,他又会怎么想呢?
如果是小蓝牵头负责这个,除了这些业务转成技术的问题,他还需要思考如下问题:
·架构用单体还是微服务
·通信方式都有哪些
·中间件选哪些比较好
·普通存储和多媒体存储单该如何规划
·应该选什么样的架构风格
·可靠性,弹性,可用性该怎么保障
·开发成本、部署成本、维护成本
·成本与系统性能的折中
......
以上,只是架构师典型思考的几个宏观问题。
其实,在套系统中,架构师不仅仅只是思考这些宏观问题而已。更会深入细节,去解快各种层次的技术难题。
回到直播问题上,架构师还必须去解决一系列技术难题,比如:
·直播的卡顿问题
·通信协议的优比问题
·各种中间件的优化问题存储的一致性问题
总的来说,一名程序员,他的思维往往是自下而上的,就是先思考功能实现,再根据功能实现去理解整个系统的运行机制。
而一名架构师,他的思维往往是自上而下、自下而上相结合的。
他本能的就会先去想系统的架构,根据系统的架构,再去据架构的雏形,去根据格个业务定出业务模块之间的通信方法,再根据通信方法去理解各个业务模块的耦合,去想着一些代码实现难题,最后去完整的理顺整个系统的技术实现。
全栈工程师和构架师并不存在高下之分,分工不同而,只不过成为构架师所需要撑握的知识更特殊,而且也更依赖经验。全栈工程师更多关注功能实现,构架师更关注系统性能。
就我的理解,全栈工程师庄要负责应用开发,对前端后端技术都能徽练使用,更关注应用开发本身,以做新功能为主。
但在大型应用中,除了功能,性能弛也变得重要,这时候就需要构架师了。构架师考虑的是技术的选型,系统模块之间的连接方式,系统可能的瓶颈,然后还有负载均衡和缓存之类的支特系统。
对于小型系统,只要实现功能即可,性能可以暂时放在一边,全栈工程到师最适合。随着系统的更新升级,构架地不断演进,许多以前不会出现的问题新渐出现,能对这个过程有清断认识的人,就是所谓构架师吧。
所以,一名程序员想要成长为一名合格的架构师,必须经过思维的转变。