BAT 老兵的经验之谈,成长路上这个道理越早知道越好

Posted 程序员囧辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BAT 老兵的经验之谈,成长路上这个道理越早知道越好相关的知识,希望对你有一定的参考价值。

前言

人生就是一个自我投资的过程,关注我,这会是你程序员道路上最好的投资。

“只有知识的积累,而没有深度思考,终究无法完整蜕变。”——《感动中国》年度热心观众,程序员囧辉

 

ROI

ROI,即 Return on Investment,也就是投资回报率(投入产出比),它是一个投资术语。

在我看来,ROI 法则对于我们的工作、学习、生活,同样适用。

本文源于个人过去几年的成长、思考和总结,可能不完美,但是相信会有所帮助。

 

1、ROI 于工作

ROI 对于工作而言,主要体现在:1)绩效晋升;2)技术能力。

 

在工作中,很多程序员的工作模式应该是:做需求 -> 做需求 -> 做需求...,永无止境的做需求。

说实话,这种工作模式的 ROI 是非常低的,因为绝大部分需求都是在已有的框架里进行简单的 CRUD,即使在一些 QPS 几十万上百万的部门也会有很多这样的需求。

这些需求其实无法让你学到太多的东西,天天做这些需求,技术得不到进步,绩效和晋升也和自己彻底无缘,只能成为别人眼中苦逼的 “老黄牛”。

述职答辩时,不知道写什么,感觉自己好像很忙,做了很多需求,但是好像没啥有技术含量的可以写。跳槽时,简历不知道怎么写,都是一些 CRUD,真是头大。

因此,在工作中,我们需要“聪明点”,尽量让自己的工作 ROI 高一点。

 

以下是我自己这几年总结的常见提升工作 ROI 的思路:

1)可以做一些简单的 CRUD 需求,也必然会做一些简单的需求,但是绝对不能一直做简单的需求。可以主动去揽下一些线上问题排查、性能优化的事情,主管可能还会夸你积极。

2)解决问题是让自己技术能力提升最有效的途径,例如:解决线上问题、进行接口的性能优化、进行项目重构等。程序员说到底,就是拼谁的解决问题能力更强,解决问题的过程中会有很多新的认知,能让自己得到很多宝贵的经验。

3)任务排期时,一定要留有 buffer,可以按 0.7 ~ 0.8 来算,例如 8 天的工作量可以排 10 天,这样万一有什么线上问题之类的情况,自己就能从容的应对,而不是自己默默的加班。

4)需求是永远做不完的,你就算每天上24小时的班,需求仍然做不完。所以,请稍微自私一点,不要把自己的所有工作时间都排给做任务,尽量每天能留给自己 0.5~1 个小时的时间自由安排,利用这个时间去提升自己:思考、总结、看优秀技术文章、看源码都是不错的方式。

5)每做完一个任务,不要急着进入下一个任务,一定要进行思考和总结。

  • 对于当前的工作绩效:思考这个任务里面的价值点在哪,产出了什么,提升了多少指标,有哪些是可以在自己之后的述职和晋升答辩里用上的?
  • 对于日后的跳槽:思考有这个任务的复杂点在哪,有没有什么技术点是后面自己跳槽时能写到简历里的,是否有一些点能让面试官觉得很牛逼的?

将自己的思考通过文档记录下来,经过思考和总结下来的内容通常是后面述职答辩时很好的材料,并且有文档记录,也能让主管看到你实实在在的产出,如果你的思考和总结内容足够好,说不定主管会在他自己的报告里使用上你的内容,那你在主管心中的地位一下子就上升了。

6)公司只付你 5 天的薪水,尽量不要在周末加班干活,把这个时间留给自己,有家庭的多陪陪家人,单身的可以看点书提升自己,最重要的,每周进行锻炼,身体是革命的本钱,照顾好自己。

7)解决问题和优化的过程可能很痛苦,有些甚至可能会持续到几个月,但是正是这些让你痛苦的时刻,逼迫着你成为更好的自己。

8)最重要的:多思考,多思考,多思考。程序员在每次迈向一个新的台阶时,必然要经历一个蜕变的过程,当你不断积累知识的同时,只有不断思考,才能让自己完成量变到质变的飞跃。

 

2、ROI 于学习

ROI 对于学习而言,主要体现在:1)面试;2)技术能力。

 

程序员行业目前内卷非常严重,而 Java 后端毫无疑问是 “卷王之王”,需要学的内容太多了,你要每个都去学,说实话不现实。

因此,就像我们以前准备考试一样,我们需要将时间合理的分配,优先准备那些重要的知识。

对于 Java 后端而言,我花三个月学习了 redis,你花三个月学习了 k8s(kubernetes),无论是日常工作,还是面试,毫无疑问肯定是我的 ROI 更高。

选错方向是很多新人容易犯的错,花了几个月,结果学了个寂寞。

 

对于 Java 后端知识体系而言,按当前面试题的重要程度/出现频率而言,我对各知识点的分档如下,越靠前越重要,学习的 ROI 越高:

  • 一档:集合(HashMap、ArrayList)、并发编程(线程池、synchronized、CAS、Lock、AQS、ThreadLocal、volatile)、mysql(索引、锁)、Redis(缓存、分布式锁、高可用)、JVM(运行时数据区、GC、CMS、G1)
  • 二档:Spring(IoC、AOP)、MQ(Kafka)、Zookeeper(注册中心、分布式锁)、RPC(Dubbo)
  • 三档:MyBatis、设计模式(单例、代理)、算法(剑指offer)、分布式理论(BASE、CAP、2PC、TCC)
  • 四档:TCP、HTTP、Netty、SpringMVC、SpringBoot、Elasticsearch
  • 其他

如果你认为有些知识缺少了,或者觉得分档有问题,欢迎留言和我探讨。

 

同时,干我们这行的,大部分都要花业余时间去学习,但是很多人的学习思路可能不对,导致学习的 ROI 很低。

对于个人在业余时间的学习上,以下是我个人觉得的有利于提升 ROI 的经验:

1)知识的深度和广度都很重要,但是若要选择其中一个进行深造,我会选择深度。我自己也是这么做的,看我博客多的同学也应该能感觉的到,我其实写的知识点不会很多,但是深度基本都是在我能力范围内拉满。

2)深度是你进入大厂很重要的敲门砖,而且当你的深度足够深时,去提升广度你会发现非常容易,因为绝大部分优秀的开源软件其底层的设计思想都是相通的。

3)源码会让你更自信。如果一个知识点你没有深挖到源码,你在对线面试官的时候必然就会不自信,因为你没有亲自看过其“真面目”,面试官多问一句,你心里就虚了。

4)学习源码会让你付出很多,但是同样回报很多,自己亲眼看到“真相”的那种感觉,只能用一个字形容——爽。

5)学习源码的前提是你对这个东西有基础的了解,了解其核心的使用。在学习的过程中,不要硬怼,硬怼效率很低,而且容易出错。多参考已有的文章和书籍,站在巨人的肩膀上,我们才能看的更远。

6)99.9% 的公众号/博客文章都只能让你在某个知识点入门,有小部分能让你和 BAT 面试官对线,但是要达到和 BAT 面试官轻松对线的程度,还是需要自己去挖源码,自己去看真相。

7)看文章不在于多,而在于精。网上好的文章不少,但是水文更多,要学会辨别,文章注重质量而不是数量,一篇好文章的收获是非常可怕的。

8)文章也好、书籍也好,某个知识点看一遍不懂很正常,收藏起来多反复阅读理解,不懂的名词百度搜搜资料帮助理解,这个过程会让你的知识体系像树枝一样不断向外蔓延,这就是成长的过程。

9)尝试使用费曼学习法。我写博客是不赚一分钱的(这你还不关注?喵喵喵~),那我写博客的 ROI 岂不是很低?其实不全然是,如果是,那我不是在打自己的脸。

写博客其实是我落地“费曼学习法”的最终实践,所有你们看到的我发表出来的文章,其背后都可能是我反复看了无数遍文章和源码、无数遍自我提问、无数次的自我总结和思考、无数次的修改,最终才得出来的。

所以,我能很坦然的说,这就是我能力范围内拉满的文章了。

10)加一些优质优质优质的学习交流群,三个臭皮匠赛过诸葛亮,很多你想半天想不懂的问题,可能在别人那就是几秒钟的事。当然,那种只有群主每天定时发公文的群,加再多也没用。

11)有办法结交自己学习领域的大神,就多结交一点,当你不断的成长,到后面你会发现你要学的东西在网上资料很少,很多东西都只能自己硬怼。c++菜鸡的我在看 MySQL 源码时深有感触。

 

我的学习历程

都聊到这了,给大家送个“福利”,简单介绍下我的学习方式,供大家参考。

15.7~17.01:这期间我是完全不学习的,就是一条彻头彻尾的咸鱼,看过我文章的同学也应该知道。

17.02~18.10:如梦初醒,通过面试题和书籍,快速成长,也开始写博客。

18.11~20.09:源码、写博客,将每个知识怼深了,通过写博客落地费曼学习法。

20.09~如今:项目、源码、写博客,换了个业务量很大的部门,努力学习积累中,源码和写博客当然也不能拉下。

可能有同学会问我难道不看别人的公众号/博客文章吗?

说老实话,虽然我自己写公众号,但是其实我自己很少主动看别人的公众号文章,因为要找到一篇好文章太难了。

我看别人文章的情况,大多是在我学习一个知识点时,我会去参考一些其他人的源码分析文章,来辅助自己的理解。

另外,就是也会看一些公司内网的文章,大公司内网的博客技术分享质量都比较高,所以不会有水文的烦恼,基本上或多或少能收获点东西。

 

ROI 于我

所以,其实理论上从 17.02 算起,我的学习历程也就 4 年多而已。

这期间的学习为我带来了多少回报了,最直观的方式就是看年薪,我在 20 年跳槽的时候的年薪比 17.02 当时年薪已经增长超过 5 倍。

而如果以 20 年跳槽的时间点来算,其实就过了 3.5 年。而入职新公司以来,我最薄弱的项目也在飞速发展中,所以现在我的售价应该另算,哈哈。

就目前的互联网行情而言,我知道自己的薪水提升空间还是很大的,所以也还在努力提升自己。

程序员其实是一个相对比较公平的职业了,你只要坚持努力,多多少少会收到回报。

送给大家一句话:奋斗吧,将来的你一定会感谢现在努力的自己。

 

最后

能多一个朋友,不要多一个敌人,随手就能帮的忙,随口就能说的好话,多做一点,可能会让对方感激很久。

比如我在文章最后求赞,有些人可能会想,求赞狗我才不点,我就要白嫖;而有些人则很 nice,花了几秒钟,点赞收藏留言一气呵成。

可能这随手的一键三连,就让我们成为了朋友,以后他有什么工作或职场的问题,我可以给出一些有用的建议,那这几秒钟的 ROI 是不是就很高了。

以上是关于BAT 老兵的经验之谈,成长路上这个道理越早知道越好的主要内容,如果未能解决你的问题,请参考以下文章

BAT 老兵的经验之谈,成长路上这个道理越早知道越好

两年Java开发工作经验面试总结

汇总(职场经验分享自学教程面试真题解析技术专题深度解析)

4 年 Java 经验,阿里网易拼多多面试总结心得体会

面试必问的CAS,你懂了吗?

全网最硬核 Redis 高频面试题解析(2021年最新版)