作者: zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!
我总结了3个阶段。
先说一下各个阶段的感受:
1、系统架构阶段 :
系统架构实际上包括了 业务功能架构 和 技术功能架构。
业务上,其实有点接近于产品,但是有些问题是与技术强相关的,产品不懂技术,他的设计就存在问题或者隐患,这时候,一个技术功底好的又有丰富业务系统开发经验的人,就能将这些功能设计得更好。这就是我说的“业务功能架构”。
而技术架构,与开发功能、写代码,都息息相关,特别是在系统整体框架层面,以及开发重难点功能的时候,好的技术手段、算法,能够开发出更好的功能实现,包括可维护性、性能、稳定性、用户体验等等方面。
这个阶段,我经历特别多,大概有3年半的时间(但算上加班时间,相当于5年以上时间),不一一细讲。总之,这个阶段负责了很多个的项目,包括框架、代码,重难点功能的实现等。
系统架构师的能力,决定了做出来的系统的好坏和质量。
2、框架和中间件架构阶段 :
这个阶段,不直接面向具体项目,更多的是针对工具、框架和中间件层面,针对技术难点,站在技术专家的角度思考和设计。
这个阶段的架构师,眼里都是技术细节,以及框架和中间件的代码设计,基本上可以说是完美主义者,对平台设计有非常大的追求。亦或是,捣鼓各种技术和工具,不停测试、对比,整天安装这样、安装那样,不是运维,胜过运维。
在这个阶段,对技术的要求近乎苛刻,而且还要跨多个技术领域(后端、前端、运维、网络...),所以面临的挑战很大,要学习的新东西也太多太多。一直到今天,我在这个方面也不敢说做得多好,只能说,算是熟手了,见多识广了,有信心了,再复杂、再高端的东西,我不怕了,但是如果要做到业界一流水准,还是相当困难的。
这个阶段,要做的事情,全都是和技术相关的,举几个例子吧:
负责公司基础框架及组件选型及维护、二次开发
分布式存储的选型、推广、运维支持
容器云平台的搭建、优化和推广
监控平台的设计和搭建
Kafka、Redis的多机房数据同步方案
……
做到这个阶段,通常会被称为“高级架构”、“大架构”,做的事情往往能反映出公司的技术水平。但不是人人都能做这些事情,即便是非常有天赋的工程师,在这个阶段也需要长时间的沉淀,才能称之为专业架构。
所以说,很多公司,在这方面是很不专业的,甚至没有全职的架构师来牵头做这些事情。
3、公司总体架构阶段
这个阶段,更多的是方法论和策略,决策以及沟通,跟踪执行。在这个阶段,眼中没有技术细节。眼中有的,是整个公司,整个研发团队的效率和质量。一切都是围绕研发团队来的,要给研发团队指引正确的方向。
比如说,用什么工具,用什么框架,用什么技术,流程怎么设计,规范怎么设计,遇到问题怎么解决,怎么提高效率,怎么避免风险。不是每件事情,都得你亲自去做,但是你得有一个正确的方向和长远的眼光,去指引和决策。
其实最难的是,技术、规范和流程的推广和落地实施,因为这些事情,可能涉及到很多部门、很多人,有的时候会遇到利益冲突,有的时候遇到特殊情况,有的时候遇到某些团队只顾眼前。这个时候,需要一定策略和技巧的。
总结:
作为一个系统架构师,系统没设计好,是你的责任;
作为一个基础技术架构师,基础组件/框架/中间件有问题,是你的责任;
作为一个公司总体架构师,研发团队效率低、风险高,是你的责任。
个人经验:
中小型的项目,系统是很好控制的;
基础框架/中间件,难度可能比较大,但是如果技术能力强,也能hold得住;
面对整个研发体系的团队,各种人各种事,不太好控制,需要策略,需要转变技术思维。
所以:
领导5个重点项目,可以培养一个系统架构师;
5年以上技术经验,兼3年以上框架/中间件相关经验,如果技术确实很好,可以成为技术架构师;
5年以上基层技术和管理经验,3个以上公司总体架构经验,有方法、有策略、有能力,可以成为技术总监;
重点解释:
多数人工作经验丰富后,可以成为系统架构师;
但是只有 少数人 能成为好的技术架构师,这个得看天分,就像有人数学随便能考140分一样;
只有经验丰富的技术架构师兼项目经理,才能成为好的技术总监。
引申出技术人员的一个疑问:未来该如何发展?
至少有四条路:
第一条路,钻研高精尖的技术,去一线大公司做事,尽量不要去二线城市、二流公司。年薪百万不是问题。
第二条路,做个系统架构师或项目经理,最好是在某一行业和业务领域深耕,成为技术业务专家,运气好的话可以做到部门经理、分子公司总经理。
第三条路,全面发展,从项目管理、技术架构做起,积累丰富的研发经验,进而成为技术主管、技术总监、部门经理、技术副总等,分管整个研发团队。
第四条路,突出的技术能力 + 敏锐的商业嗅觉,成为 独立开发者、创业者。
如有收获,点个在看,诚挚感谢