“等着被公司干掉”,这是我同学在腾讯工作六年近期叙旧聊的第一句话。
2015年,腾讯位于南山的滨海大厦封顶,分为南北两幢,最多可以容纳1.2万名员工办公。
也是在这一年,31岁的他进入腾讯,工资一万七,级别T2.3。
六年的时间里,他升到了T10,工资翻了几番。现在项目组19个人,跟他同龄的人只有一个,已经当上了组长。
在大厂,一个大龄程序员面对的选择同样狭窄,想要晋升,团队的成果必须足够优秀。
腾讯实行的是“赛马机制”,每个项目都是一条赛道,赛道里七八个团队一起竞争,只有产出足够优秀和显眼,才能在“厮杀”中冲出重围。
这样的结果,天时地利人和缺一不可,“不确定性很强。”
如今,摆在他眼前最紧急的,不是晋升,而是如何让自己的KPI提升一点。
同学和我敞开心扉,也就是从去年开始,他的KPI排名就在部门的末位了。想要让KPI好看,就要承担一些边界性工作,“不是自己干的活也揽了”,或者就是产出高于同组的人,跃升前位。
“路子是有,但真没这个精力了。”
年轻人可以24小时耗在公司,“有求必应”,35+程序员有家庭,困于琐事,“动不动就是娃生病了,要请假。”
更重要的是,年轻人可以迅速恢复996耗费的能量,对于中年人来说,耗不起也恢复不起。
他清晰的记得自己带过的几个实习生,“一提起加班就兴奋,24小时呆在公司完全无所谓。”
有人甚至在网上发布攻略,分享如何在公司住上一个月。
年轻人精力充沛,薪资要求低,中年人体力下降,为了保证家庭经济安全系数,对薪资的期望值也会更高。
对比之下,“性价比”一目了然。
追溯过分追求速度,“喜新厌旧”的行业氛围,我同学归因于国内始终不把互联网当做一个创意行业。
在腾讯工作的6年,他意识到就算是在大厂,用到的技术也是全部依赖于国外的基础技术研发,追着人家的技术走。
追上美国西海岸的技术,需要花工作以外的时间去学习。但对于大龄程序员来说,已经无法拥有整块时间去保持技术的敏感性。
很多人向往的大厂,但对于我同学来说大厂更像个围城。
现在的他对工作充满了倦怠感,“在大厂,你也是码农,很多重复性工作。”几年前,他会花半个小时浏览行业资讯,了解前沿技术,“现在每天打开电脑就是同花顺。”
他还有两年就要签终身合同,这不是“保命符”,绩效不好,随时有可能被末位淘汰。
离开腾讯,大厂的光环虽然有,但同样也会有所束缚。大厂分工精细,用游戏开发举例,从上到下有四五百人,有做业务的、前端的、后端的、内核的,里面又分成各种细小的工种,每个人就是一台大机器里的螺丝钉。
而中小型企业,更看重综合素质,什么都得会点。“你的竞争优势其实没那么强,说不定还比不过小厂的同行。”
如果真要离开,他能接受薪资下降20%至30%,这比在腾讯的薪资低了很多,但也是极限了。
“我现在房贷两万,孩子学费两千,保姆费六千,林林总总加起来一个月花销至少要4万。”
他总会想象CEO在办公室里,看着一年的财务报表,人力支出数字映在眼前。
他在心里问自己,“老板不追求性价比,追求什么呢?”
接下来和大家分享一下我这么多年的转型之路。姑妄听之:
1、转型技术管理
2013 年下半年到 2016 年初,我慢慢转向技术管理角色,开始管理一个研发部门。我走的路线是“技而优则管”。
简单讲,就是你技术牛 X ,轻松搞定各种问题,开始带人,接下来带团队管项目,再接下来,顺理成章就会被公司推着向技术管理者转型。
这种路线,也是一大半技术管理者走过的路线。如果你想转型技术管理,可以考虑这种。
“技而优则管”的要点,就是:行有余力。
什么意思呢,就是聚焦当下,高效搞定你的任务。当你体现出绰绰有余的样子,领导就会给你更多更难的任务。当你还能高效搞定,还看起来有余力,领导就会再给你更重要的任务……
如此循环,你就越来越重要,就会带人、带项目的机会。
假如你总是手上的活儿都做不完、做不好,就基本走不了这条路线。不过也还有其他路线。
2、加入创业者行列
2016 年 9 月份,我因某种契机,离开工作 7 年的公司,重新考虑自己的方向。到阳历年底时,接受朋友邀请,和他一起创业。
我之所以愿意去尝试,是因为:
当然,不幸的事总会发生——我们失败了。
我个人并没因为这样的失败经历而后悔,因为当你站在主人翁的角度和高度去为公司负责时,你对工作的认知,会发生巨大变化!这种变化,会对后续的工作和人生产生重要的正向影响。
如果你技术过硬为人靠谱,一定会有不少创业者邀请你加入他们的队伍。不要头脑发热,要仔细考察一下:
3、 重回开发岗位
我从 2013 年开始做技术管理,到 2017 年底创业失败,历时 4 年。可是我在多个更好的管理机会面前,毅然选择回到技术岗位继续做开发。
为什么?
这是因为我们工作的目的,除了赚钱,还有自我实现。
自我实现包括几方面:
成长是指你做一件事之前和之后,有你想要的、积极的变化。
假如你做了十年开发,技术水平、解决问题的能力,还是和刚入行时差不多,那就叫没成长!
成就是指你做出了成绩并获得了相关干系人的认可。
你负责一个模块,用了最新的技术最牛逼的设计,也能 run ,实现了用户需求。你个人觉得很有成就,可是你用的技术框架过于复杂,维护成本很高,运维团队、二次开发团队都不认可,那就不是真正的成就。
意愿很好理解,就是你愿意在什么事情上投入你的时间和精力、你做什么事情时会感到开心。
比如我,在创业失败重新找工作时,就是因为觉得亲力亲为用技术去开发一个个软件、解决一个个问题比较令我兴奋和投入,所以才选择回到开发岗位上。
很多开发者都会遇到要不要转管理、要不要一直做技术这种问题,怎么选择答案,关键就在于你的个人意愿和你做某件事的感受。
可能有人会问,如果你一直做开发,年龄大了,怎么和年轻人拼?
我之前画过一张图,再贴出来给大家看看:
由这张图可以看到,开发者做软件分两次创造,第一次创造在头脑中完成,属于思考层面;第二次创造,是编码实现,是脑力劳动体力化。
如果你想要超越年龄,就要多在第一次创造所需要的能力上下功夫:
这样你就能思考得多、做得少、做得关键、做得好,就可以超越年龄的限制。否则如果你整天和年轻人一样只关注噼里啪啦敲代码,肯定没价值,很快被清退。
所谓高级工程师就是在技术上逐步沉淀,逐步体系掌握核心技术得来的。
我们程序员提升的方向无非管理者与架构师两种。要成为管理者,就应具备一定的管理知识、较高的情商以及良好的组织协调能力。
而想要成为移动架构师,就要肩负技术和组织两个层面的重任,构建自己完整的技术体系就尤为重要了。
当然从结果来论,能力突出架构师的薪资也同样会水涨船高,一个Android架构师能够拿到80万的年薪都再正常不过了。
我自己做Android开发已经是接近八年,2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,19年5月份进了字节跳动一直到现在。
字节跳动除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。同时我在内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来2年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以阿里、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。
以下分享一下我近八年抗战Android的具体学习路线及笔记文档,希望能让程序员放下自我,不断学习交流,帮助到有心提升技术的朋友!
以下完整学习笔记PDF,点击这里免费下载获取!
而作为一名Android程序员,如何破局!构建属于自己的一套架构知识体系就显得尤为重要了!
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
知识要点:
1、设计思想与代码质量优化
2、程序性能优化
启动速度与执行效率优化
布局检测与优化
内存优化
耗电优化
网络传输与数据储存优化
APK大小优化3、开发效率优化
分布式版本控制系统Git
自动化构建系统Gradle4、项目实战
启动速度
流畅度
抖音在APK包大小资源优化的实践
优酷响应式布局技术全解析
网络优化
手机淘宝双十一性能优化项目揭秘
高德APP全链路源码依赖分析
彻底干掉OOM的实战经验分享
微信Android终端内存优化实践
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
完整版资料已经整理成为PDF文档,感兴趣的朋友可以点击此处,快速获取!希望能帮助到大家!