前言
跳槽是每个程序员都会经历的,作为一个跳槽过好几次的人,对于跳槽这件事我还是有一定的发言权的,总结就一个字:真鸡儿累。
如果新的岗位发展前景不错,也比较适合自己,那就还好。
万一入职后发现又是一个坑,那就凉凉了。干的不舒服,心里又萌生了跳槽的想法,又害怕跳槽过于频繁影响简历,然后萌生简历造假的想法,然后进入无解的恶性循环,真的太难了。
所以在跳槽的时候,一定要慎重的选择。
从程序员的角度来说,我大致将国内的互联网软件公司分成了以下几类。
大厂
国内最牛逼的那几个,如果不知道就可以转行了:阿里、腾讯、百度、美团、字节、拼多多、京东、滴滴、快手、网易。
中厂
市值/估值在50亿美元以上的互联网公司:B站、爱奇艺、猿辅导、58同城、唯品会、携程、汽车之家、瓜子二手车、去哪儿、新浪、微博、虎牙、斗鱼等。
部分比较有名的非纯互联网公司:平安、小米、顺丰、贝壳、好未来、作业帮等。
独角兽
有一定名气、市值/估值在5亿美元以上的互联网公司:旷视科技、小红书、喜马拉雅、叮咚买菜、得物、每日优鲜、叮咚买菜、水滴筹、酷家乐、美菜网、知乎、自如、哈罗出行、货拉拉、BOSS直聘等。
小厂
剩下的不知名公司,或者传统行业公司。
外包
比较出名的有:文思海辉、中软、东软、软通动力、博彦等。
这边的大公司一般指上面分类中的大厂和中厂。
优点:
1. 更大的平台、更丰富的资源:大公司的工作流程、方法论、内部技术博客等,非常有助于我们提升自己的知识、视野和格局。
2. 更牛逼的同事:物以类聚,人以群分,和优秀的人在一起,你也会变优秀。
3. 更稳定:小公司可能说没就没,并且补偿可能也不到位,大公司裁员概率一般比较小,并且一般会比较正规,n + 1 补偿至少是有的。
4. 不错的薪酬福利体系。
5. 镀金效果,现在程序员竞争越来越激烈,很多公司的简历筛选其实就是看你过往的公司。
缺点:
1. 人员较多,竞争较大,晋升较慢。
2. 工具和框架较完善,很多人都是使用已有的框架进行简单的业务开发,缺乏造“轮子”的机会。
3. 决策周期较长,撕逼情况较多,推动事情较慢。
这边的小公司一般指上面分类中独角兽,而不是小厂,小厂没有任何竞争力,并没有考虑的价值。
优点:
1. 有机会参与项目从0到1的搭建,对项目完整生命流程会更熟悉。
2. 负责的业务一般会比较大,有助于锻炼自己的能力。
3. 人员较少,晋升机会较多,晋升较快。
4. 有机会实现财富自由。早期员工一般会分到不少期权,如果公司发展的好,会是一笔很大的财富,90后的字节员工资产过亿相信大家都知道。
缺点:
1. 风险大,创业公司大部分都是九死一生,无数个里面就成了那么几个。
2. 比较混乱,没有成熟规范的成长体系。
3. 加班较多,头发一去不复返。
4. 薪酬福利较差,大部分薪酬无法匹配大公司。而且可能会通过期权来压缩现金,但是如果项目凉了,期权其实就是废纸。
在每个公司中,都会分核心业务、普通业务,在大厂里,通常还有会有创新业务、基础研发。
核心业务
就每个公司在市面上最广为人知的那种,阿里的淘宝,腾讯的微信,美团的外卖,字节的抖音等等。
优点:通常会有比较多的复杂场景、大数据量、高并发场景,对于个人的成长帮助很大,可以实现在工作中实现成长,也是大部分程序员追求的。在绩效上相较普通业务会好一点。
缺点:每个公司的核心业务一般就一小部分人能参与,所以整体面试难度会比较大,并且加班可能会多一点。
普通业务
除核心业务之外的大部分业务,大多数toB系统,内部OA系统等等。
优点:面试难度相比核心业务较容易,加班较少。
缺点:大部分程序员目前正在做的,工作内容大部分是简单的CRUD,做的功能没几个人使用,线上有BUG一个月也没人发现,比较难在工作中实现个人成长。
创新业务
通常是大厂快速布局新业务,例如最近很火的社区团购、买菜等。
优点:这种业务有一个特点,一般能参与系统从0到1的搭建,并且由于快速发展的因素,在招聘上会适当降低要求,是进入大厂的一个绝佳机会。
缺点:由于业务处于快速奔跑阶段,加班可能会多一点,并且如果没做成,部门可能会有被裁撤的风险,但是大厂一般不会直接裁人,可能会分配到其他部门去。
基础研发
很多大厂和部分中厂/独角兽会有基础研发部门,主要是做一些通用工具、框架和中间件的开发,大部分是基于开源框架进行二次开发。
优点:可以涉及到很多底层原理,有利于提升自己的技术能力,出去面试需要准备的会相对少一点,是很多程序员理想中的开发岗位,并且后续转业务开发也比较容易。
缺点:对计算机底层知识的要求会高一点,由于很多轮子都比较成熟了,所以有当“客服”的风险,而且在晋升上会比业务开发更难一点。
有了上面的公司和业务分类后,从“个人发展”角度考虑,跳槽时我的选择优先级排序如下:
第一档:大厂(核心业务、基础研发)
第二档:大厂(创新业务、普通业务)、中厂(核心业务、基础研发)
第三档:中厂(创新业务、普通业务)、独角兽
第四档:小厂
第五档:外包
上面给“公司+业务”定了个跳槽选择优先级,但是跳槽时还需要考虑很多其他的因素,个人总结在跳槽选择时需要考虑的因素如下:
1、直属上级:直属上级是跳槽时的第一优先考虑,因为这个真的太重要了,直属上级基本决定了你在这个公司的发展好与坏,如果和直属上级没相处好,肯定没好日子过。所以如果你发现你的直属上级性格不好,或者对你的态度不是很好,不是很喜欢你等等,那建议还是不要选择。
如何判断自己的直属上级:1)直接问下hr或者面试官;2)通过面试轮次推测:如果技术面总共2面:一般直属上级是1面面试官,如果总共超过3面,那一般是2面面试官。
2、发展前景:业务是否核心、是否能提供给自己足够的成长空间。通常来说,按上面的五档划分,档位越靠前发展前景越好,选择时优先选档位前面的,一般不会错。
3、薪酬福利:薪水高低、每年涨薪情况、五险一金比例、试用期是否打折、试用期时间长度等等。薪酬福利是判断一个公司最直接、最有效的方法,能提供不错的薪酬福利的公司大概率不会太坑。
4、面试情况:面试是一个互相了解的过程,通过面试我们会了解面试官的水平,面试官一定程度上代表着公司的水平,如果面试官很水,或者面试非常简单,那大概率是个坑。
5、语言生态:规模较大的厂一般会存在多种语言,在这种情况下优先选择自己所在语言生态较好的,例如对于 Java 而言,优先选:阿里、美团、京东、拼多多、快手等,对于 c、c++ 而言,优先选:腾讯、百度等。
6、公司知名度:知名度一定程度上代表了公司的实力,以独角兽为例,我上面列的这些就是知名度相对较高的。
7、公司评价:员工评价可以看脉脉、看准网等,面试者评价可以看拉勾、BOSS直聘等,也可以在百度上搜一些舆论评价,着重关注:加班情况、裁员情况、有没有一些比较恶心的规定等等。
8、近期融资情况:如果公司有持续在获得一些融资,说明是被市场看好的,如果投资方有互联网大厂或知名投资机构,那就更好了,说不定有机会曲线进大厂。
9、所在行业:互联网优于传统行业。
10、大厂光环:对于没有大厂经验的同学来说,第二档中大厂可能会更优先,大厂光环对于自己未来的发展、跳槽都是很有帮助的。
11、技术成长:对于应届生或者刚毕业的同学,基础研发可能会比业务开发更好,基础研发可以让刚毕业的同学快速掌握很多底层知识,这些知识无论是在面试时还是以后的成长都是非常有用的。
12、职级晋升:对于已经工作了一定年限,追求职级上的晋升和成长的同学来说,业务开发可能会比基础研发更好点,业务开发在晋升这些会相对快一点。
上面介绍了核心业务是大多数人追求的,那么如何区分核心业务了?我自己总结了以下几条判断规则:
1)最简单的方法是,看看业务对应的产品是否知名,周围用的人是否多,例如:阿里的淘宝、美团的外卖、腾讯的微信、字节的抖音等,这些产品都是家喻户晓的,所相关的业务肯定是核心业务。
2)通过职位描述(JD)中的关键词来判断。核心业务的通用关键词:C端、高并发、业务量级大、订单、交易、秒杀、中台、平台等。非核心业务的通用关键词:B端、内部系统、CRM、运营平台等。
3)可以在一些职场论坛上询问,例如脉脉的职言频道,比较出名的公司基本都有人问过。
4)也可以在面试环节询问面试官,可以问下该岗位当前主要负责的产品是什么,主要做的事是什么,主要的挑战是什么,然后大概就知道是不是核心业务了。
如果以上都没能确认是核心业务,那大概率是普通业务。
这个问题其实很简单,面试的时候可以直接问面试公司目前使用的技术栈是什么。
对于这个问题,我个人分析了如下几条规则:
1)要正确定义前景好,比如从外包A跳到一个相对好的外包B,那我觉得这还称不上前景好。我总结了几条比较通用的识别规则:a)大部分情况,按我上面的分档来说,两个公司有1个档位的差别;b)少数情况,在同档内,但是有明显的差距,例如从一个使用非常老的技术的传统公司,跳到一个使用主流技术的互联网小厂。
2)“钱多”代表着眼前利益,“前景好”代表着长远利益,如果当前不是特别需要钱的话,优先选择发展前景好的,好的平台能给人带来更快的成长,有了实力和本事,钱自然就有了。
3)年轻人优先选前景好的,对于年轻人来说,成长是最重要的。
4)如果钱多的太多,例如:总包在50W以内高出15W,在100W以内高出30W,那我觉得可以选“钱多”的,一般能给出这么高的钱,公司一般也不会差。
跳槽时可能存在需要转语言的情况,我个人不是很推荐转语言,但是如果是以下情况的话,可以考虑转。
1)实在找不到工作了,不转就要饿死,那没办法,小命要紧。
2)从小众语言转向主流语言,例如从某不知名语言转向世界上最好的编程语言——java。
3)校招生,转向的语言是当前国内主流语言,例如:java、c、c++、python、go。
之前向同学们收集了一些问题,有部分问题的核心并不是不是“如何选择公司”,但是也是跟跳槽相关,这边简单说下自己的理解和建议。
首先要区分公司使用的框架和主流技术是完全不同,还是二次封装,如果是二次封装,那其实影响不大,用法和底层原理应该还是一样的。
如果是完全不同,要确认这个技术是属于比较新的,还是那种上古时代的遗留技术。如果是上古时代的技术,应该发生在传统公司比较多,这种情况如果个人追求继续成长的话,建议换个使用主流技术的互联网公司。
这个问题说起来没那么难,只要做好以下4件事:
1、好好复习准备面试,主要有几块内容:1)Java 常见的核心技术知识,这块是大头,需要花较长的时间准备;2)准备一个牛逼的项目,要有自己的亮点。一个复杂的需求设计、一个巧妙的设计、一次性能优化、一次线上问题解决,都可能是亮点,多思考自己做过的事;3)算法笔试题,主要是:《LeetCode 热题 HOT 100》和《剑指 Offer》系列,如果是面普通的互联网小公司,这块可以相对准备的少一点。
2、写一份干净简洁的简历,不要超过2页,突出自己的亮点:看过源码、掌握框架的核心原理、解决过复杂的问题、优化过系统性能、做过系统稳定性保障等等。
3、疯狂投简历,在BOSS和拉勾上投,所有符合自己要求的岗位都投,增加面试机会。
4、平静的面对每一次面试,遇到自己深入研究过的内容,抓住机会表现。
当然说起来容易,做起来还是挺难的,但是只要肯花时间,我相信问题真的不大。
这个其实就是上个问题的进阶版了,如何准备可以参考:如何准备好一场大厂面试。
普通传统公司直接进大厂,说实在的比较难,需要点运气,如果你当前的公司是第四档和第五档,很有可能大厂简历关就被筛掉了,建议还是先找个独角兽或中厂当跳板。
大厂筛选简历的很多重要因素其实是跟候选人的已有背景相关的,是无法通过优化简历来提升的,通过优化简历能提升的部分其实比较有限,我自己能想到的有:
1)简历尽量干净简洁,不要超过2页。
2)专业技能中体现出自己的亮点,看过哪些源码,掌握了哪些框架/中间件原理。
3)项目中体现出自己的亮点,解决过复杂的问题、优化过系统性能、做过系统稳定性保障等。
详细可以参考《如何准备好一场大厂面试》中的“大厂简历筛选标准”。
除了优化简历外,在投简历其实也有一些技巧可以增加自己获得大厂面试的机会:
1)大厂通常有很多部门,每个部门的hc数和招人标准都不一样,即便是同个部门,如果hr不同,标准肯定也不一样,重复投简历可以增大我们拿到面试机会的概率。
2)大厂经常会布局新业务,新业务需要快速启动入场,hc通常会有很多,因此招人的标准会稍微降低,这个时候是个绝佳的机会。
跳槽真的是一件挺苦逼的事情,在准备面试的一两个月里,基本所有时间都要花在准备上。
公交车上、地铁上、午休、晚上下班后、周末、带薪拉💩时,能利用的时间都要利用起来。可能有同学说周末要陪女朋友,女朋友?不存在的。
随着这几年转行程序员的人越来越多,内卷越来越严重,各个公司的要求也越来越高,面个5k的初级岗位也要各种算法、JVM原理,已经快学不动了。
很经常上午看的知识,下午就忘了。
好不容易准备的差不多了,兴高采烈的投简历,结果投了一堆都石沉大海。
终于有几家小公司给了面试机会,结果一紧张,啥都忘了,真的觉得自己是头猪。
最后祝福大家都能找到自己满意的工作,早日脱离苦海。