为什么80%的码农都做不了架构师?

520 阅读8分钟

一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。而架构师也可以分为初级、中级、高级,江湖上真正高水平的架构师就更少了。

所以,80%码农干上许多年,还是做不了架构师,正在辛苦工作的程序员们,你有没有下面几种感觉?

我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。

我发现我的水平总是跟不上技术的进步,有太多的东西要学

我发现虽然我工作5年了,除了不停的Coding写业务代码,Ctrl+c和Ctrl+V更熟练了,但编码水平并没有提高,还是一个普通程序员,但有人已经做到架构师了。

工作好几年了,想跳槽换个高薪工作,结果面试的考官都问了一些什么数据结构,什么并发架构、多线程之类的东西,虽然看过,但是平时用不着,看了也忘记了,回答不上来,结果面试官说我基础太差……

如果有以上问题,那么你绝对进入学习误区走了弯路;如果我们要成为架构师,我们自己要面临的三大问题

找准定位:我是谁、我在哪里?

怎样做好架构师:我要做什么?

如何搭建架构师知识体系:我该怎么做?

我在这里给那些想达到这个高度甚至想往架构师发展的程序员提供一份进阶路线图,主要针对2到5年及以上工作经验的Android开发人员,从广度到深度架构图还比较全面的,里面的技术包涵了java基础与原理,自定义控件、NDK、架构设计、混合式开发(Flutter,Weex)、性能优化、完整商业项目开发等系统的高级技术),这些也是目前互联网企业最主流的技术选型,那么来详细看看。

1、 Java语言进阶与Android相关技术核

Android应用是由Java语言进行开发的,SDK也是由Java语言编写,对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。而且Android apk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。那么Java中哪些东西是我们Android程序员需要学习的呢?由于Android程序员习惯了 C V 代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像 泛型,多线程,反射,JVM,Java IO,注解,序列化等,都是被 CV 的对象,而程序员是不懂原理的,具体内容如大纲所示。

Java语言进阶与Android相关技术内核
2、 App开发框架知识体系(app亦对象)

这块知识是现今使用者最多的,我们称之为Android 2013~2016年的技术,但是,即使是这样的技术,Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生,所以我们需要从新的角度去分析这些知识点,深入研究他们,要学习源码,模仿源码,然后再hook源码,这样才能说自己懂这块的知识。这些都是做Android开发,做高级工程师的基础。

APP开发框架知识体系
3、 360° Android app全方位性能调优

一个app的性能好不好我们需要从两个层面努力。第一个层面:书写高性能代码;第二个层面:调优。
如何写出高性能的代码呢?那就需要我们具备深厚的代码功底,这就是代码的基础。另外,对常用的算法有自己独到的见解,leetcode上有刷个上百道题,这样差不多可以达到精通最常用的排序查找动态规划等算法的能力。再者,高效的算法以及节省内存的数据结构如果配合优秀的符合应用场景的设计模式,那么,这些就为高性能的代码提供了实现依据。
另外一个就是对写好的代码进行调优,那么调优的方向就是使用Profiler工具进行测试和检查,看哪里有性能消耗大的操作,然后分析对于代码的问题。调优的方向就变成了如何对内存调优,对耗电调优,对网络流量调优,当然,还有对启动速度,页面切换效果与速度,开机白屏体验,闪屏方面的原因等进行分析和调优。最后再加上一个屏幕适配相机适配。

360° Android app全方位性能调优
4、 Android前沿技术

现在去很多公司面试,除了你具备基本的能够写一个高性能app的能力后,一般都会在自己的app里面加一些现有的相对较 6的技术,这些技术我们称之为前沿技术。他们一般包含热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等等,当然,这些技术你不能只会用,你需要知道他的原理,有时候,你还需要知道如何对这些架构进行改进。另外,非常重要的一点,Android开发者不愿意接受新知识,所以对于现在Google推出的新的技术方案毫无感觉,这些都是被 control C 和control V所毒害,开源让开发者失去了自我,失去了基本的编码能力,失去了深入学习的信心和毅力,所以对于很多google推出的新技术好组件(Google I/O 大会新技术),好框架已经很多人不愿意去学习了这是不应该的,我们需要好好学习啊。

Android前沿技术
5、 NDK 模块开发

音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以Android NDK技术已经是我们必备技能了。要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且OpenCV/OpenGl/ 这些又是图像处理必备知识,这些都在我们课程里面有原理级的实战项目

NDK 模块开发
6、 提高开发效率的工具运用

工欲善其事必先利其器,如何提高开发的效率,很多开发者在开发的过程中由于gradle不会用导致加载代码非常耗时,这些就是工作成本。还有就是git的使用可以帮我们管理好我们的代码,这个非常关键,因为这个工具可以让我们修改的代码不会因为错误的操作而导致代码丢失。另外,移动开发者,我们至少需要知道如何抓取网络包吧,其中,最常用的stetho就是一个很好的可以进行网络抓包的工具。

7、 移动架构师专题项目实战环节

架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。

8、 移动架构师不可不学习微信小程序
9、 混合开发的flutter现在已经逐渐变成了主流的混合开发框架,另外由于阿里系的强大存在,导致阿里 系的公司都在用Weex混合架构,这些都是一个Android工程师开拓视野,走向未来必不可少的基本技能

以上这些技术如何学习呢?有没有免费资料?

对Android进阶,架构方面感兴趣的朋友,欢迎加QQ群:818520403,一起学习,相互讨论。

关于以上的技术选型,我这都有整理好的资料包括高级技术大纲以及一套系统全面的Android进阶视频,群内也有各种大佬技术面试心得的交流和分享的资料,欢迎大家踊跃加入我们,免费领取资料。

技术大纲图
进阶视频资料