Android 开发现状分析与中高级技术进阶路线
前言
现在的终端开发已经开始进入稳定期,在这个阶段大厂压力很大小厂更会收到挤压,人们使用的 App 越来越固定,即使是大厂,几年前平台级应用发个 Push 就能引流几十万,现在这些的作用也越来越小,特别到了今年,想要在 Top 100 的 App 里突然出现一个来自不知名团队的爆款已经基本不可能。在这种情况下对于开发者来说带来的变化我认为主要有两点:
1. 开发者的门槛越来越高
小厂的机会少了,大厂的业务趋于稳定,短期内在移动端不会出现爆发性的增长,那随之而来的就是移动端招人越来越理性,门槛水涨船高。这两年看部门移动端校招,除了技术本身都很扎实以外,清一色 985/211 学霸 + 竞赛成绩 + 各种奖项+NB 实习经历,社招基本集中在国内主要的互联网公司和几大手机公司中。并且现在大部分公司受限于本身的业务规模和在移动端的投入,技术和国内主要互联网公司的差距越来越大,换句话说,小公司生存会越来越困难,之后从小公司向大公司跳槽也会越来越困难。
2. 对开发者的要求越来越高
小厂生存越来越困难,那势必会对开发者提出更高的要求。相比之前,对于终端开发者的技术要求会越来越宽广,最好是个多面手,是个大前端。大厂内部的压力也非常大,数据想要有大幅度的提升也越来越困难,因此更多的方向,更多的需求也就在所难免。现在的终端开发者处理的问题比之前更多更复杂,需要 Cover 的面更广,需要学习的更快更深入,并且在技术之外,还需要有足够的软实力支撑。在这样的要求下,很多时候,能力的差距已经不是用勤奋就能弥补的了,况且大部分人本来就谈不上有多勤奋。
最近看到一个在零基础自学 Android 最后能否找到工作,这个问题下的高票回答,讲述了她从开始选择 Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早两年入行可能结果会比现在好很多,但可惜,这就是现实。最后回到题主的问题,在这种情况下,Android 开发者还会有之前那么吃香吗?我相信答案已经很明显了,专注的开发者和面对当前的环境,经过理性思考选择放弃的人都能收获更好的生活,但那些半吊子,之后在这个行业里会越来越难受。之前吃肉的以后能上海鲜,以前很多喝汤的可能就什么都没有了。
而之所以成为会有些 Android 行业仍旧有如此多的半吊子,相信和以下几点分不开关系:
大学期间实践得晚:有些学生在大三的时候才接触 android 了,但在毕业一年后才正式从事 android 开发,从头学起,这过程中只看了一些关于 android 方面的书籍,多数时候也只是停留在纸面上,在配置开发环境和开发过程中遇到一些问题导致自己不能坚持下来,想想那时真傻,有啥问题都不知道用谷歌搜搜,只知道按照书上的来,就算用百度搜一下也好啊,实践得晚最大的弊端是之前花时间看 android 方面的资料都算白费了,因为这中间一直是断断续续,看看远没有实践来得印象深刻,没有真正实践的开发过 app,很多东西基本都忘记了,浪费了不该浪费的时间。
基础学科没学好,知识不牢固:android 是多个基础学科结合的复合型产物(高级语言 java、操作系统、编译原理、算法与数据结构、设计模式等等),由于是从 win32 程序出身的,后来做项目直接学 android,java 基础这些只是看了几本书,导致踩了很多没有必要踩的坑,比如在 finalize 方法中关闭资源、没有关闭文件流等等,没有学好基础学科最大的弊端是踩了很多没有必要踩的坑。
没有早点相信方法和设计模式:单元测试、低耦合高内聚、封装变化、设计模式这些前人总结的东西都是非常好思想,现在很后悔自己没有早点相信他们,就算当时不能够理解也应该坚决执行的,因为当后面有一定工作经验后回头来看,科学的方法和设计模式真的对编程很有好处,至少会让你少很多 bug,写的程序稳定性更高。
我能给的建议是:
- 纸上得来终觉浅,绝知此事要躬行
- 打好基础
- 即使不能理解,也应该对科学的方法和思想深信不疑并贯彻执行
这一套系统的学习方式相信能帮你们解决绝大部分问题:
Android 中高级进阶技术路线
完整的一个技术路线主要包含以下几个模块:架构师筑基必备技能、Android 高级 UI 与 FrameWork 源码、360°全方面性能调优、解读开源框架设计思想、NDK 模块开发、架构师炼成实战、微信小程序、Flutter 技术进阶。
架构师筑基必备技能
Android 应用是由 Java 语言进行开发的,SDK 也是由 Java 语言编写,所以我们要学习 java 语言。另外,虽说 kotlin 语言得到了 Android 官方的热推,但是 kotlin 也是编译成了 java 语言再运行的。对于 Android 来说,只要 SDK 没有用 kotlin 重写,那么 Java 语言是都需要学习的。而且 Androidapk 的后台服务器程序大概率是 java 语言构建,所以学习 java 也是一种必然。
深入 Java 泛型
泛型的作用是提供类型安全,避免运行时错误。通配符与嵌套允许更灵活的类型约束,泛型上下边界则限制了类型参数的范围。在 RxJava 中泛型的使用分析尤为重要,它决定了响应式流的类型推断准确性。


