前言;
今年春天疫情这盆冷水浇下来,对于Android开发者来说,甚至超过了之前所谓的寒冬。大批人找不到工作或者被优化,甚至公司整个部门撤掉的。
但是从侧面看,这个状态真的不失为一件好事;
首先周围的人终于不再像以前那样抱怨环境了,接受了Android行业红利期已经过去了的事实。更多人开始从抱怨外部的环境,转移到审视自身的能力,认真修炼内功上来了。
可以预见这样下去,Android中高级或许会有一波小爆发,只要给足够的时间,会多出一批资深移动开发架构师来。
这两年也有很多Android开发已经转行了,有的正走在转行的路上。还有的迟疑不决,静下来审视不想盲目跟风,而是希望找到自己适合的方向。
到底要不要转呢?我们来分析下;
1. 如果转行,转什么好?
每个人的自身情况不同,转的方向也会有所区别,转人工智能相关开发肯定是最好的,毕竟风口上的猪也能飞,跟着风口无可厚非。只可惜人工智能相关对学历和算法要求很高,最起码得是个硕士吧,而且这只是低配。那么大多数Android开发可以转的方向主要有前端、后端和python等等。我大概说一下:
1.转前端,这个是我认为最好转的一个方向,前端的理念很多都和Android类似,也可以作为Android的延伸,向大前端发展,如果对界面感兴趣的可以转前端试试。
2.转后端,后端这个就是完全的转行了,看似Java大家都会,但是后端的技术栈可不是只有Java,各种框架绝对叫你头大,很多人强调后端技术深,各种处理高并发看似十分有技术含量,不过这只是为数不多的公司在做。如果想要稳定的可以转后端试试。
3.转python,python最近真是很火,因为他跟人工智能发生了关联,其实大部分学python的没有搞什么人工智能相关,基本都是在搞爬虫。追求浪潮的可以转python试试。
2. 不要轻易转行,要转就尽早转!
转行有两种我认为是正常的,一种是行业消失或者没落了,个人无法施展才华。另一种是兴趣不在本行,因此转一个自己感兴趣的。而现在大部分转行纯属是为了跟风,为了那点钱,而忽略了长期的发展。我们来看看下面的图。
从图中可以看出,大部分人在35岁前是在加速期,35岁后是上升或者衰落期。以Android开发转前端来说,假设一个Android高级A同学转行前端会变为前端初级,这时从事前端的人都在加速提高,A同学要想赶超前面的拥有同样加速度的人是不可能办到的,这就导致他在转行前期极为被动,A同学还要保证在35岁前成为前端专家或者Leader才有可能在35岁后不进入衰落期,当然这时A同学的Android基本也就荒废了,很难成为专家。
如果还想要在技术领域走的更远,就不要轻易的进行转行,如果想要转越早越好,越快越好,因为其他的竞争者都在加速提高,没人会停下等你的。
3 . 转行大部分都不是质变!
一个开发的质变可以理解为在一个领域的大幅提升,或者是不相关领域的跨界,举个例子:可以在Android领域由高级质变为了专家,或者是由一个高级开发升到了Leader,再或者跨界开始做了一些技术相关的培训、演讲、出书等等而被人所熟知。
凡是能帮助35岁后进入上升期的都可以看做是一次质变,而转行很少是质变,更多的是倒退回到原点重新出发,形象点来说,就是换了个不同的砖头接着搬砖而已(高技术含量的除外)。因此我们更应该去追求质变,而不是平行或者倒退,一次倒退可以承受,多次倒退就很难在35岁后进入上升期。
4.Android系统的未来
看到这里,如果你还是想转行的话,建议不用看下去了。我们来说下Android工程师的发展方向
.Android系统是根,没了它Android工程师也不存在了。在我的记忆中,早在2011年就有言论说Android系统要完蛋,时过9年后,Android系统仍旧坚挺。目前对还没看到可替代的系统出来,因为替代的难度太大了,现在Android已经广泛的应用在手机、平板、车联网、物联网、智能电视等等领域,是名副其实的终端霸主。
我们不说手机,就说相对小众智能电视和智能投影机,这些早已普遍应用于各个家庭,新弄一个系统,就想让开发人员重新开发这些定制系统和应用吗?真的不会卖账,更别说手机了。Android不是塞班,岂是想替代就能替代的,这难度好比重新开发个PC操作系统替代windows一般。所以Android系统还会存活很长的时间,具体多久不好预测,应该比大部分人的程序员生涯要长。
4.1 .选择一个细分领域
Android现在细分的领域非常多,有应用开发、逆向安全、音视频、车联网、物联网、手机开发、SDK开发和智能电视盒子开发等等,在这些领域中选择一个并不断深入。比如音视频,在8年前我刚入门Android时,音视频就是闷声发大财了(PC端),工资高的令人乍舌,现在在移动端,音视频更是青出于蓝,是一个非常好的选择
4. 2. 尽量学习半衰期长的知识
知识半衰期指的是:随着知识更新周期变短,知识裂变速度加快,一个知识落伍的周期。知识半衰期长的职业都是越老越值钱的,比如英语老师和外科医生,知识更新慢并且几乎不会落伍。这一点我们程序员是绝对比不了的,我们的大部分知识半衰期是比较短的,一个框架短短几年可能就会被淘汰,这也导致程序员需要不断的学习新知识,而我们每个人的时间和精力是有限的,那么根据知识半衰期,有策略的进行学习就变得尤为重要。
上面的半衰期图不完全准确,但是却值得参考,如果你是其他的技术领域也可以参考这个半衰期图。这个图不是告诉我们不要去学RN和小程序,而是结合自身工作尽量学习半衰期长的知识。
5.到底应该深入学哪些方面?
根据知识的半衰期,作为Android应用开发最应该学习的就是Java、App开发相关技术、Android系统底层源码、数据结构、设计模式等等。注意是深入学习。你要通过项目实战理解这些技术的原理内核。知其然更要知其然。不然不管你做多久开发,依旧只是一个搬运工!
像我认识的还在做技术开发的,基本上都是35k以上,他们只会经常反思自己哪方面技术不够深入,哪些重要的新技术还没去学习。而不是人云亦云抱怨行业不好混不下去了转哪一行比较合适这些问题。
Android开发者该如何提升自己?说说我的两点建议:
1、横向发展:(适合有自己专精技术的人)
在自己擅长领域深入钻研的同时,会Hybrid开发(Flutter,RN,H5)之外,会web开发、微信小程序等,再过5年你也完全不用担心找工作。但是,这确实比较难,全栈容易发展成全菜,就是啥都知道,啥都不精!
2、纵向发展:(适合大多数人)
如果做应用开发,就往应用架构方向发展;如果做系统层开发,就钻研底层驱动。
可以从以下这些方面进行学习:
学习开发语言:
比如Kotlin,而做底层,DNK开发等C/C++是必不可少的,还有一个最容易忽略的也是最重要的 Java语言本身的高级面向对象思想
基础进阶:
比如高级自定义View、Android Framework层原理, App 管理机制等等;
JNI 和 NDK 开发也是比较常见,5G来了,招聘单位都在给自己公司规划小视频功能,然而我们却连NDK都不懂;
源码:
看懂并且熟悉源码,熟悉其实现原理,争取做到能自己二次封装三方库。
移动架构:
架构展示层:MVC、MVP、MVVM、Android Architecture Components;
架构层:模块化->组件化->插件化->沙盒/双开技术;
image学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。
如何体系化深入学习Android?
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节
Java语言与原理;
高级UI;
性能调优;
性能调优看似简单,实际上要求极高。没有一手好的代码质量和设计思维,光靠修改调优作用有限。所以对于设计模式,数据结构算法这些基本功不能不精通!
NDK开发;
前沿技术;
从我搜集整理中了解的信息,这些技术熟练掌握的开发者,国内任何一个大城市到手薪资都在40W以上。
而对于在职阿里,腾讯这种巨头公司,如果技术过关,同时还具备管理能力并且职称不低的(比如阿里P7),年薪更是在百万以上!所以何不给自己定一个高瞻远瞩的目标呢?
搭建知识框架很重要
我们在学技术的时候,如果没有注重搭建知识框架的话,学到后期的话你就会遇到一个问题,就是会感觉到自己之前学习的知识很乱,不成系统,再加上行业技术更新很快,越往后自己学习的知识会越来越多,而之前的学习又是零散的自己没有整理的,你就会感觉自己所掌握的这些知识是散乱的。
就好像很多点,线可能已经连接成了,但是就是组不成一个面。当我们做一个大一点的项目,需要熟练用到很多相关技术面,甚至会用到组件化技术。如果你长期只使用一些常用的技术点,那么你可能还有很长一段时间要待在小公司搬运代码了。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议大家先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
我在搭建这些技术框架的时候,也整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,石墨文档可见;《Android架构视频+学习笔记》
最后,借用小学语文课上学到的一句话;
学如逆水行舟,不进则退。
以前我一直怀疑这句话。终究是古人诚不我欺,从事开发这行之后自然就相信了。
网友评论