2021年,我工作的第九年了,回到家乡的第八年。这八年里,我一直在一家系统集成的公司做软件开发。而今年,我做出了一个重要的决定就是要跳槽,从新开始!
起因
我所有的城市,是一家四线的旅游城市,收入不高,但是消费特别地高,自从有了宝宝以后,三口家的生活捉襟见肘。公司在当地算是数一数二的大的软件公司,别的不多,就是流程多,三年未涨薪的我,收入远远跟不上。甚至新入公司的新人,收入也超过了我。涨薪方案永远是在讨论,在讨论,而没有落地,这萌生了我想要跳槽的想法。
在老公司八年,可以说见证的公司的不断尝试不同的领域,送走了一批又一批的老同事,培养了一代又一代的新人,想要走的这个想法,刚刚冒出头,还总有一丝不甘不舍。这个公司技术也不是很先进,属于学一年,后面全属于复制粘贴的阶段,工作清闲,不怎么加班。既然要考虑收入问题,势必做好工作量上涨的心理预期,这些都是我考虑过的。
面试准备
在这个小城里,大公司就这么几家,好一点的小公司也不算太多。基本上都有我过去的老同事,招呼了一圈,内推一部分。当然,我自己也需要好好准备一下面试了,刷了大概一个周的面试题。
同时,我在智联上公开的简历,这样,我收到不少面试邀约。不知其他城市的情况,在我们这个小城里,感觉Android开发的程序员很缺,不管是有没有经验,都很缺。我刚公开简历,就有不少HR联系我。在后来的了解中,我发现我们公司其实也在大力招聘中,范围标准已经从本科降低到了专科。
面试经过
面试了几家,最后基本都过了。有问得比较专业的,涉及到高级UI原理、Framework、JVM等问题的;也有业余到拿着打印的面试题来面试的。当然,大家耳熟能详的大厂是没有的,都是我们本地的土作坊。待遇嘛,基本都是番翻,因为我本身是有心理预期的,谈薪的过程都是一点不让的。
下面是面试中的一些考察技术点:
Android知识点
基础:
四大组件、fragment、自定义View、事件分发、滑动处理、handler、AsyncTask、IntentService、ThreadHandler、Bitmap相关的、动画的用法
进阶:
ListView、RecyclerView、AIDL、LruCache、DiskLruCache、View,Window,Activity的关系、进程保活、性能优化、
高阶:
Bindler、AMS、WMS、Context、APP的启动流程、插件化、组件化、热修复什么的等等
第三方框架:
okhttp、retrofit、RxJava等等,熟悉一个框架的源码,然后知道其他框架的优缺点
混合开发:
通常都是RN相关的,目前Flutter用的不多
架构和语言:
MVC、MVP、MVVM、组件化、插件化、热修复等等 上面介绍得不需要全部掌握,看你项目,挑一些内容掌握住,怎么问都不怕得那种,前提是不去一二线得大厂
java知识点
多线程、并发、java基本语法、泛型、hashmap等容器相关的,一般这几差不多了 面试内容准备
自我介绍
就聊聊最近一个项目里面的工作内容,遇到的问题,有什么亮点,难点 这个看项目,有人说我们没什么亮点啊,我只想说你写的代码都没有bug么,花你半天一天时间搞不定的bug就可以聊了
职业规划
技术线路:架构师技术专家 管理线路:开发leader,项目经理什么的。
基本上面试就这些的,剩下的就是尽人事听天命了,记住,面试不上有时候不是你得问题,很可能是公司其实不急着找人,或者面试官不行。
面试结果
选择公司,也有各种各样的问题,手中offer虽多,需要权衡的也多。本来有一家我很看好的公司,离家不算太远、薪水合适、双休、不主张加班的公司,最后谈好了,结果赶上总公司要裁员,卡住了。
最后我选择了一家离家近的公司,但是周六需要上两小时。这是一家做服装外贸的公司,本身开发属于配合部门,上班很清闲,不怎么用加班。主要是考虑到孩子不大,有事的时候可以随时请假,而且离家很近,走路大约十五分钟这个样子。
关于跳槽总结
整个换工作的流程,一直进行得十分顺利,得利于现在正是各公司缺人的时候,所以他们也没挑我女性一娃的属性。经过换工作,我顺利转换了我的思想,不要妄想在一家公司养老,不要扔掉自己的专业技能! 很多时间,我在之前的公司,我感觉我更多地被“体制化”了,如《肖申克救赎》里的那个老图书管理员一样。每天做着同样的事,写着同样的代码,复制粘贴就够了。我所用到的知识,在工作一年的时间,都学会了!
之前那家公司,到现在还用着十年前的技术!我提过引入,被否决了!因为没有人愿意去改已经稳定的产品。而我自己,也慢慢地放下了,放下了学习的心,放下了自己要努力成为大佬的初心,上班更多地去摸鱼摸到天荒地老……
现在,这个公司依然清闲,但是我已经不再摸鱼了,没有工作的时间,去读读原码,看看书,随时充实自己,随时为下一次跳槽做准备!
那些在一家公司呆了 10 年的程序员,最后都怎么样了?
首先能在一个公司呆10年,至少能证明公司活得还不错,因为 90% 的公司都活不过 3 年。
下面我就身边的一些例子,来和大家聊聊。
稳如狗程序员A
先说程序员A,因为在公司待得比较久了,所以自己的工作做得特别溜。
当时我们在华为做外包,所以他所在的那个组,对代码的改动极小,对稳定性要求最高,所以他在那里时间越长优势越大。
公司呢,每年还会给他涨上一部分薪资。
所以整体看起来还不错,同事都比较熟悉,他自己性格也不错,工作完成得也很顺利,几乎也不需要太多加班。
环境很熟悉,所以一呆就是很久,我从那家公司已经跳槽出来9年了, 他仍然还在那家公司。
当然,任何事情都是有代价的!
因为做的代码修改量很小,常年发展后只能在这家公司做类似的工作,如果跳槽到外面很难很难再找到合适的工作。
虽然工资每年都上涨了一点,但是和外面跳槽翻倍的那种差距就太大了,特别是10年后的差距...
对我的感觉是,好像是被这家公司包养了,如果这家公司一旦不想包养,基本上就废了...
勤奋狗程序员B
程序员B一看就是老好人。
办公室他来得最早,回家的时候也一般也是最晚,同时对公司的业务也特别上心,只要说加班第一个到。
任何来的新人,只要是找他请教问题,都热情耐心的帮忙回答,所以在公司的人缘也不错。
但是有一点,业务能力确实不太好。
特别是领导特别交代的关键项目,找他处理后总是会出现一点问题,或者有哪块他确实不是很懂。
大家都在一个大开间办公室,经常听到他的领导高声不耐烦的训斥着他,全办公室的所有人都能听见...
有时候我们也挺替他心里打抱不平,但是工作是工作,交情是交情,毕竟公司还是要靠业务活下来。
感觉他在办公室的每一天,都干得诚诚恳恳,但也如履薄冰。
对了,他貌似已经45 了...
熬出狗程序员C
程序员C运气还不错...
在公司呆了10年,公司有职位工资,每年会根据工龄加一些薪资,10年以上每月可以多拿好几千。
同时个人能力也不错,比较擅长处理同事、领导之间的关系,工作前4-5年的时候成为了公司中层,再在7-8年的时候终于熬到中高层。
负责着公司一块不太重要的业务,每天到公司,同事遇见的时候,也会被 X总 X总 的叫着。
所以在公司职务、薪资各方面都还不错。
能到这个层级,工作、生活也都相对比体面,基本上不会想着去外面折腾了,在公司的工作也都是以稳定为主。
程序员C的生活,估计也会被大多数程序员所羡慕着...
感悟
以上3个程序员的故事,大多发生在我曾经身边的同事,他们也将会是很多超过10年程序员的故事。
所以在一家公司呆了10年的程序员,大概率会分为这3类:
1、工作稳稳当当,不求上就不求过错,平稳就好。 2、工作能力下降,工作如履薄冰,有可能会在公司不稳定的时候被裁员。 3、升到公司中层,有一定的话语权和职位,稳定为主。
但对于刚毕业的程序员来讲,除非你在这家公司成长非常快,不然不建议一直呆在一家公司。
如果从毕业就在一家公司,工作内容长期不变,技能和眼界提升很慢,会阻碍自己的成长,错失职场黄金期。
如果能抓住独角兽公司那倒是例外,如果没有被累死的话,不管是个人成长或者是财富的收益应该都是最大化的。
所以我的建议是:
对于那些有目标明确,喜欢挑战、学习能力强、个人能力突出的朋友,建议在合适的情况下,选择合适的环境来锻炼自己。
对于那些对自己认知不清楚,对未来迷茫、天赋一般的朋友,建议选择一个靠前(头部)的公司,一直待下去更有利于自己的发展。
不管你是如何选择,脚踏实地地度过每一天,而坚持使平凡变非凡。
年龄不是阻挡学习的理由!
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
学习一线大厂的各项技术:
大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以提升你的学习效率。
现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。
1.2020大厂面试高频知识点
- 图片
- 网络和安全机制
- 数据库
- 插件化、模块化、组件化、热修复、增量更新、Gradle
- 架构设计和设计模式
- 性能优化
- Android Framework
- Android优秀三方库源码
2.Jetpack架构组件从入门到精通
- Android Jetpack - Navigation
- Android Jetpack - Data Binding
- Android Jetpack - ViewModel & LiveData
- Android Jetpack - Room
- Android Jetpack - Paging
- Android Jetpack - WorkManger
- Android Jetpack架构组件之Lifecycle
- Android Jetpack Compose 最全上手指南
3.Framework精编内核解析
主要内容包含:
- 深入解析Binder
- 深入解析Handler
- Dalvik VM 进程系统
- 深入解析 WMS
- PackagerManagerService
4.Kotlin强化实战(附Demo)
- 第一章 Kotlin入门教程
- 第二章 Kotlin 实战避坑指南
- 第三章 项目实战《Kotlin Jetpack 实战》
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程:suspend
5.Android设计思想解读开源框架
- 热修复
- 插件化
- 组件化框架设计
- 图片加载框架
- 网络请求框架
- RXJava 响应式编程框架设计
- IOC 架构设计
- Android架构组件Jetpack
6.NDK模块开发
- NDK 模块开发
- JNI 模块
- Native 开发工具
- Linux 编程
- 底层图片处理
- 音视频开发
- 机器学习
定期面试:
光学习了大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?
定期的面试足以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以督促自己学习提升(小伙子,你了解的技术有点落伍了呀…)
多看大佬的学习笔记,学习大佬的设计思想:
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
技术之路就是漫长的打怪升级,不断学习前人的踩坑经验才能提升自己,切忌闭门造车。 不要给自己设限,设限永远会和焦虑绑定。永远学习永远初心,有机会就为自己拼搏一次!