查看原文
其他

如图,两个问题。

why技术 why技术 2021-05-07

这是why的第 101 篇原创文章

你好呀,我是why。

上面这个图片是前两天在知乎收到一个匿名咨询。其实这个问题挺好的,我觉得我可以回答一下。但是当时事情比较多,就拒绝回答了。

放假的这两天,其实我真的有认真思考咨询者提出的这两个问题:

  • 是否应该裸辞?
  • 两年工作经验的 Java 开发,需要具备哪些知识?

这两个问题我感觉其实是一个比较普遍的问题,好像很多人都有类似疑问。

那么巧了,我曾经也有过类似的困境:两年经验想跳槽了,咋整?

本文我就谈谈自己的看法。

还是先来个免杠声明:

关于该问题的回复,纯粹是基于个人有限的人生阅历和职业生涯,加上自己的一些所见所闻,给出的自己角度的回答。每个人看问题的角度不同,导致最终得出的答案千差万别。所以,关于文中提出的问题,也欢迎你给出自己的回答。但是,理性交流,文明开杠。

关于裸辞

裸辞简直是一个太热门的话题了,我在我的聊天记录里面搜“裸辞”这个词,记录老多了,我只截取了一点点:

先说个人的结论吧:不要裸辞,不要裸辞,不要裸辞。

  • 一:不到万不得已的地步,千万不要为一时之爽而裸辞。
  • 二:有经济基础,盘算好后路再裸辞。
  • 三:如果非要裸辞一次,觉得职业生涯不裸辞不爽的,那么越早越好,越年轻越好。越早、越年轻裸辞的成本越小。

先把前提条件划分清楚,这几种情况先排除在外:目前你的工作已经严重的影响到你的身体、心理健康;你准备跨行业、跨城市找工作;你家里有矿。

但是对于我们程序员来说,大多都是在同城市找同岗位,针对这种情况,我极力建议你不要裸辞。

主要原因就是裸辞找工作,心态容易崩啊。

即使你提前做好了完善的心理建设,想着:找工作嘛,大不了就是一个多月,两个月的时间,我慢慢找呗。

但是,对于大多数人来说,社会常常就是一顿毒打。等你找了一个月之后,还是没有收到一个满意的 offer,即使距离你给自己设限的时间还差一个月,大多数人的心态就慢慢的崩了。负面情绪慢慢的就出来了。

我觉得裸辞期间压力主要来自于三个方面,最直接的就是自己经济上的压力,其次就是自己心理上的压力,最后就是来自家人朋友善意的问候。

关于经济压力,长远的就不说了,裸辞之前至少至少自己的资金储备能抗过去自己四个月的生活费、房租和日常消费吧?

不知道你啥情况,但是我刚毕业快两年的时候就是一个月光族。

在自己资金储备都没有多少的情况下,强行裸辞,好的结果当然是裸辞了几天就找到了心仪的工作。

坏的情况要么就是穷到找家人、朋友支援一下。要么就是将就自己委身下嫁,为了钱将就的选择了一家公司。

没有房贷、车贷、家庭的年轻人负担还好一点,只需要考虑自己就行。

对于有房贷的朋友们来说,比如我,每天一睁眼就欠着银行几百块钱,如果几个月没有收入,那不是心态早就崩的没边了。

对于那些又有房贷,还有小孩要照顾的朋友,裸辞带来的经济压力就更大了。

然而,即使是这种情况,经济带来的压力还仅仅是裸辞中最容易抵抗的一环。

最大压力还是在于心理上的压力。

长时间收不到心仪的 offer,随之而来的就是迷茫、焦虑、混沌、不知所措、不愿面对、自我否定、踌躇满志...

这些心理都会极大的影响到你找工作的。

我之前在北京找工作的时候,前一周每天两个面试,而下一周的星期一没有一个面试邀约,我当时就觉得:完了,肯定找不到工作了,已经没有面试机会了。

这其实就是一种自我否定。

很累的,既要忍受面试这种生理上的折磨,还得忍受自我否定的心理折磨。

这时候就会变得很敏感,明明是来自家人朋友善意的关心,而我却会非常抵触。

这种情况下,我就会出现对于 offer 的极度渴望,这种渴望,会让自己陷入非常被动的局面。

还有一点就是有的 HR 可能会以此来压你的工资。HR 赌的就是你心态崩了,你需要这份工作,你会在薪资上退步,先找到工作再说。

而这背后隐藏着另外一个逻辑:

你本来裸辞,就是想从一个坑里面跳出来,不想将就着过日子。而最后的结果却是跳入了另外一个坑里面,说服自己,接受了一个还将就的工作。

得不偿失。

前面说的这么大一串,其实就两字:心态。

如果你觉得你的心态足够强大,那么裸辞也就裸辞呗,工作嘛,慢慢找就行了,反正存款多的很,不急。

这其实就是我前面说的第二点,有经济基础。

还有一部分裸辞的人呢,他们在心里早就做好了盘算。辞职之后,先找一批小公司面试一下,找找感觉,随便拿几个offer。然后再去冲击自己心仪的公司,这时手里的 offer 就是自己谈判的筹码,就算 HR 知道你是裸辞,也很难用这个理由去压你的薪资。

这部分人,甚至把第一批到底面试哪几个公司,通过之后要多少钱的 offer。然后拿到几个 offer 之后,什么时间点去面心仪的公司。如果拿到多家心仪的公司的 offer,应该怎么去选。这些问题通通都考虑清楚了。

而这部分人是什么?

是盘算好了后路的大神呀,如果你是在某个领域有建树的、有一定知名度的人,那就可以任意裸辞。工作的邀约马上就随之而来。

可惜大多数人都不是这样的人。

但是如果你是在职找工作,上面的问题就都迎刃而解了,因为你还有一条退路。进可攻,退可守,你最终选择的一定是一个你经过对比后,确认比当前要好一点的工作岗位,这不挺好的嘛。

在职无非就是不好请假吗,但是你自己掂量掂量,是在职请假难还是裸辞之后一直找不到合适的难。

如果说你非得想要体验一下裸辞的快乐,那么越早,成本越小。

这里的越早,指的是步入职场的时间。

但是我想告诉你的是,裸辞的快乐一定没有找到下家,入职之前的空档期期间快乐。

我曾经就有这样的半个多月的空档期,那可真是太快乐了。

希望你也能体会到。

另外多说一嘴,如果你的工作严重影响的到了你的身体健康、心理健康,那么赶紧走吧。以上说的都不算数,身心健康,比啥都强。

我有个研究生朋友,毕业于国内 TOP 级院校,找了一个工作,说好是在核心部门的,最后被调来调去,一年后,居然调到一个非常基层的岗位去了。

有多基层呢?

他告诉我,他每天都要去街上发传单,这是上级指派给他的任务。他发了快一个月了,实在是受不了。

而我每天都在鼓励他,赶紧辞职得了。

终于有一天他早上去了说要走,中午就把所有流程走完了。

他说走出公司的那一刻,觉得自己解放了。

在家花了几个月准备考公务员,准备的过程中去面试了几家公司。

有一家感觉还不错的公司居然给他发 offer 了,工资还比之前高了好几千。

所以,到底该不该裸辞。

在前面的三个结论后面,我还得再加上一个:

  • 四:如果你现在的工作已经严重影响到你的身体健康、心理健康了。不用想这么多了,赶紧走人,保命要紧。

总之,裸辞考验心态,稳住心态。实力和钱,都能稳住心态。裸辞之后,每天找点事干,学点东西,哪怕是微不足道的一点小进步,也能巩固心态。

关于两年经验

一个有两年开发经验的 Java 需要掌握哪些技术?

这个问题看起来挺简单的。但是我细细思索了一下,这还真不好回答,找不到下手的角度。

于是我换了个角度去想:

如果我想去 A 公司,那么这家公司的招聘简介上是怎么写的,有那些技术相关的要求?

接着你再想,你心目中的 A 公司,到底是那一家,或者那几家公司。都去招聘网站上看看,按照 1 到 3 年的工作年限,筛选一下结果。然后把这几家公司所要求的技术都放一块,就是你要找的东西了。

我想了一下我两年经验的时候都会些啥?

还真的想不太起来了。

但是我能想起的就是两年经验真的是一个特别尴尬的时间节点,主要还是处于一个非常迷茫的阶段吧,在技术的深度和广度上反复横跳。

关于这个点,其实我个人的看法是前三年都先去扩展技术的广度,后几年再找几个点来深挖。

记得之前有个哥们给我说过:

技术这东西,没有牛逼不牛逼,只有接没接触过。

这句话适用于两年的人,也适用于五年的人。五年的人大多都厉害一点,原因是他们时间多了一些,接触的东西也多了一点而已。

回过头来说说两年这个事儿。

我去招聘网站上看了一眼,在工作经验这里是这样划分的:

而正常来说其实就三个档次:1-3年,3-5年,5-10年。

这个三个档次的设定,其实就是按照职业生涯的三道坎来设定的。

两年经验就是在最低的档次,这个档次招你过去干啥的?

你心里得有点数:招你进来是为了让你来写简单的增删改查的,来干一些其他人不乐意干的脏活累活的。

有的人就说了:我虽然只有两年经验,但是我在公司就是干的核心业务呀。

拜托,大哥,你说的这情况基本就两种:

  • 1.校招入场,招你就是为了把你培养起来的,干了两年,接触核心业务很正常
  • 2.半路入场,干了一段时间,能力还不错,被委以重任

人家现在的情况是两年要跳槽了,能力到底如何,还有待考证,公司招他的目的,就是为了找一个简单的能干事的初级开发就行。

所以你要知道,正常情况下,对你的技术面要求其实要求不会特别的高,主要看你知道些什么东西。

我在网上随便找了一个美团的 1-3 年工作经验的招聘简介:

对于技术上的要求,我一个个的说吧:

  • 计算机基础扎实,具备良好的数据结构、设计模式、数据库、网络基础知识

这个没什么说的吧,不管几年经验,这都是从科班带出来的必备技能。特别是数据结构、数据库、网络基础这三大块。

这三块是你构建计算机知识大厦的两个重要的基石。

最好从科班毕业就从学校里面带出来,如果没有学好,那么你相信我,如果你想在这个行业里面的技术的道路上走的稍微远一点,这几块东西,再难吃,你也得啃下去。

  • 熟练使用常用研发工具,包括但不限于依赖管理打包管理工具Maven、版本控制工具Git等

这玩意其实没啥好说的,研发工具啊,大哥,就算你真的没用过,这东西完全是可以突击的。

假设你去面试,简历上没有写这一条,而你心仪的公司的招聘简介上又写了这个。

花一天时间,入个门,自己去按着官网教程把入门级的 Demo 跑一遍就可以写到简历上了,这个不过分吧?

  • 熟练掌握Java语言:熟悉面向对象、多线程、反射;了解Jvm调优、类加载、Nio/Aio、字节码增强等更佳
  • 熟悉Java技术栈:Spring体系、Servlet系列容器、HttpComponents、Guava等
  • 熟悉MySQL应用开发,了解数据库事务隔离级别、索引远离(这里应该是原理,发现两个错别字)、性能调优;对NoSQL有研究更佳

从这里开始就比较有意思了。

前面写的“熟悉”意思就是这些都是考点,意思就是面试的时候我会问。

后面写的“了解”意思就是附加题,面试时我也会问,答的上来加分,答不上来不扣分。

前面“熟悉”的没就不多说了,多去找点相关的面试八股文看看,见的多了,也就能答的七七八八了。

后面的“Jvm调优、类加载、Nio/Aio、字节码增强”,如果你问两年经验时的我,我肯定是一脸懵逼,只能打马虎说个大概起来,可能还漏洞百出。

因为虽然说是附加题,但是身边的学霸们都会啊。我确实没有扣分,但是他们蹭蹭蹭的加分了啊。

在我看来,这些东西其实考察的就是技术的广度。

我想面试官问你这方面的问题的时候不会把你往死了问,因为他的目的不是难倒你,而是看你的广度到没到位。

包括下面的这两个点:

  • 7.了解常用中间件:包括但不限于消息队列、分库分表组件、定时调度、分布式配置等
  • 8.了解SOA架构,对RPC、序列化、服务治理有相应了解

招聘简介上的定位都是“了解”,就是你可以没有在生产上使用过,仅仅是搭建过 Demo ,知道这是个啥,怎么用。或者在生产上用过,但是目前它对你来说就是个黑盒,对其内部原理还不太明白,是一个知其然的阶段

而同样的要求,在3-5年这个档次的时候,肯定是写的“熟悉”,并且是得真正的应用过,能对其内部原理进行一个简单的研究,知其所以然。

所以你问我,两年开发经验的 Java 应该具备哪些知识?

首先科班出来的那一套应该是得掌握的:数据结构、基础算法、操作系统、计算机网络、数据库、Java基础。

接着就是实际工作中会用到的一些框架,特别是 Spring 家族的东西,你可以不是很了解程序是怎么跑起来的,但是你得知道它们是怎么用起来的。

然后就是能熟练的使用一些常见的开发工具。

再来就是一些中间件、其他的框架、一些知名的开源项目、设计模式,这就是看你能主动去接触多少东西了。

举个简单的例子:

我两年经验的时候连 Kafka、ES 是什么东西都不知道,而同样是两年经验,有的人都已经把这些东西玩转起来了。

别人在工作中同样没有用到这一些技术呀,都是工作之外的时间自己提升起来的。

还有,以我的经验来说,不管是 1-3 年还是 3-5 年,面试的一个重点考察对象除了技术能力之外,还有对于项目的考察。

所以,请多花点时间了解你负责的、你做的项目的业务,面试一般的切入点都是从项目开始。尽量让你的项目可以聊的话题稍微多一点。

另外,看这里

除了工作年限之外,还有个维度是行业领域。

计算机相关岗位是一个很大的范围,在这个范围里面还有各个细分领域。比如移动互联网、电商、金融、广告、教育、游戏等等细分领域。

如果可以的话,即使跳槽,也请在一个细分领域里面,深耕下去,实现业务经验的积累和迁移。

当然了,如果其他领域给的钱很多,你就当我没说,请面向工资编程。

最后,3-5年的人对1-3年的人说一个忠告吧:

别一味的沉溺在技术里面难以自拔,多抬头看路,多去和比你优秀的人接触,多注重一些软技能的提升,多注意自己的生活、身体管理。



推荐👍 :第100篇原创
推荐👍 :老爷子这代码,看跪了!
推荐👍 :当我看技术文章的时候,我在想什么?
推荐👍 :面试官一个线程池问题把我问懵逼了。
推荐👍 :这个Bug的排查之路,真的太有趣了。
我是 why,一个主要写代码,经常写文章,偶尔拍视频的程序猿。
欢迎关注我呀。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存