如何从一个基础程序员走向架构师?

对我们程序员来说,发展的途径要么是走管理岗,从开发升级到项目经理甚至是部门经理;要么走技术升级路线。不过在技术路线方面,无法升级到架构师的程序员不在少数。一方面,在不少公司的高级开发岗位上,无法让程序员实践甚至接触到架构师的技能,另一方面,有不少程序员甚至不清楚架构师所需要掌握的技能和升级途径。所以从结果上来看,至少有5成的程序员止步于“高级开发”的程度,这是非常令人可惜的。

而小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。

所以,大部分(超过九成的)码农干上许多年,还是做不了架构师,这是什么原因造成的呢?

1:码农分为真的能写代码的,以及自认为能写代码的。

2:真的能写代码的码农又分为自认为写的不错的,以及真的还不错的。

3:真的能写不错代码的码农又分为会钻研会不断优化的,以及安于现状的。

4:会钻研的码农又分为喜欢广度了解新技术蜻蜓点水的,以及深入钻研用到知识的。了解广度的码农又有少部分愿意深入某些技术,喜欢深入研究的又往往缺乏广度知识。

5:极少深度广度都关注的码农又分为为技术而技术和为业务而技术的。纯为技术而技术的码农在国内的软件行业需求太少,且需求的往往不是应用软件领域了。

6:为业务而技术的深度广度都了解的码农,又需要有良好的沟通能力。

7:而沟通好的,又有一部分当PM去了。

8:然后剩下的,又有一部分慢慢脱离实际开发(不再做任何实现)或者开始依靠拿各种中间件搭积木来作为“架构”手段。

9:除去这些,剩下对业务有一定了解,对技术广度上有多种涉猎,深度上对部分技术研究彻底,还有很重要的一点,考虑问题足够细致全面。

10:细致全面善于沟通,技术上深度广度都没问题, 又喜欢这个工作,还会不时做底层实现,从业务和开发两个角度出发,搭出“架构”来是为了开发效率,为了运行效率,为了开发质量,为了业务灵活和运行稳定,为了维护方便等等这样的人,个人认为可以称为“架构师”。

而真能满足这种需求的,别说题主的10%的比例,1%能不能达到我也持怀疑态度。其实现在的“架构师”大多数都停留在8这个层次,甚至很多在5这个层次就当上title上的架构师了。

总之,成为架构师,不仅仅是工作上的简单积累,更需要主动接纳工作外的大量知识,同时,对性格上对于非技术能力上也有一定的要求,不仅如此连思维方式都很重要,外加职业发展中又有很多岔路,最后走到架构师这根树枝上的就寥寥可数了。

金字塔结构

自古以来,金字塔结构(人群分个三六九等、高中低三档)在人类社会的各行各业中普遍存在,这是客观规律。恐怕再过千万年,也是如此。

人类社会为什么普遍、长期存在金字塔现象?其他动物,比如蚂蚁、大雁社会,有吗?这个问题就很深了,刨根问底有难度,也许应该问上帝。

金字塔结构/现象从根本上决定了大多数人做不了软件架构师。不光软件工程行业如此,能做技术领导的始终必然只是位于中上层的少数人。

英文水平差

据说中国有 700 万码农,英文不好似乎是一个比较普遍的现象。英语,尤其读写不好,把合格的架构师候选人选砍掉一大半。

小富即安的心理

很多码农每月拿到万把块钱,就心安理得了,不再有更高的追求。求稳求安定,这符合大多数人的心理。不满于现状,坚持不断学习,努力提高自己的开发技术和管理水平,拥有强烈进取心,想一朝一日做编程高手、软件架构师的人毕竟是少数。

二三流企业的压制

架构师不是随便什么人可以做的。在一个企业团队里,架构师作为研发和管理骨干,具有特殊的地位和权利。

知识结构的缺陷

架构师,程序员, 产品经理的区别,大概就是建筑行业里建筑师,建筑工人,甲方业主的区别。产品经理说我要建这么这么一栋楼,架构师说好吧,我来帮你看看是做成砖木结构还是 框架结构,房型怎么设计,水电气怎么布局,预算多少,然后程序员上阵,按照图纸把楼建起来。运营是大楼的物业管理,负责营运大楼。

软件开发越来越成为传统行业(即便在互联网企 业),一个成熟的软件团队内部自然会分化出这些角色,各展所长。但非常不同的是,建筑工人很少能自发成长为建筑师,后者都是科班出身,因为建筑学科已经高 度发达,需要掌握结构力学,美学等技术,现在软件行业还没有这么高的成熟度,程序员和架构师接受的都是一样的计算机教育,所以程序员可以自学升级到架构 师,走一条不同的升级打怪路线。

如何从一个基础程序员走向架构师?_第1张图片

那么,架构师是什么人呢?

按所工作的不同软件层分,有网络架构,系统架构,数据架构,业务架构,应用架构,平台架构。

按所解决的问题领域分,有电商架构,支付架构,搜索架构,安全架构,性能架构,游戏架构,多媒体架构,等等等。

按其工作的深度来分,有集成架构,业务架构,模块架构,框架架构,中间件架构,软件架构,引擎架构,服务器架构,甚至编程语言架构。

是不是太乱了?好比在设计师的世界观里一切东西都需要设计。软件也需要精心设计,在优秀的程序员眼里,每一行代码都需要架构!都体现了架构。

为了解决问题,程序员自然需要架构,他们中的佼佼者被冠以架构师的名号,获得了一定的话语权,逐步成为一个职业分工,我想,这就是架构师的本来面目。

成为架构师,需要经验和眼界

老码农分为两种:游击队和板凳王

坐穿板凳有利于积累经验,而不利于开拓眼界

游遍四海有利于开拓眼界,而不利于积累经验

码农的生活是高压的,唯有热情可以驱使你一边吃着苹果,一边又去摘梨

然而,又有多少热情没有随时间而冷却呢?

如果你想要做到架构师这个级别,我自身是一名安卓程序猿,所以在这里放上这样的一份关于Android的架构进阶路线图谱,里面的内容基本概况了目前互联网的主流技术:

Android进阶路线分析

Java语言进阶

  • 泛型与注解在Retrofit中的应用

  • 多线程与Java File IO操作应用实战

  • Rxjava原理分析

  • JVM与内存泄漏原理解析

  • ClassLioader与反射在Hook中应用

  • 动态代理机制在源码中的应用

高级UI与FrameWork

  • UI绘制原理

  • 动画原理

  • 事件响应机制

  • 屏幕适配

  • FrameWork源码解析

  • 相机适配

360°性能优化

  • 从事件

  • 从内存

  • 卡顿调优

  • APP保活

  • 内存优化

  • 高性能编程实战

  • OOM原理解析

NDK开发专题

  • C/C++基础

  • JINI编程基础

  • 图像处理与热修复应用

  • 音视频开发

  • OpenCV人工智能

  • OpenCL 图像绘制

前沿技术专题

  • 热修复/热更新

  • 组件化/插件化

  • RxJava深入研究

  • 图片与网络架构

  • Google I/O大会技术

  • Kotlin项目实操

微信小程序

  • 小程序架构介绍

  • UI界面开发

  • 高级API实操

  • 微信对接实战

  • 任务清单项目

  • 电影榜单项目

Flutter Hybrid开发

  • Dart语法

  • Flutter线程运行模型

  • Flutter与Native通信架构

  • Flutter内存调优

  • Flutter项目实战

想要成长为一个移动互联网架构师,这些技能是必不可少的,除了上面的知识体系,小编自己在还一些平台收集到了许多学习资料和个人总结的一些经验,一线互联网公司得面试经历面试题在这里分享给大家,包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

点击下方获取Android架构视频+面试专题文档+学习笔记​
Android架构视频+面试专题文档+学习笔记​

相关资料清单:

  • AES加密让你的应用牢不可破

  • Android进阶必学-retrofit源码解析

  • Android平台人工智能实现人脸识别

  • BAT面试必问一跨线程通信框架内核揭秘

  • Gradle到底怎么了效率如何提高

  • Handler源码讲解

  • HashMap源码解析hook源码实现阿里无闪烁换肤

  • 表情包大战一-Glide 显示Gif性能优化实战

  • 架构技术演进

  • 揭秘Android开发效率提升十倍的利器

  • 面对应用层出不穷的第三方SDK,架构师该怎么做?

  • 人工智能身份证识别

  • 视频学习资料

  • 性能优化之数据优化一小时实现基于android的人脸追踪技术

  • 移动互联架构

  • Android App全方位性能调优.xmind

  • Android前沿技术.xmind

  • App开发框架知识体系(APP亦对象) .xmind

  • Java语言进阶与Android相关技术内核xmind

  • 高级进阶必备篇:xmind

  • BAT面试题集及答案.docx

  • 微信小程序与Hybrid混合开发.xmind

  • 移动互联网开发课程大纲.png

  • 移动互联网课程大纲.xmind

好啦,文章写到这里就结束了,如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

你可能感兴趣的:(如何从一个基础程序员走向架构师?)