苦于技术没办法提升,年龄和工资没有成正比,我到底该怎么办?

本人今年三十二岁,进了一个不大不小的公司工作七年有余,但是现在压力越来越大,由于疫情的原因,公司今年发展受阻,正放出消息准备裁员,由于工作的原因,我现在十分焦虑,年龄大了,加班也加不了,公司新来的年轻人薪资又低,又能够承受长时间的加班,我觉得我没有什么优势能够让老板接受这个大龄码农了。

苦于技术没办法提升,年龄和工资没有成正比,我到底该怎么办?

 

上述问题我们都一定会遇到,工作和身体不能两全,技术越来越跟不上,生活压力越来越大,我们到底该怎样面对中年危机?

下面听听几个大龄网友是怎么说的:

 

网友 hi大头鬼hi:

先mark一下,好多人我发现始终停留在两三年的水平上没有突破。

另外还有一个误区就是越底层越牛逼

第三个就是,我认识的大部分所谓的做过rom开发的对framework的熟悉程度远不如我一个一直做应用的,大概是见木不见林,始终在那一个小角落里修修补补,不会横向,也没有纵向延伸。另外这里很重要的一点是基础,比如你是否有*nix基础,可以帮你快速理解很多东西


  • 首先第一个问题:为什么很多人会一直停留在两三年的水平上,而后一直在重复以往的经验?
  1. 我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,然后就是要有一个比较正确的钻研路线,不要这也搞那也抓,最后什么都没精通又好像什么知道。很多面试者以用过很多库为荣,你真的去了解过这些库么?我觉得一个比较好的路线是,把日常开发常用的各种系统库,开源库,代码好好研究一遍,比如我用了butternife就要了解背后的apt,以及apt衍生出来的一系列库比如Hugo。当然这大部分情况是初级进阶的第一步。这个阶段应该是尽量很好的用技术完成业务需求。
  2. 第二个阶段,我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。这个阶段你可以用技术反哺业务,比如插件化和hotpatch就可以让业务更加灵活。
  3. 第三个阶段,横向扩展,到这个阶段并不是说比第二个阶段更加高级了,而是对第二个阶段的一些补充,比如你是不是可以了解一下web开发,这样做hybrid开发的时候就会更顺手。是不是要了解一下这么火爆的ReactNative&Weex技术,甚至可以把他们的一些思想拿过来自己用,比如我司内部就有很多项目是用了JSCore和CssLayout来实现一些更轻量的动态化技术的。正如科学领域很多重大贡献都是在交叉学科领域出现的。技术上到了这个阶段甚至可以做到技术影响业务,技术驱动业务。
  • 第二个问题:技术越底层越牛逼么?
    其实大部分技术都是为了满足业务需求,我认为这种场景下,是能越好的反哺驱动技术才越牛逼,和底层不底层没关系。比如你app做得非常牛逼,交互和性能非常好,直接带动业务飞速发展,我觉得你并不能做底层人差,术业有专攻,以你的态度和能力,即使去做底层开发,也是没有问题的。
  • 第三个就是为什么很多做rom的反而对Framework不是很熟悉?
    我觉得这个和第一个问题有些重复,兴趣是很大的原因。另外一个问题就是,如果没有*nix的编程基础,底层的一些东西比如binder机制,比如runloop可能会有一些吃力。这里服务端的同学可能会有一些优势,他们对rpc和一些系统调用相对熟悉一些,这也是为什么很多后端转到Android的同学可以快速精通。

    啰啰嗦嗦写这么多,请大家来拍砖

苦于技术没办法提升,年龄和工资没有成正比,我到底该怎么办?

 

网友耿锐:

很多人都提供了非常不错的答案,我也是受益匪浅,谢谢各位。

但是我觉得很多排名靠前的答案都给我感觉,思路太中国式了,像中国的考试一样,追求难题,追求穷尽真理。比如 @田元 提高的app 的main在哪儿。我不是说这些没用,或者不重要,但是我想这些知识点可能对于一个初学者进阶的人来说,就算查到了答案,也理解不了。所以说一下我对这个问题的看法,只求抛砖引玉。

  • 第一个建议,对于一个junior developer,如果想往上走,在强化知识体系的之前,我往往建议先完善自己在debug tools上的经验。

比如:

  1. 网络debug tools: Charles, mitmproxy, Stetho
  2. 内存泄露:Memory Analyser, Leak Canary
  3. Overdraw: 手机上的Drawing Settings, AVD Manager/Layout, Stetho
  4. 数据库和cache: Stetho,SqliteManager
  5. 还有最原始的,利用logcat打log,分析log并且知道各种参数,比如-v time显示时间,-s做filter等等

中国有句古话,工欲善其事,必先利其器。将各种debug工具掌握好,有利于更快地从Junior level提高上来。

  • 第二个建议,提高自我表达能力。我在面试facebook的时候(别问细节了,没过),有一个题目很有意思,来说一个你比较了解的工具或者api,whatever什么玩意都可以,看你能否有逻辑地、准确地将某lib的整个框架描述清楚,比如优缺点,比如运行流程和坑。在这里面,ABCD的某个环节中,你可以说你在B上内部逻辑不清楚,但是input 和output一定要说出来,如果能说出limitaion就更好了。
    这项能力的好处是,“准确而有逻辑地表达”往往需要清晰的头脑、丰富的知识储备,这项训练在programming中是非常有好处的,我发现凡是口头表达逻辑很清晰的人,编程coding逻辑感也非常强。有好的逻辑思维的人,成长是极快的。
  • 第三个建议,如果追求精通,不要一上来就追求对整个Android的精通,要先追求模块的精通。有些人强于写googlemap,有些人对Volley库极为熟悉甚至被merge过很多pr,有些人可能对动画非常了解,甚至有些人专门研究android相机保存图片等。其实等你很熟悉一两个模块后,你会发现其他的东西很容易触类旁通,就算不看代码,猜也猜得到。
  • 第四,提高英语能力。以前在国内只用baidu,后来出国了之后用英语才发现,简直是多长了一个脑子的感觉,高质量的文章比比皆是。所以如果英语好,在IT skill上的进步可能会快好几倍,真的不夸张。
  • 最后,不要被面试官吓到,他的问题肯定是经过准备的,没准他比你早知道不了几天这个问题的答案并且从来没在真正项目上apply过。不知道就说不知道,不过我一般会建议在不知道的问题上猜一下,并非瞎猜,只是告诉他“这个问题我确实没研究过,不过以我对android的了解看,应该是哪儿哪儿的问题或者应该是由于某种机制产生的”,目的就是显示我对android很了解,很有信心。因为谁都不可能在工作中不查看新的东西,只用旧知识的公司应该是不存在的。

网友田元:

我猜你这个阶段是把大部分 demo 都能跑通了吧,常见的控件也会了吧。
但是,你现在还是会的太少了。
就是会用 Linearlayout/relativelayout/button/textview/edittext/imageview (的很少一部分属性)来画一些简单的界面了吧。

  • 就是会用 activity/fragment (的生命周期这么少的知识)来让ui在手机里面显示出来了吧。
  • 就是会用 asynctask (这么简单的一个过时的类)来网络请求了吧。
  • 就是会继承了个 Application 类来接几个第三方服务(几行代码就接入)了吧。
  • 就是会用个 broadcast (估计只会最基本的显式广播,排队广播,粘性广播啥的都不会用)了吧。
  • 就是会 ListView + BaseAdapter + ViewHolder (总共不到10个重载的方法)或者recycleview+adapter(估计不会自定义 layoutmanager ,估计没踩过 itemanim 的坑)来展示数据了吧。


这总共就多大一点知识啊,学的这些东西内容这么少,不迷茫才怪。
如果我说屈你了。
”好。你说你比这强”

  1. 都会自定义控件(总共就measure draw layout这三个方法)了,还会volley(代码写的一堆callback hell),还会 sqllite (这玩意没多大用,也是死东西)了,还会xml里面定义动画(就平移 反转 透明旋转属性这几种)了,甚至你还会eventbus(别说只会onEventMainThread哦),你还会rxjava(学过函数式语言的都感觉这没啥)。
  2. 你说你还追新,md 控件玩得溜得很,toolbar (兼容到4.4的沉浸式状态栏会用不?)会用,drawerlayout 会用(碰到过与surfaceview冲突的情况不?),还会用 coordlayout+collapsingla yout+recycleview 来做隐藏额头(知道那个 collapsinglayout 中的 mode 是干啥的不,自定义 behavor 会不?) 
    这些都会了不?
  3. 啥,你都会了?再留个作业。
    APP 里面的 main 在哪?别的桌面应用框架像 Qt,人家显示控件都要 new 一个 window ,那咱app的这个渲染控件的window在哪 new 的,咋让咱屏幕听话跟着画的?咱手机这么多传感器,那传感器数据咋来到咱 app 的?那 manifest 在咱手机里面咋滚轮的,发生了啥,系统咋处理的?我在美团里面能打开支付宝的支付界面,这在咱手机里面发生了啥?
  4. 我提出来的这些都感觉虚吗? 回去大量学习然后写代码吧。我的这些也不是专门找书看的,而是长期开发来排除各种 bug,期间读各种大牛的文章,甚至翻了 dev/framework 层源码理解来的。
    多花时间吧,花大把大把的。

苦于技术没办法提升,年龄和工资没有成正比,我到底该怎么办?

 

网友智靖远

我本身对安卓开发一知半解,但是也算亲眼见证了几个大牛(不仅限于安卓)的成长,所以给一点我所知道的办法。

  • 1。面临一个解决不了的问题的时候,最初阶段放弃百度,放弃google搜索。尽量做到只依靠安卓官方文档。搜索引擎是一个黑匣子,问他“xx问题应该怎么解决”,它会忽略掉一切中间的思考,分析,解决流程,给出最后的答案。 
    其结果就是,使用答案的人基本上不可能理解“为什么这么去做”,只知道“可以这么做”。 就像一个没学过加减法,只会用计算器的收银员,有计算器能工作,但是恐怕没有心算的快。复杂的问题如果计算器不会算,他也不会。等到通过基本的文档自己找到了思路和方案,再去看看有没有别人写好的第三方的东西,或者成熟的方案,再和自己的东西印证。 这要花很多的时间,会比别人慢,会把别人休息的时间用来加班。 但是大牛如果是睡觉打游戏就能养成的,这个问题也不会出现了对不。
  • 2。安卓系统源代码要常备。跟踪代码时候,尽可能跟到系统的层面,越深越好。至少sdk要进去。
    不了解sdk的代码,自己就很难写出同级的代码。好代码看得多了,自然自己的水准也会提高。熟读唐诗三百首嘛。
  • 3。如果代码没有按预期的去动作,不要第一时间想着去解决这个现象,而是要追究为什么会发生这个现象。 
    比如程序崩溃了,加个try catch自然解决了这个问题。但是这么做就太糟了。自然要问问,为什么会出现这个exception?底层的返回null了,上层没处理。哦,加个判断就好了。这样好一点,但是仍然很糟。 底层为什么会返回null?如果null是合法的返回,文档里有没有约定?如果没有约定,文档有问题,如果约定了,代码有问题。更主要的是,其他地方是不是犯了同样的错误?我是不是存在“不注意文档约定”或者“写文档时候忘记约定”这样的问题?到这个地方,才真的对自己的成长有所帮助。大牛也是一步一步走上来的。
  • 4。多把自己知道的东西教给别人。 比如写一些知识和技巧跟大家分享,或者召集一个公司内的小培训。
    这样做的好处有两个。 第一自己得到了锻炼。把知识系统化总结,对自己是一个回顾,整理,沉淀的过程。这个过程中可能会找到自己尚欠缺的地方,也可能会被别人的提问启发。 第二是能逐步树立自己的地位感,成为大牛也是一个正向激励的过程,往往是牛人越来越牛,普通人越来越普通……
  • 5。不要放弃任何一个提高的机会。 
    工作中很多任务是使用已经知道的东西来做。时间长了就会觉得都是重复劳动。可是真的是这样吗?我所熟知的方法,就是最好的方法了吗?是否有更优雅高效的方式?答案是一定有,没有最好,只有更好。功能上觉得已经实现好了就提高效率,效率已经很高了就改善结构,结构优化清晰了就试试分析有没有未来可能的需求变更,能不能应用设计模式,等一圈都走下来,回过头一看,原来功能上还不够完美啊。

 


总结

总的来说,中年危机主要是针对那些没有主动的意识去提高自己的人,在一家公司或者几家公司工作,虽然你工作年限长,对于编程工具熟悉,也能够胜任公司给你安排的职位,但是随着互联网的发展,编程的门槛越来越低,最新的一批00后已经入职,工资可能只有你的三分之一,可是你能保证三五年之后在那些00后成长起来了,公司不会考虑 “以旧换新”吗?毕竟人家能加班,薪资低,也能够完成工作,为什么还要养你这么个”老家伙“呢?

佛不度人,唯有自度,一切的一切要去解决,只能靠自己主动去学习。

为了让大家更好的去学习和提升自己,我和几位大佬一起收录整理的 Flutter进阶资料以及Android学习PDF+架构视频+面试文档+源码笔记 ,并且还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料……

这些都是我闲暇时还会反复翻阅的精品资料。可以有效的帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。
如果你有需要的话,可以前往 GitHub 自行查阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值