为什么程序员一直说35岁毕业?
Posted River_ly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么程序员一直说35岁毕业?相关的知识,希望对你有一定的参考价值。
最近刷到不少关于各大厂开始让员工“毕业”,向社会输出大量优秀人才的新闻,其实大家都明白“毕业”很正常,但为什么是我?为什么越是接近所谓的 35 岁就越容易“毕业”?
这是一个吃力不讨好的话题,很难展开友好讨论,幸运的是我可以只表达自己的想法,不接受反驳。
最近在朋友圈看到一段话:“「成长于天宝时期的人,以为盛世是常态,谁又能想到,他们中的很多人会死于随后的安史之乱」” 。
互联网的红利和高速发展让“码农”开始高估了自己的价值,很多时候带来了一个认知:“我现在的收入,也是我未来10年的收入”,所以有时候敢于追加杠杆,从而一不小心陷入僵局。
当然这里我不是想马后炮嘲讽,因为谁都不敢断定自己是处于山顶还是山腰,我想说的是:“「虽然我们一直说着“码农码农”,但是我们从没“承认”过自己码农的身份」”。
先聊聊为什么是 35 岁?这里我们看一个有趣的例子:电子厂招聘。
上面的招聘信息出来了什么?
电子厂招聘基本要求都会要求 40 岁以下,但是现实中一线员工很多都是 35 以下,如果你看到 B 站上东莞电子厂的记录片,就会发现电子厂基本都是18-20+年轻人的“天下”。
❝
2016年东莞工厂纪录」十八岁的流水线: https://www.bilibili.com/video/av94780669
❞
为什么?理由无非以下几个:
- 年龄大干活慢;
- 很难应付长时间的加班;
- 学东西太慢;
- 年纪大了不好管;
回过头来看,作为“码农”的我们自认为做写字楼,996 写着“改变世界”的代码,甚至一度觉得自己超越了父母辈在工厂的“碌碌无为“,那确实是如此吗?
从我感觉,其实程序员的工作很像是高配版的电子厂,如今的互联网行业高度发达细分,甚至行业内特别讲究语言(go、java、python、js)、领域(andorid、ios、前端(vue、react)、后端、算法),大家可能会不自觉地就把自己贴上很细分的标签,这样每个一线员工的工作会被精细化地分配,很难知道全貌,只要认真执行就好。
这种情况下甚至诞生了语言和领域的鄙视链,而从管理上这样的细分降低了成本,得到更快的效率,把它分得更细,像电子厂流水线一样,当某一个环节出了问题,可以快速替换。
❝
讲个笑话:所以有时候你可能觉得公司离不开你,但是疫情来了之后,公司突然发现没了你也能正常运作。
❞
所以你知道为什么大家都在说 35 岁?底层逻辑不是因为你技术不行,也不是你运气不好,而是和电子厂的流水线员工一样:
- 互联网以前是扩展期,行业攻城掠地大多数靠的不是技术创新,而是源源不断的细分型号的干电池,快速而又敏捷地抢占先机;
- 现在进入紧缩期,资本开始拼的是谁成本更低,所以需要更便宜又更节能的电池来维护壁垒;
所以有时候想想就觉得很有意思:「我们究竟是某种语言或者框架下的农民工,还是使用某些语言或者框架去解决需求的工程师」?
不知道你对自己的定位是怎么样?另外为什么年纪大了容易毕业?也有一部分原因在于职场内卷之下,年纪大的自尊心自然也高,使唤起来的成本自然也高。
工作中的疲惫往往不来自工作内容本身:
20%来自应付职场中无意义的形式拉扯;
30%来自给自以为讲道理的人讲道理;
-50%来自明知道是一坨屎还得凑上去的忍让;
都市人的疲惫,倦的是放低尊严后忍辱负重的自尊心。
在脉脉数据研究院 2021 年发布的 “大型互联网企业员工平均年龄” 调查显示,被统计的国内 20 家企业中,「平均年龄均在 27~33 岁之间」:
❝
其中,以TMD(字节跳动、美团、滴滴)为代表的新生代互联网公司,平均年龄在30岁以下(含30岁)的公司几乎占一半,字节跳动和拼多多员工平均年龄相对最低,平均年龄仅27岁。BAT中,阿里巴巴员工平均年龄31岁,百度平均年龄30岁,腾讯员工平均29岁。
❞
那国外的程序员年龄分布是多少呢?
来自某不知道靠不靠谱的调查里,40 以上的人占据大多数,当然这个对比其实毫无意义,因为国情和环境不同,统计的样本不同,统计的方式不同,都能够得到“你想看到的数据”,这些数据大多数时候除了增加焦虑和用于抬杠,它们解决不了问题。
❝
数据来源:https://www.zippia.com/computer-programmer-jobs/demographics/
❞
而从我个人的感受上,在和社区与大佬的日常沟通中,我发现基本上大家的涉猎范围都很广泛,或者说:「语言和框架都只是为了解决问题」。
我知道现在的程序员都特别敏感,特别是大前端领域:「今天不是看到这个要凉,就是明天看到哪个要火,这里面的背后逻辑是什么」?
❝
我个人感觉这大概就是行业给我们画了个圈,然后我们自己约束了自己,因为框架和语言,所以我们才能找到工作,如果这些框架和语言都凉了,那我们还这么混?所以每次看到这些都有人会被拨动心弦。
❞
大家都知道那是在贩卖焦虑,但是看多了你依旧会焦虑,这就是阳谋。
当然还有个问题,那就是精通和嚼多不烂的问题,这个问题说过很多次,「当讨论选择竖向精通还是横向发展的时候,有个前提是你真的去精通去深入,而不是原地担忧你长横了之后竖不起来怎么办」。
不过说了那么多废话,其实还是前面那句话,“毕业”和你的技术不一定有关系,那当行业开始内卷之后,我们还有什么办法在这个行业下生存下去,如果有必要,是不是可以为了生存撕开自己身上的标签,或者降低自己的预期去活下去。
不过其实你也不用那么焦虑,换个角度想想,这其实是行业和国情问题,大家都一样,技术好坏不是最直接的决定因素,这样想是不是会舒服一些?
当然,这种时期,最大的赢家莫过于那些不负债,一个吃饱全家不饿的人,因为他们有更大的自由空间去选择那些更有“尊严”的路。
作为另一部分,好像我们唯一的进阶路也就只剩下了提升技术水平……
那在这里就给大家分享一套完备的知识体系,整体参照了各家一线大厂高工岗位的招聘要求及岗位技能需求,并且每个具体的知识节点还附带有一整套体系化的学习资料、笔记进行辅助,帮助你把所学的知识点全部串联起来!
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
01.android必备底层技术:
- Java序列化:Serializable原理、Parcelable接口原理、Json、XML
- 注解、泛型与反射:自定义注解、注解的使用、泛型擦除机制、泛型边界、Java方法与Arm指令、Method反射源码、invoke方法执行原理
- 虚拟机:JVM垃圾回收器机制、JVM内存分配策略、Android虚拟机与JVM底层区别、虚拟机底层Odex本地指令缓存机制、虚拟机如何分别加载class与object、虚拟机类加载模型
- 并发:Java线程本质讲解、线程原理、线程通信、UnSafe类、线程池
- 编译时技术:OOP面向切面之AspectJ、字节码手术刀JavaSSit实战、字节码插桩技术(ASM)实战
- 动态代理:动态代理实现原理、动态代理在虚拟机中运行时动态拼接Class字节码分析、ProxyGenerator生成字节码流程
- 高级数据结构与算法:HashMap源码、ArrayList源码、排序算法
- Java IO:Java IO体系、IO文件操作
02.Framework:
- Binder:Linux内存基础、Binder四层源码分析、Binder机制、Binder进程通信原理
- Handler:Loop消息泵机制、Message解析
- Zygote:init进程与Zygote进程、Zygote启动流程、Socket通信模式、APP启动过程
- AMS:ActivityThread源码分析、AMS与ActivityThread通信原理、Activity启动机制
- PMS:PMS源码、APK安装过程分析、PMS对安装包的解析原理
- WMS:PhoneWindow实例化流程、DecorView创建过程、ViewRootImpl渲染机制
03.Android常用组件:
- Activty:Activity管理栈与Activity的启动模式、Activity生命周期源码分析
- Fragment:Fragment生命周期深入详解、Fragment事务管理机制详解、性能优化相关方案
- Service:Service启动模式分析、Service管理与通信方案、Service生命周期底层详解
04.高级UI:
- UI绘制原理:setContentView()方法下到底做了什么、AppCompatActivity与Activity的区别、UI测量、布局、绘制的底层执行流程
- 插件换肤:LayoutInflater加载布局分析、Android资源的加载机制、Resource与AssetManager
- 事件分发机制原理:事件执行U形链与L形链、事件拦截原理
- 属性动画:VSYNC刷新机制、ObjectAnimator与ValueAnimator源码讲解、Android属性动画:插值器与估值器
- RecycleView:布局管理器LayoutManager详解、回收池设计思想、适配器模式原理
- 高阶贝塞尔曲线
05.Jetpack:
- Lifecycle:Lifecycle源码、Lifecycle高阶应用
- ViewModel:ViewModel源码、ViewModel应用技巧
- LiveData:LiveData源码
- Navigation:Navigation源码
- Room:Room源码、Room+LiveData监听数据库数据变更刷新页面原理
- WorkManager内核
- Pagging原理
- DataBinding:单向绑定、双向绑定、如何与RecyclerView的配合使用、底层原理
06.性能优化:
- 启动优化:系统启动原理、Trace工具分析启动卡顿、类重排机制、资源文件重排机制
- 内存优化
- UI渲染优化:UI层级规范及对UI加载的影响、UI卡顿原因及修复、UI绘制、布局、测量原因以及处理方案
- 卡顿优化:造成卡顿的原因分析、内存抖动与GC回收、回收算法
- 耗电优化
- 崩溃优化:项目崩溃异常捕获、优雅的异常处理方案、如何避免异常弹框
- 安全优化:APP加固实现(防反编译,dex加固)、https防抓包机制(数据传输加载,客户端服务器端双向加密校验)
- 网络优化:serializable原理、parcelable接口原理、http与https原理详解、protbuffer网络IO详解、gzip压缩方案
- 大图加载优化:Glide巨图加载机制原理分析、大图多级缓存实现方案
- 多线程并发优化
- 储存优化:Android文件系统-sdcard与内存存储、Shared Preference原理、MMAP内存映射
- 安装包优化:shrinkResources去除无用资源、合理设置多语言、webp实现图片瘦身、合理配置armable-v7的so库、Lint检查工具实践
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
07.音视频:
- C/C++:数据类型、数组、内存布局、指针、函数、预处理器、结构体、共用体、容器、类型转换、异常、文件流操作、线程
- H.265/H.265:音视频格式封装原理、编码原理、视频流H264的组装原理切片NAL单元、视频流H264码流分析、切片与宏快,运动矢量、信源编码器、高频滤波、帧间拆分与帧内预测、CTU,PU TU编码结构、DSP芯片解码流程、MediaPlayer与DSP芯片交互机制、投屏架构、MediaProjection与MeidiaCodec交互机制、H265码流交换
- MediaCodec:dsp芯片、编解码器的生命周期、解码器中输入队列与解析队列设计思想、MediaCodec中平缓解码解析、MediaExtractor 多路复用、MediaMuxer合成器、MediaFormat格式
- 音视频剪辑:视频剪辑、音频剪辑、音频合成、音谱显示、视频倒放
- 音视频直播:硬编码、软编码、native实现rtmp推流、摄像头预览帧编码NV21转YUV、视频画面封装拼接Packet包、音频流数据拼接Packet包、RtmpDump实时同步发送音视频数据、MediaProjection、Medicodec编码H264码流、rtmp推流
- OpenGL与音视频解码:OpenGL绘制流程、矩阵、Opencv详解、人脸识别效果实现
- OpenGL特效:CPU与GPU运行机制详解、世界坐标,布局坐标,与FBO坐标系、图像镜像与旋转处理、人脸定位与关键点定位、大眼效果、贴纸效果、美颜效果
- FFmpeg万能播放器:FFmpeg结构体、声音播放原理、Surface的渲染、像素绘制原理与对齐机制、音视频同步原理、视频播放器整体架构
- Webrtc音视频通话:WebRtc服务端环境搭建与Webrtc编译、1v1视频通话实现方案、群聊视频通话实现思路、多对多视频会议实现、1V1音视频通话实现
08.开源框架原理:
- Okhttp
- Retrofit
- RxJava
- Glide
- Hilt
- Dagger2
- EventBus
- 组件化、插件化、热修复等
09.Gradle:
- Groovy语法
- Gradle Android插件配置
- Gradle实践等
10.kotlin:
- Kotlin语法
- 扩展使用
- 进阶使用
- 实践等
11.Flutter:
- Dart语法
- UI
- 进阶使用
- 优化
- 实践等
12.鸿蒙:
- Ability组件
- 分布式任务
- 事件总线
- 鸿蒙线程
- UI自定义控件等
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
Android路漫漫,共勉!
以上是关于为什么程序员一直说35岁毕业?的主要内容,如果未能解决你的问题,请参考以下文章
知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”