架构师与工程师之间的差别并不在于年纪 ,而是在于视角的不同以及各方面积累的差别。
首先是意识。作为架构师,不能仅仅关注怎么去实现一个功能,还得去琢磨为什么这么做、怎样才能做得更好、应该在什么场景采用什么样的技术方案等问题。另外还得去关注测试、部署、项目管理的方式等方面,甚至要去了解用户的需求、公司业务的需求。如果一直考虑这些事情,时间长了、经验多了,就会有比较好的整体概念或视图在脑中,综合素质会得到提升,明白功能只是最基本的,系统的可用性、稳定性、可扩展性更为重要。
其次是积累。IT技术一直在演进,全世界无数人的不断研究与实践成就了技术的提升与进化。作为技术人,需要关注当前最新的技术、架构、解决方案、技术理念等,理念可以用不同的技术来实现,也一个不断进化的过程。而作为架构师,承担的是更重要的角色,他的决定会影响到更大的团队或体系,所以就需要有足够多的相关知识和技能,以及足够广的视角,而这些都需要架构师平时不断的积累。我每年大概会看20多本书,技术相关的大概一半,另一半主要是社科类、经济、历史、管理之类的,对提高架构思维很有帮助。
再次是责任感。之前提到,架构师承担的是更重要的角色,他的决定会影响到技术选型、系统架构、具体实现的方案甚至系统发展的方向,所以架构师需要有很强的责任感,要对技术团队负责,需要发挥自己的影响力,做很多沟通、协调、支持的工作。
最后是兴趣。在我看来,人是受限于他的性格、兴趣、天分这些因素的,会不自觉地去靠近他更喜欢、更擅长的方向。所以,到底是当工程师还是架构师,或者其他角色,也是要看兴趣的,有的人就是喜欢解决技术难题,就是喜欢具体的模块实现,不想牵扯太多精力去考虑其他的方面,那么也不见得非要当架构师,只是分工不同,业界也有技术专家、研究员这样的角色。
之前架构师大会上经常有人说,没有最好的架构,只有最合适的架构。确实如此,作为架构师,很多时候,技术上的东西可能跟程序员差不多,但差别就在于能不能以更大更广的视角去看待问题,而非仅从自身角度出发。
视角变大之后,所要关注的东西就会变多,变量、变数也会更多,很难理想主义,很多时候都需要做出妥协或者说平衡,到最后就会发现,架构和管理在很多时候是相通的。
管理是在一个有限资源、确定时间点、明确目标的情况下,尽可能达成目标,过程中需要考虑轻重缓急,需要随时调整以适应现实变化,以完成目标为首要考量。
架构也是如此,需要考虑的是宏观上的方向性的问题,是各个部分之间的平衡关系,是如何配合才能达成最佳效果,而非仅仅是短期目标而达成,也不必纠结于细节的完美。
这些年,管理、架构都发展出了很多的理论,虽然行业、环境一直在变,但却也不能直接断定它们是不是合适,需要学习的是其中的思维方式,具体的问题具体分析。