资深程序员解惑:Android发行多年移动App趋近饱和,Android开发还有好的前景吗?能者居之!

前言

IT互联网这个行业发展是特别快得,不管是什么热们的开发,开始都是比较火爆的,因为招聘对技术要求都比较低,而且人才的短缺,自然薪资就比较的高。但是过了几年以后,会这些技术的人越来越多,市场就慢慢的对技术水平和工作经验的要求也越来越高,薪资和技术能力要求是相匹配的。

Android开发也是一样,在市场缺少Android开发人才的时候,那时候的Android初级开发者工资都比较高,但是到了现在随着Android开发者人才多起来以后,市场慢慢的也包含起来了。现在的一个Android初级开发工程师都比较难找到合适自己又薪资搞的工资。如果达到了Android高级开发工程师或者架构师的水平,这个是比较吃香。

进入Android行业几年了,一直也很关注它的发展,毕竟这是自己吃饭的家伙,也思考过现在的行市和未来的发展。关于移动App已经趋近饱和的问题,首先要明确两个概念,一个是“吃香”,一个是“饱和”。

这两个概念很好理解,但也要看针对什么样的人群。对于刚刚培训完(包括自学)还没有实际开发经验的人来说,这两个概念代表着岗位缺口,android开发人员供不应求,工作就会很好找,那就是“吃香”,非“饱
和”,如果这样理解这两个词的话,那么就现在的市场行情来说,android已经不吃香了,大家可能也发现了,现在较之以前,工作比较难找,薪资水平也比以前底了,但这并不代表着android已经走入下坡路,只能说这是一个行业的正常发展,android的井喷期已经过去了,以往那种只要会点androi就能拿到高薪的日子已经一去不复返了,市场越来越理性化,不再一味的吸收,而是有选择的吸收。

移动App趋近饱和的原因

现在的终端开发已经开始进入稳定期,在这个阶段大厂压力很大小厂更会收到挤压,人们使用的App越来越固定,即使是大厂,几年前平台级应用发个Push就能引流几十万,现在这些的作用也越来越小。

1. 开发者的门槛越来越高:

小厂的机会少了,大厂的业务趋于稳定,短期内在移动端不会出现爆发性的增长,那随之而来的就是移动端招人越来越理性,门槛水涨船高。这两年看部门移动端校招,除了技术本身都很扎实以外,清一色985/211学霸+竞赛成绩+各种奖项+NB实习经历,社招基本集中在国内主要的互联网公司和几大手机公司中。并且现在大部分公司受限于本身的业务规模和在移动端的投入,技术和国内主要互联网公司的差距越来越大,换句话说,小公司生存会越来越困难,之后从小公司向大公司跳槽也会越来越困难。

2. 对开发者的要求越来越高:

小厂生存越来越困难,那势必会对开发者提出更高的要求。相比之前,对于终端开发者的技术要求会越来越宽广,最好是个多面手,是个大前端。大厂内部的压力也非常大,数据想要有大幅度的提升也越来越困难,因此更多的方向,更多的需求也就在所难免。

现在的终端开发者处理的问题比之前更多更复杂,需要Cover的面更广,需要学习的更快更深入,并且在技术之外,还需要有足够的软实力支撑。在这样的要求下,很多时候,能力的差距已经不是用勤奋就能弥补的了,况且大部分人本来就谈不上有多勤奋。

最近看到一个在零基础自学Android最后能否找到工作,这个问题下的高票回答,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早两年入行可能结果会比现在好很多,但可惜,这就是现实,现在的要求更高。

最后回到主题,在这种情况下,Android开发者还会有之前那么吃香吗?我相信答案已经很明显了,专注的开发者和面对当前的环境,经过理性思考选择放弃的人都能收获更好的生活,但那些半吊子,之后在这个行业里会越来越难受。

之前吃肉的以后能吃上海鲜,以前喝汤的可能现在就什么都没有了。

接下来我们换一个角度来看待这个问题,那就是发展前景。

Android发展前景

关于"大家统一唱衰Android开发"这种事,其实大家随便听听也就好了,不用放在心上。

毕竟每年总是会有那么多人会被淘汰掉,物竞天择,很正常,毕竟大多数人对自己的工作是缺乏反思的,当然这也是人之常情,但既然很多人有这样的疑惑,这里小编便给一点拙劣的建议,不一定对,很可能是一派胡言,毕竟这个和大多数人的看法好像不太一样。

万事万物背后一定有个原理,尤其是咱们挖煤的更应该有这样的态度,把原理搞清楚。所以不妨把这件事情捋一捋:

为什么上大家唱衰Android开发呢?

其实这很好理解,你看,技术是在更新换代的,时代是在进步的,以前吃生肉,然后会生火,后来用蒸汽电器,互联网一点一点在进步。所以哪里会有一招鲜吃遍天的事情呢?以前的DBA很厉害,10年的诺基亚也很厉害,13年的 Android 也很厉害,这两年的区块链也很厉害,这些都是众所周知的对吧。

但现在的DBA呢,现在的诺基亚开发呢,现在的Android 和 IOS 呢?

历史总是惊人地相似。

是的,任何一门技术,都是一定会被淘汰掉的。

这世界上有不死的人么?

听起来好像有点惨烈,但你必须接受这个现实,因为接受事实是第一步。生活总归是有希望的,在这样惨烈的背景下也还是有我们能做的事。你看身边好像还是会有那么一些人,挖煤挖了几十年还在挖。如果你觉得挖煤还不错,想好好挖这个煤那就要虚心学习那些老挖煤工人赖以生存的技巧。

当当当当,诸位看官请听我娓娓道来。

呔!谁会需要挖煤工?
啊,老板需要挖煤工!
老板要的,你给不了那又如何?
被淘汰呀被淘汰!
那为何有煤工挖了数十年?
因为什么煤都能挖呀都能挖!
为何什么煤都能挖?
对呀,为何他什么煤都能挖呢?
原来,永葆青春的秘诀就是:基础!

这应该是老生常谈的东西了吧,但好像只是"基础"两个字起不到任何帮助,所以我详细说说。

就以 Android 来说,属于移动端,你看Android,IOS,现在又出来一堆RN(当然,现在已经凉了 :D ),weex, flutter之类的东西。

前端的东西一年三变(这里的前端指包括移动端在内的大前端),你没有自己的判断,很容易就会迷失在一堆杂乱无章的 "设计模式","设计思想" 里,不知道什么是重点,然后被一堆技术忽悠忽悠得云里雾里,不知道要学什么东西

我打个比方,你在看Android的源码分析,实际上也就可以看到,他里面各种各样的View的工作原理实际上就是在一个叫 Canvas 的东西上用 Rect 之类的控件来画画,(这里我们不考虑动画之类的东西,因为其实动画也可以用 Canvas 做)。

嗯,这就是最精炼的Android绘制原理了。

其实 Flutter 里面也有同样的 Canvas,甚至你写 Web 前端也有一样的 Canvas,同样的名词出现在不同的地方,这是为什么?这个 Canvas 代表什么东西?

如果你基础 OK,就会知道,计算机显示的原理实际上就是在一块内存区输出数据。这个Canvas 你可以看做就是提供给 "高级程序员" 的接口。

如果你学 Android 不妨把它 Canvas 如何工作,常用的第三方库原理是什么,比如有些框架是做自适应的,他是怎么做到的?

造两个轮子,然后你就会知道 Android 里面设计有哪些是比较野鸡的了(抱歉,我居然说出了如此大逆不道的话 >_<)。

顺便想下原生的 Animation 是怎么回事,除了绘制,还有按键,触摸这些事情他是怎么做的,偶尔看看源码(其实源码是最不重要的,当然,这话要等你至少看过一套源码了才能这么说),看看书。然后你可以玩玩 Flutter,对比下 RN,做点东西,然后下一份工作你就不再投 "Android 开发" 岗,而是 "移动端开发负责人",只要操作适宜,应该是可以过的。

当然,学习的时候很多东西都需要良好的计算机基础,而且需要花一些时间,当然其实也花不了多少时间。

小小的总结一下,正确的思路就是:

不要纠结他是 Android 还是 Bdroid,你要关心的是解决了什么问题

绘制,输入,操作(按键触摸),电量,IO,网络,每一个话题下都有无数细节:绘制层级/ 重复绘制,bitmap占用,预加载。

学习么,要学总是有很多东西可以学的。

学习方向

目前我们要做的就是选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点。

这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。 所以,找准自己的定位及细分领域。

这里我归类了如下几类:

1、应用层开发,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。

2、嵌入式开发,不限于各种开发板子,物联网,智能家居,车联网/车载。

3、安全开发,不限于各种反逆向,反汇编,寻找安全漏洞。

4、音视频开发,不限于直播、点播、音视频通话、音视频会议,短视频等。

5、插件化、组件化、热修复开发,不限于自研和使用开源框架集成开发。

6、系统开发(Android),不限于Rom维护和FrameWork层定制需求。

7、图形图像开发,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜。

8、小程序 / 快应用

小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。

推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。

系统学习很难吗?

自己去制定系统的一个学习计划可能是比较难的,所以文章最后我给大家准备了一份系统的学习思维导图,还有相关的学习资源,这些资料也都是我开发这么多年一点一点的累积整理出来的,今天完全无偿的分享给大家就是想今年寒冬我们程序员能好过一点,希望大家都能工作顺利,事业有成。

首先是超级详细得不能再详细的Android开发学习思维导图,因为图片实在是太大了,所以我就只把二级目录的内容放出来,更加详细的你们可以主页扫微信二维码获取

接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO

  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化

  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化

  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack

  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发

  • 微信小程序:小程序介绍+UI开发+API操作+微信对接

  • Hybrid 开发与Flutter:Html5项目实战+Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

然后再是通过源码来系统性地学习

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

再阅读前辈的一些技术笔记,帮助提升

刷大厂面试题备战,增加大厂通过率

历时半年,整理了这份市面上最全面的安卓面试题解析大全。

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

以上内容均放在了开源项目:github 中已收录,大家可以自行获取(或者关注主页扫描加微信获取)。

最后:一点心里话

如果你的水平接近达到高级水平,有信心快速达到高级水平,那就按照高级水平的技能点和市场招聘的高级要求对照靠近,一步步达到这个水平。

如果你的水平还是初级入门水平,或者兴趣度不是很高,想早点转换,你可以快速转变,因为在正确方向上努力太重要了,这里也建议不要跨度太大,这里我推荐往大前墩或者产品方向转变,当然前提是你有这方面的兴趣。

当然上面讲的都是技术方向上的发展,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。

当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。下次可以专门讲讲怎么快速进阶为Android高级工程师。

名人语录:“生活其实很简单,但我们总是把它复杂化。”——孔子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章