android前景分析(今年的Android市场寒气十足)
不得不说,任总的把寒气传递给每一个老百姓,杀伤力拉满,不少小伙伴都绷不住了,开始危机重重。也有不少小伙伴唉声叹气,感觉情况糟糕至极。
就连一个不满 25 岁的朋友,也开始担心起 35 岁程序员中年危机了,问该怎么办?
说句实在话,环境是没有以前好,但还没有到恐慌的地步啊,再说,25 岁就开始担心中年危机,着实有点早了呀!这期间还有 10 多年的美好岁月呀!
我们是该未雨绸缪,但不应该杞人忧天啊,这种“危机病”必须得治。下面这部分内容可以说是治好“35 岁”危机的良药!理解的非常深刻,道和术全都具备!
相信很多小伙伴对“35岁”这个话题感到焦虑,担心自己 35 岁之后会失业,因为前几年我也这样,不过目前要好很多,文末会讲。
不 BB,上文章目录。
一、为什么会危机?
1.1 35 岁年龄特点
35 岁并不是真正的 35 岁,它是一个泛指,基本上来说就是 35-40 岁这段时间,所以后面我说的 “35 岁”,都是泛指 35-40 岁。
为什么会在这个阶段出现危机呢?
- 经济压力:这个年龄一般都有房贷、车贷、子女教育等,我认识很多同事,光房贷每月基本都要 6K-7K,再算每月的生活支出,很多都会月光;
- 家庭原因:这个年纪的人都已经成家,上有老下有小,需要平衡家庭和工作的关系;
- 身体素质:年龄的增加,身体素质大不如从前,不能熬夜;
- 个人学习:因为生活和家庭,能留给自己学习的时间不多,主动学习的欲望会明显降低。
1.2 35 岁危机来源
如果公司裁员,你是不是被最先裁掉的那一批?如果被裁掉,35 岁再出去求职,其它公司会不会要你?如果新公司给你 Offer,能否能达到你之前的水平,至少能保证你正常的生活开支?
怕被优化,怕年纪大了找不到工作,怕给你的薪资覆盖不了你现有的生活水平,这些其实都是我们危机感的来源。
我们看看用人单位看大龄程序员的视角:
- 管理成本高:领导的那一套画饼方式已经不适用,年轻程序员容易管理;
- 经济成本高:要的工资一般都不低,同样的费用是年轻程序员的 2-4 倍;
- 精力跟不上:如果公司推崇加班文化,大龄程序员的精力确实不太能跟上;
- 家庭事情多:大龄程序员家庭琐事多,不像年轻程序员那么纯粹;
- 其它:学习和进取欲望降低、能力提升变慢、技术栈老旧、可塑性变差等、公司产品不需要过深的技术和业务积累。
1.3 大龄程序员是否被排斥
年轻程序员在写日常的业务代码,可能和大龄程序员差不多,但是当需要解决公司的技术性难题、或对项目重构时,大龄程序员就会发挥自身的优势:
- 某种技术方向上有深厚积累;
- 项目经验丰富;
- 业务积累深厚;
- 解决问题能力强;
- 设计、架构、分析、规划等方面能力较强;
- 大局观强,有情绪管理能力,稳定耐造。
所以我们和年轻程序员拼的不是代码能力,而是项目经验、设计能力和知识输出等。
如果你已经步入大龄行列,比如有 10 年工作经验,但是真实水平不到 5 年,被淘汰的概率会非常大。
这里可以给出我的结论:
- “35 岁危机”是否存在?这个毋庸置疑,肯定是存在的。
- 公司是否排斥大龄程序员呢?在我看来,公司排斥的不是大龄程序员,而是排斥能力和自己工龄不匹配的大龄程序员。
2.1 克服焦虑
“35 岁危机”一直存在,准确来说大龄危机一直存在。
拿我个人来说,我认为能做到 40 岁,但很难做到 45 岁,做到 50 岁更遥不可及(大神除外),所以危机无法避免,只能尽量去延长我在这个行业的生命线,并在“退休”前完成一定的财富积累。
如果能有上面这个觉悟,其实就没有那么焦虑,因为我们最终都会离开这个行业,只是时间早晚的问题。
所以我的目标就非常清晰:不是要守住程序员这个行业,而是尽量延长我在这个行业的生命线。
那如何才能延长职业生命线呢?答案是持续学习!
IT 行业的技术更新换代非常快,对个人综合能力要求非常高,如果你不持续学习,等到年龄危机到来时还想躺赢,下一批裁员的可能就是你了。
持续学习是一切的前提,但我们不能盲目去学习,需要提前做好职业规划。
2.2 提前做好职业规划
我们看看程序员常规的晋升和转型路线:
- 技术型:初级工程师->中级工程师->高级工程师->架构师(技术专家)->技术总监->CTO;
- 管理型:工程师->项目组长->项目经理->项目总监->技术总监->CTO;
- 交叉型:初级工程师->中级工程师->项目经理->技术总监->CTO(此路线技术和管理交叉进行,每个阶段做的事情不固定);
- 转行型:初级工程师->转行产品、设计、销售、运营等。
下面是更加详细的职业规划,尽量延长自己的生命线,甚至可以摆脱年龄的限制(能摆脱年龄限制,都是大神级别):
- 在某种开发技能上建立个人品牌,比如Framework、性能优化、Flutter、音视频 等,而且你的品牌要被业内认可,这样的开发者实际上是以 “技术专家” 的身份存在。
- 在组织内开发技能过硬、精通业务,成为复合型选手,占据难以替代的位置。这样的开发者,可以称之为高级开发工程师或者资深开发者,这样的角色,在一个合适的平台上可以受到重视,可以跟着平台发展,不用在意年龄。退一步讲,即便所在的平台倒掉了,也会有很多公司愿意要。
- 成为善于架构某类软件服务的架构师。这是从高级开发工程师演进过来的更高级的角色,当你真正做过一些大型App的架构工作,会有很多公司需要你,不必担心你的年龄,你工作自由了。
- 走向管理岗位,成为职业经理人。很多公司都有项目经理、技术经理、研发经理等管理角色,你需要能够真正做好管理工作。
3.1 技术方面
技术才是每一个程序员的安身立命之本,无论你处于哪个阶段,都不要把技术完全落下,区别只是在各个阶段对技术要求的侧重不同:
- 初中高级程序员:一个技术强化的过程;
- 专家:选择一个技术方向深耕,成为对应技术领域的专家;
- 架构师:更偏向对项目整体架构的设计和把控能力;
- 团队负责人到 CTO:管理职能更大于技术职能,更多的是对技术的宏观方向把控。
技术方面主要有以下几点建议:
- 先广后深,打造自己的核心竞争力。 你可以是性能领域的专家,也可以是 音视频 大佬,或者精通 Framework。
- 拒绝啃老本。 不要在一个公司混了 3 年,出来找工作投简历,发现简历都投不出去,Flow 都不知道是什么,Kotlin、Compose完全没接触,还是只会基于业务CV开发。2/3 线城市还好说,在一线城市工作的,技术迭代更新比较快,一定要跟紧主流技术。
- 要形成自己的技术体系。 什么是技术体系,举个例子,你说自己会性能优化,但是除了日常去除页面多余嵌套、使用线程池、ViewStub这些非常浅的方案外,你还知道线上复杂环境,低端机/弱网等因素下,用户触发的一系列体验优化吗?围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。
- 尽可能做多做一些总结输出。 我目前的做法是将日常的一些学习笔记、人生感悟、bug 解决过程等先简单记录在笔记上面,后面再逐渐整理输出,既可以回顾总结反思,也能作为一些博客的内容输出。
- 不要死磕技术(这点大家勿喷)。作为程序员,需要有一定的技术信仰,但也不能太过迷信技术。在职场中,你要比别人走的更高更远的话,只会敲代码实现一些业务功能是远远不够的。其实在很多开发公司,开发人员的地位都比较一般,来去匆匆,始终是底层的搬砖工。所以,不要傻傻地一头扎入了技术的海洋,每个人的精力都是有限的。除了技术实力外,你还需要有意识地培养自己的沟通表达能力、文档输出能力,比如项目说明文档、项目架构图、汇报 PPT、团队管理、项目管理、项目规范、抽象化思维、产品化思维等综合实力。
3.2 架构和设计
架构师是很多开发者的终极技术梦想,能成为架构师的凤毛麟角。
但是,每个人都必须要架构和设计软件的能力!
如果你没有架构、设计的能力,就无法站在更高维度去理解软件开发,就必然被迫奋战在最简单也最容易被替代的体力化的编码工作岗位,而这样的岗位,必然是拒绝大龄程序员的。
所以,即便你还不是架构师,也不是技术经理,也不是管理人员,也不是需求分析师,你也需要在日常工作中拔高一点,经常性的、刻意地去想一想,系统的模块为什么这么划分,服务间的接口为什么这么设计,这个业务逻辑为什么要这样实现而不是那样实现。
惟其如此,你才能慢慢理解别人的架构与设计,才能慢慢培养自己的架构与设计能力。
3.3 业务能力
所有开发者都要记住一点,开发者具有双重的行业属性:软件行业属性和软件所要解决的问题所属行业的属性。
软件所要解决的问题,就是我们通常所说的业务。比如支付宝的业务是支付问题,京东商城的业务是电子商务问题,携程的业务是机票和酒店预订问题。
精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。
如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有秒杀 85% 以上开发者的能力。
再比如,目前国内技术人员太多,可替代性太强,做 Android 搞应用开发的,八成都是简单套用第三方框架写写业务代码改改UI,对技术浅尝辄止,不了解底层原理,通用性太强。
而如果你既懂技术又熟悉核心业务流程,比如熟悉电商平台、支付系统、风控系统等的核心业务流程,那么你在团队的地位一定稳如泰山。
3.4 软技能
《软件架构师的 12 项修炼》这本书里给出了软件架构师的金字塔能力模型:
这个模型,适用于绝大多数软件开发工程师,在这本书里,作者说这么一句话。
大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。
我们每位开发者都要牢记这句话,要清醒地意识到:
- 不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩占据重要位置;
- 没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上走出高度。
所以,在你掌握一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,比如沟通、表达、协商、演讲、辅导、写作、组织、规划、管理、汇报、商务谈判、创新、设计等等。
只有软技能匹配你的硬技能,你才能更好地发展,当你软硬结合,综合能力爆棚时,根本不用担心将来怎么找工作的问题,工作机会会跟着你跑,甚至有人会专门为你创造工作机会。
四、其它建议除了持续学习、往技术或者管理方向发展以外,我觉得有以下几点也需要重点关注。
4.1 锻炼身体
之所以写在最前面,因为身体是革命的本钱,有句话非常经典。
身体是 1,其他都是 0,没有 1,再多的 0 都是空。
魔都一位技术人员,总以为自己年轻,身体硬扛得住,结果一次晕倒后,医院检查发现自己得了尿毒症,没有好的身体,你挣再多钱都没有意义,一旦你因为身体而离开人间,配偶、孩子、钱都是别人的了。
4.2 发展副业
提前布局 PlanB,做好副业。
做副业的目的,就是增加自己的收入,同时也是倒逼你去学习更多的知识,让你的技术能力提升更快,也为你未来创业做准备,增加你抗风险的能力。
除了以上好处,副业也会提升你的个人能力、扩大你的圈子。
4.3 拓展圈子
越是成功的人,他的圈子就越广,资源也越多,人生的路自然就越走越宽。
最近一段时间认识Z哥后,我就发现,生活工作又了新的不一样,我进入了另外一个资源共享的圈子,我们做开源,做的不亦乐乎。
所以多向上拓展你的圈子,多走近结交那些正能量、有想法、志同道合的人。
兴许下次换工作,是圈子里的人脉直接内推让你找到一份满意的工作,更有可能,圈子里的几个朋友因为某一个好点子直接走向创业之路。
最后再回到文章开头的问题,其实我 2 年前还很焦虑,但是现在不再焦虑,反倒信心更足了。
我目前基本都是按照上面的轨迹去走,已经走了 2 年,各方面的软硬技能都已具备,所以在公司,基本不太担心被裁。
可能有同学会问,那当你 35 岁以后,万一公司倒闭了呢 ?
如果自己还不到 40 岁,找一份大厂的工作,应该不难,如果到了 40 岁,我也完成一定的财富积累,手中有粮,心里不慌。
为了以后能有退路,我也在布局自己的 Plan B,扩展自己的人脉圈子,比如写文章、搞创业项目。
如果副业能做起来,说不定以后就靠这谋生,如果没做起来,我也收获了人脉和经验,为下一次创业蓄力,何乐而不为呢?
最后送上大家一句话:工作可以是事业、是热爱,也可以只是一份工作,给自己留出转身的空间很有必要,如果把工作看作一份经历和沿途的风景,在乎过程中的经历、感受多过最后的结果,可能会让人生更加充满期待。
ending
这里也分享一些珍藏资源,从面试简历模板到大厂面经汇总,从大厂内部技术资料到互联网高薪必读书单,以及Android面试核心知识点(844页)和Android面试题合集2022年最新版(354页)等等,这些资料整理给大家,希望踩过的坑不要再踩,遭遇的技术瓶颈一次性消灭。
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取!
Java部分,像序列化、注解、泛型、反射、JVM、编译时、动态代理等等,都是非常重要的,尤其是越往上走越重要,在大厂中是必问的版块,很多中小厂以及校招也会着重考量Java基础
Kotlin部分,刚推出的时候大家都不太愿意学习,现在官方新文档、Sample代码、大厂面试、实际工作都已经纷纷转向Kotlin了,作为官方主推的语言,国外基本都已经转换过来了,但国内稍显慢半拍。一直到现在,Kotlin已经是一个很明显的趋势了,很多新技术都需要结合Kotlin一起使用,还不上车就晚了。
Jetpack Compose,Jetpack可以让我们可以摆脱不断造轮子抄轮子的窘境,而Compose作为Google I/O 2019 发布的新的声明式的UI框架,目前API已经稳定,构建、预览等开发体验也已经趋于完整,新的声明式UI开发也已是共识,必将是日后App极为重要的编程方式。
Framework,作为框架层,给我们提供了很多的API,但很多机制都是封装好直接用的,如果不深入了解原理的话,很难在这基础上进行优化。Framework的学习不是一蹴而就的,但是当你慢慢理解的时候,就会发现很多日常工作中的问题都迎刃而解了。更何况,兄弟们,面试必问啊!!!
也可以继续向下,Framework开发、SDK开发,不过岗位会比应用要少一点,不过薪资和稳定性会更好一点
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取!
性能优化,这块就是软件工程的深水区,也是衡量一个开发技术水平的标准。因为想要搞懂性能优化,必须对各种底层原理有着很深的了解,各种case要有非常丰富的经验,不管是APP从0到1还是从1到N,都离不开性能优化。也是面试中最容易考验出个人技术功底的部分
很多大厂的性能优化专家,真的是可以当大爷……
开源框架 架构设计,各个开源框架,除了会用之外还要主动学习其底层原理、设计思想,一方面是因为面试中经常会问到,一方面也是因为在大厂中,很容易遇到需要自己写框架的情况。相关的原理以及对架构、设计模式的理解,在高工岗是不可或缺的。
退可高工,进可架构,但作为架构师的话,对于知识的广度又有要求了
车载,最近很火的细分领域,也可以说是Android的又一春,对于底层要求会更高一点,涉及Framework固件烧写、System UI、桌面程序、底层 Window Display、底层协议USB通信、硬件以及串口通信、蓝牙通信
身边也有转车载的,薪资很香!
音视频,这块自疫情那段时间就突然走上了风口,一方面是突发事件带来的风口,一方面也是5G的带宽带来更好的体验,各厂纷纷入局,但由于音视频这块自学比较困难,很难招到合适的候选人,自然薪资也是水涨船高
涉及C/C 、JNI、H.264、H.265、OpenSL、OpenGL、编解码、网络协议、WebRTC、FFmpeg、IJKPlayer、librtmp等等
跨平台开发,跨平台框架主要解决的是UI和部分业务逻辑的跨平台,和平台相关的比如蓝牙、平台交互、数据存储、打包构建等都离不开原生支持。
所以跨平台和原生是共生的关系,如果原生都没了,我们还跨个der?该不会跨WinPhone吧?
跨平台作为一个老生常谈的问题,主要是增加代码复用,减少我们对多个平台差异适配的工作量,降低开发成本(可能主要是为了企业降本增效~)
尤其是在中小厂,成本有限的情况下,或许会更加倾向于原生开发掌握Flutter的情况
很多大厂也都已拥抱Flutter,掌握Flutter不仅可以帮助到面试,也可以拥抱跨端开发
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com