前言
刚毕业参加工作那会儿,很多人辞职都可以跟着感觉走,一言不合可能就会走人。
可是随着工作年限增加,事情很快发生了变化,就算日常工作非常压抑的情况下,也很少辞职了,辞职似乎变得很艰难了。
为什么?
我找到5点原因,分享出来,看看是不是和你想的一样。
1.刚毕业时,精力旺盛,学习力强,觉得自己什么都可以快速学会,即便进入新领域,更换专业能力,也能很快学会新技能,融入新环境,所以更有尝试的意愿和底气。
工作几年后,精力衰退,学习力下降,觉得上了年纪还要学习新技能,融入陌生环境,被不知道什么人的人评价,压力很大,所以轻易不愿意尝试。
2.刚毕业时,还处在职业探索期,年龄小,心理上天然就觉得自己这个阶段应该尝试各种可能性。
工作几年后,进入安稳期,觉得自己应该安定下来了,心理上就会谨慎,不愿意随随便便尝试。
3.刚毕业,往往单身,或者有恋爱对象但也没有谈婚论嫁,没什么家庭负担,父母也还年轻不需要依赖你照顾,所以这个时候辞职,家庭系统方面没什么阻力,一个人下定决心就可以了,更容易落实到行动上。
工作几年后,成家了,背上了房贷、车贷,有的还有了孩子,家庭生活开支陡增,有的父母年龄大了,需要赡养……各种压力不期而至,难以躲避,辞职时顾虑很多,家庭系统给你的阻力很大,万一找不到更好的工作呢,万一空窗几个月呢……手停口停哇,后果不敢想象,所以辞职就成了很纠结的事。
4.刚毕业时,用人单位相信你有较强的可塑性,对你要求不高,愿意投资你,给你这个年轻人尝试的机会,谁不是从年轻过来的呢?所以你找工作时,遇到的求职阻力较小,你更有胆气辞职。工作几年后,用人单位对你不再宽容,他们认为你年龄老大不小了,就应该在你想求职的方向有丰富的经验,如果你没有,他们就会觉得你能力和年龄不匹配,就会对你关上大门,所以你辞了职找新工作时,遇到的求职阻力就很大,你就有各种担心,不敢随便去尝试不熟悉的方向。
5.刚毕业时,你还年轻,能拼,用人单位觉得拼能补拙,大不了压一压,让你996、007,产出也能上来,所以愿意给机会,所以你找工作时,也更容易,所以你有胆气辞职。
工作几年后,你老了,不能拼了,身上角色比较多,被别人需要的地方也多,用人单位觉得你是老油条,压也压不动,管理成本很高,所以不大愿意给你机会,所以你找工作时,就比较难,所以你辞职,就比较艰难。
那么我们程序员应该怎么做呢?才能保持自己的“身价”不掉价!其实无论在哪个行业,只要“技术”过硬,到哪里都有你的一席之地。所以说核心就是技术,那么我们怎么样才能提升我们的技术呢?这个要分阶段来。Android小白——Android进阶学习者——Android高级工程师 他们每个所处的阶段,所需要的知识都是不一样的。这里,我给大家大概分个类。
如果你有需要,希望下面这些Android高级工程师学习资料能帮到你点击【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!
(记得备注51CTO+需要那块的学习资料)
初级
初级研发工程师的定义是掌握基础的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、线程池、NIOBIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
- 对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
- 掌握热修复原理,各大厂商方案的优缺点。
- 对于Android事件分发有深入理解,重点掌握触摸事件机制。
- 深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。
- 深入理解Android动画原理,包括补间动画和属性动画。
- 对于Android安全机制有基本认知,理解Android安全原理。
- 深入理解端上设计范式思想,如mvc、mvp、mvvm、clean-arch等。
- 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
- 对新技术敏感,理解掌握下一代架构dynamic feature等。
##其他Android开发热门知识
Android 现在已经拥有十分成熟的开发体系,成熟也说明了这个系统的带来的开发红利消退了,说通俗点就是可以跳槽岗位少了。
而作为非技术大佬的我,就会选择一些其他的东西来尝试突破,比如前端、NDK、Flutter 等其他技术领域做尝试。
NDK模块
Kotlin 模块
- Kotlin Android高级工程师进阶系统学习全套手册
说了这么多实实在在的原因,但我更想说的是,如果你认准了一个方向,心心念念就想去做,那无论是刚毕业,还是工作几年,都不是问题。心向往之,力学笃行可矣!