写在前面的话

不知你发现没有,人到中年之后,时间流逝的速度仿佛越来越快?

还记得毕业那会儿,我们怀着新鲜和好奇踏进了职场,那个时候每天都是满满的挑战和需要学习的东西,感觉时间过得真慢啊;

不知道从什么时候开始,工作渐渐变得索然无味,日子过得越来越快了,还没等你察觉,大把大把的光阴就在你眼皮底下溜走了。

时间像是飞速旋转的车轮,裹挟着我们每个人。

对于一些35岁以上的Android开发来说,正面临或即将面临一个尴尬的境地——

当所处行业不再负有过去的风光,自己多年磨练的技术也面临着惨淡的前景,渐渐地,曾经引以为豪的职场经验,正在无形中加速贬值。

或许,正是多年前那句“学一门技术吧,越老越吃香”的至理名言,把这些中年人推向了极度寒冷的“职场断崖”。

一、人到中年是怎样的一种体验?

两个字,孤独。

有段话是这样说的:

“所谓人到中年,就是时常会觉得孤独,因为一睁开眼睛,周围都是要依靠TA的人,却没有TA可以依靠的人。”

一位朋友在和我聊天的时候谈到今天遭遇的职业困境,长长地叹了一口气。

“从刚毕业那会儿工作到今天,从来没有想到过自己会走上这一步......”他感慨道:“倒也不是没有先兆,最开始是削减年终奖,到后来是工资缩水,那几年也都人心惶惶,有的人就选择了离开,自谋生路去了......”

“也有人劝我走,但是一来我的年纪也大了,转眼都快35了;二来我当年学的这项技术,如今整个行业都已经非常饱和了,出去了也不好找工作;三来我对这个公司多少还有感情,我和老张老李这些人共事了四五年了,大家相处的和一家人一样。怎么能说割舍就轻易割舍下呢?”

他说着,眼眶不禁湿润了。

二、断崖之痛

Android作为一个已经市场化十余年的技术门类,它必然早已经是成熟常态。这样的技术行业都不再会有爆炸式的增长。连同Android硬件、手机、平板等都会趋于稳定,再就是一个稳中逐步下降的趋势。对于这方面人才供需也会趋于稳定,市场对开发者的从业经验,项目背景要求都会逐步提高。

我心知肚明,我的这位朋友面临的职业困境用“断崖”来形容毫不夸张。

一方面,由于他这些年在公司过得比较安稳,再加上没有一个拿得出手的项目,意味着想要保持现有的收入跳到另一家,几乎是没有可能了;另一方面,新技术的涌现以及大批90后、00后的崛起,让他面临着极为严峻的再就业压力。

多年以来,那句“没有一技之长是中年人最大的可悲”放在当今的时代背景下,似乎渐渐不适用了。

瞬息万变的技术圈对于我们这些从事技术工作的职场人提出了更高的要求,如果能尽早在原有技能基础上添加一些新的技能,形成“技能混合体”,则未来的职场竞争力会更强。

三、Android开发人员应该掌握哪些技术?

这里我找来一则高级Android开发的招聘要求:

这是小米在拉勾上的招聘要求,相当于p5到p6级别,除开学历的要求外,我们可以看到它在Android基础要求之外,把JNI/NDK/Framework,甚至JS、Server端开发也作为了提升点,是全栈方向的雏形。我觉得大家可以经常在招聘网站里看看现在的企业需要什么技术,当然也不能把企业要求的都学了。我这里大致总结了一下,Android开发人员的发展方向:

第一,横向提升。

基于全栈发展的趋势,在自己擅长领域深入专研的同时横向扩展,不要关起门来闭门造车。而这里说的横向提升就是向全前端转型,在除了要在APP会hybrid开发(web、native、前端交互、硬件交互)之外,还要会web开发,微信小程序,H5。

比如服务端开发,我们做Android开发很多时候,要依赖于服务端接口返回数据,可以自己试着搭建一下,至少要对服务端的结构理论、服务与服务之间通信、聚合是什么样的流程也是需要有所耳闻。

第二,纵向重塑。

一直以来,做Android开发有这么两个说法,如果是做应用开发,往应用架构方向发展比较合适,如果是做系统层开发,往往底层驱动比较合适。这里我是比较赞同的,那具体应该学习什么呢?

1.移动架构:架构展示层: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components;架构层:模块化->组件化->插件化->沙盒/双开技术,比如可以双开微信,类似Docker, 每个页面都是插件,类似Vue.js中每个页面都是组件。

2.基础进阶:这个方向可能比较多,比如VIEW、Android动画机制、四大组件工作原理、多媒体技术等等。我们平常在工作中碰到的View滑动冲突问题、其实通过掌握View工作机制和Android触摸事件体系就能轻易解决掉。还有对于需要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有一定的了解。Android 中的四大组件工作机制其实底层应用的是Binder机制,我们不妨从 AIDL 这个接口来了解 Binder。

JNI 和 NDK 开发也是比较常见,特别对于一些做 SDK 项目为主的,这一块开发流程也是需要掌握,NDK开发(含JNI)也是用人单位区分应聘者的手段之一,企业不一定要用到,但是可以通过是否掌握NDK来筛选人才。

3.语言学习开发语言:这里我要纠正一下学习语言不是跨行业,比如Kotlin可以说是Android世界的头等公民了。再有时下比较火的Python和GO,另外做底层C/C++是必不可少的。

4.源码:要求能看懂并且熟悉源码(自己选几个第三方库的也可以),要做到熟悉源码及其实现原理。并且要做到能自己二次封装(或自己贡献三方库)三方库。这样一来,你就会在维护中慢慢成为这个技术块的专家了。我觉得输出倒逼输入是一个不错的学习方式。

..........

下面对知识点做一个具体的梳理:

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

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

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

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

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

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

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

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

以上内容均放在了开源项目:【github】 中已收录,大家可以自行获取,免费分享给大家。

最新文章

  1. MySQL 之 Metadata Locking 研究
  2. 字符串String: 常量池
  3. Zookeeper C API 指南一(转)
  4. Android Studio 快捷方式
  5. Google日历添加农历、节日和天气插件(步骤)
  6. JDBC初步(一)
  7. css3 animation动画事件
  8. JS —— 数组与字符串方法
  9. 关于Android反编译
  10. amd和cmd区别
  11. 在Linux(ubuntu 14.04)上部署WeX5跨平台App(HTML5)
  12. Javascript和BHO的相互调用简介
  13. WPF 自定义控件缩放
  14. socket网络编程之不间断通信
  15. linux上搭建svn服务器
  16. 关于使用JPA中@Query注解传递表名/视图名参数的问题
  17. 洛谷P3628 [APIO2010]特别行动队(动态规划,斜率优化,单调队列)
  18. 解决 meld 出现 locale.setlocale(locale.LC_ALL,'') 失败的问题
  19. 用node.js和webpack做前后端分离的总结
  20. TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)

热门文章

  1. Linux主机解析顺序
  2. 9.10、mysql进程、状态在线修改参数重要知识
  3. 7、Oracle通过客户端(sqlplus)登录认证用户的方式
  4. 【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)
  5. SQL 清除数据库日志
  6. hdu 2604 递推 矩阵快速幂
  7. python base64(图片)编码
  8. 两个有序数组合并为一个有序数组---python
  9. 刷算法,这些api不可不知!
  10. C++ 标准模板库(STL)——容器(Containers)的用法及理解