第一段:
在网上,我们总会看到很多关于职场的问题,其中不少是跟经验和阅历相关的。近来,我空闲时间刷起了知乎,看到了其热榜上的一个话题:找工作时单位普遍要求 35 岁以下,那么 35 岁以上的人都去干什么了?
看到这个话题,突然想到之前某互联网大厂的 HR 在大学招聘时宣传公司:“我们公司是年轻的公司,平均年龄 25 岁!
”结果被学生反问:“那么请问,您公司里面 30 多岁的人去哪了?”
直接把原本自信满满的 HR 当场问懵……
无数网友纷纷吐槽:35 岁招谁惹谁了要被这样对待,谁不都得经历这个年龄吗?
不禁想起朋友分享给我的一张叫“互联网普适性职业生涯”的图:
看似是一种调侃,却也让一些职场人感到焦虑~
于是很多职场人都在思考,怎么绕过被社会默认的”35岁“年龄生死线,以及未来的出路又在哪里?
第二段
我在曾经读过的一篇文章中,看过这么一句话,因为太过于真实,记忆尤其深刻:“一个男人最难熬的状态是什么?大概就是眼里操心着不在年轻的父母,脑子里装着乱糟糟的事业,心里藏着一个不可能的姑娘,胸膛里还盛着遥远的远方。”
这句话并不是在针对 35 岁的人群,但却不知道为什么可以从这几句话中,领会到这群人的生活状态。传统来说,步入 30 岁以后,上有老、下有小,还有房贷、车贷等,需要用钱的地方太多太多,可在职场上却在遭遇年龄带来的危机。
国内多数企业对于 35 岁以上的公开招聘都是谨慎及高标准的;很多企事业社招时明文规定“35 岁以下”,就连考公务员也是。面对激烈的竞争,害怕失业、不敢裸辞,更没勇气随意跳槽换工作。
正所谓,人无远虑,必有近忧,因此对每个人来说,35 岁危机都应该被重视,未雨绸缪、想好如何破局。
该来的自然会来,逃避并不是摆脱困境的办法,我们要像鲁迅先生说的一样:真正的勇士敢于直面惨淡的人生,敢于正视淋漓的鲜血。
第三段
面对 35岁 危机,想要不被替代,唯有修炼自己,提高核心竞争力。
做到别人不会的,你会;别人会的,你能做得更好;别人做得更好,你能完成时间更短;别人做得更快,你能做得更完美。
我们就拿Android 行业来说,Android 开发工程师也是分为很多级别的。
初级
初级研发工程师的定义是掌握基础的Android知识,能够独立完成一个功能,工作年限大概在1-2年,这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。这个级别的人往往需要掌握如下一些技能:
- 掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。
- 掌握Android 基本布局和控件的属性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有TextView、ImageView、RecyclerView、ScrollView等。
- 对Android的资源访问使用有基本了解,了解Android针对不同国家、语言、屏幕、API的适配原理。
- 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
- 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。
中级
我对中级工程师的定义是能够熟练完成功能研发外,还需要掌握常见开源库的一些原理,并仿照开源库去造轮子练习。这个阶段的人大多工作3-5年,业务开发能力熟练,碰到任何一个问题都能够得到解决,这个级别的人往往需要具备如下技能:
- 熟悉SOLID基础设计原则,掌握23种设计模式。
- 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
- 对Android架构有基础了解,对apk结构和打包原理有深入了解。
- 对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
- 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。
- 掌握Handler\AsyncTask原理,熟悉多线程开发。
- 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
- 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等,能够对这些常用的库进行二次封装。
- 熟悉应用常见的优化方法,避免编写内存泄漏的代码。
高级
对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于Android系统的运行原理也比较了解。
- 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
- 对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
- 掌握热修复原理,各大厂商方案的优缺点。
- 对于Android事件分发有深入理解,重点掌握触摸事件机制。
- 深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。
- 深入理解Android动画原理,包括补间动画和属性动画。
- 对于Android安全机制有基本认知,理解Android安全原理。
- 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。
- 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
- 对新技术敏感(,理解掌握下一代架构dynamic feature等。
如果达到这一水平,恭喜你,你已经超过70%左右的人,但是如果要再进一步,比如架构中/开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
专家
作为开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
- 理解微服务、SOA思想,对于后端开发有一定涉猎。
- 了解前端研发工具和思想,知道vue react等研发框架。
- 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。
Android 开发工程师等级级别薪资如下:
如今,市场人才需求发生变化,企业对技术人才的要求越来越高,相较于初级Android 开发人员,中高级Android工程师越来越受企业偏爱。并且,不同阶段的Android 工程师自然是在能力,薪资存在比较大的差距。
另一方面,技术能力其实就是解决问题的能力,Android APP应用越来越复杂,技术框架不断变化,若你始终处在初、中阶段,职场淘汰是必然…
那么,如何成为一位优秀的高级Android工程师,如何才能系统地提升技能?
1. 报培训班学习
2. 自学
如果你选择自学的话:
- 首先要给自己制定一个成长曲线图,按照路线来合理的学习。不要东拼西凑的去学,那就是在浪费自己的时间,而且很容易忘。
- 按照自己的学习路线去一些自媒体平台找视频学习,比如:B站、慕课、西瓜视频等等。但跟着视频学习的时,需要自己多多练习与实践操作,这样才能更好的提升自己的技术。
3.平常多看看写一写博客,将自己对某知识点的理解方式拿出来给大家进行分析,或是有什么不懂的可以在这些博客平台进行查询。也可以通过写博客发文的方式建设出自己的一个技术交流圈,与圈内技术等级不同人群进行交流,起到一个互相帮助的作用。
前面说到学前需要制定一个自己的成长曲线图来进行学习,大家可以看一下下面,是我自己针对自己技术需求和Android岗位招聘中的技术需求而制定,里面基本记录的都是Android工程师必备技能和现主流技术的学习路线。如果大家还没有找到一个属于自己的学习的成长曲线图,不妨来参考一下我的成长曲线图进行学习。
内部调优
- 高效文件IO与网络IO
- 微信全面调优
- 内存与网络
- 贴近实战之问题优化
- 编程优化
高级音视频
- C/C++基础
- 交叉编译
- NDK进阶面试
- 增量更新与Gif渲染
- H264视频编码
- MediaCodec
- 视频编辑之剪影实战
- FFmpeg万能播放器
- 直播推流
- 图形渲染与识别
- Webrtc音视频
架构师必备
- 架构筑基技能
- 手淘组架构设计
- 开源架构手写实现
- 一线大厂架构核心进阶
Kotlin技术
项目开发必备底层知识
- Android虚拟机内存原理
- Android10.0虚拟机源码分析
- 高级并发原理
- 线程实战
- 编译时高阶技术
- JDK高级动态代理
- 高级数据结构与算法
Android Q FrameWork源码与UI新技术
- 自定义控件进阶
- UI绘制与新技术
- AndroidR新技术
- Android Q下的FrameWork源码(SDK 29)
- 深入虚拟机源码
- 微信核心技术掌握
Gradle
- Groovy语言学习
- Gradle Android插件配置
- Apk优化之图片压缩(编译器自动将图片转换webp)
- Gradle自动化加密
- 手写Gradle实现自动化打包
小程序
以上就是我的一个学习成长曲线图,后续还会随着新技术的更新而更新,大家可以进行参考学习,希望对大家有所帮助。
最后
我在学习的同时自己收录整理了一份Android 核心知识笔记+架构视频+面试文档,还有些高级架构技术进阶脑图、Android开发面试专题等一些高级进阶架构资料,我平常在闲暇的时刻,还会将这些精品资料拿出来反复翻阅。
总之是想通过学习资料和学习路线能够帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习,如果你有需要的话,可以私信我【666】或点击【Github地址】进行查看获取!!!