程序员年后离职跳槽指南
作者 | iTamic
本文经授权转自开发者技术前线
最近有一些同事离职了,话说离职这个东西确实会传染,离职也是我们程序生涯的重要一环,工作差不多 5 年,换了三家公司,也呆过不少小作坊,也呆过大厂,感觉大家会容易忽视的几件事。
上个月有个同事毕业三年多,他一直做的 Android 开发,在我看来三年左右做到本科 5 年的成果,已经是很不错的。最近突然离职,让我很意外,他告诉我他要选择区块链行业,去博一把。
因此我不得不今天最用心地聊聊离职和跳槽!
为什么离职?
1. 薪资不到位
由于随着加入司龄的增加,互联网工作的人,薪水就会低于市场,甚至落后一大截,这是很多人跳槽的根本原因。这种一般是工程师比较常见。
2. 干活憋屈了
薪资到位了,但是每天干的活感觉不如毕业生做的,都是体力活,每天重复一样的东西,很多人就会出现反抗情绪,觉得这种活太 Low,不符合自己的“段位”,就会选择离开。初创公司,外包公司的员工一般这种心态多。
3. 加班多
程序员这行业加班是常态,我之前也发表了一篇文章,《我喜欢编程,但讨厌这个行业》的文章,我在文章提到绝大多数人是喜欢编程的,但也很厌烦持久的加班,所以一旦时间累积,就会导致大家跳槽。
4. 技术无法提高
虽然做的东西是比较有难度的,但是每 2 个月换项目,或者换模块,也会导致很多人对做过的东西无法充分吸收,导致了大家其实啥都会,但是啥都不会的错觉,因此这种状况久了就会产生离职的念头。
5. 厌恶领导
很多时候,程序员会出现讨厌上级的心态,上级的无能,上级的偏心,也会使下属产生想法,这种情况也会导致员工离职。
6. 发展受限
工资到位了,技术也能提高,加班也不多,关系处的不错,但还是有些人会离职,这就是这个人职业发展受阻,一般是由于公司架构稳定,项目成熟的情况这种原因很常见,因此这种离职的人群一般分布在资深工程师以上居多。
如果上面有一条存在,可以忍受,2 条以上就需要观望机会,3 条以上那么必须要果断跳坑了。越久对自己职业发展收影响。但是还是看你目前的现状选择合适的公司是最为重要的。
离职前需要注重哪些事?
既然离职和跳槽其中的一个原因是薪水无法符合预期,那么首先要搞清楚的就是收入是由什么决定的。
1. 积累
首先要说的一点就是:积累。积累就是你在这家公司所创造的价值的积累。
你今天所领的薪水,并不是由你现在所创造的价值所决定的,而是包含了以前一段时期内其他同事所创造的价值。举个例子来说,如果你们公司是做软件技术服务的,公司目前排名前三的大客户:客户 A、客户 B、客户 C。
- 客户 A 是 2013 年接下来的,现在每年为公司贡献 900 万。
- 客户 B 是 2014 年接下来的,现在每年为公司贡献 1000 万。
- 客户 C 是 2015 年接下来的,现在每年为公司贡献 750 万。
同事的年薪是差不多是和我一样普通本科的两倍还多。可他也承认,他现在所能创造的价值,和他的能力绝对不可能是我的两倍。可问题是:2013 年、2014 年、2015 年这些年份他都在公司,上面的每一个大客户,都有我的贡献。而你 2012 年才新进公司,你并没有之前的积累。所以,新员工入职后,工资相较老员工会低一些是正常的。
很多新员工总是认为自己的收入低了,吃亏了,实际上,很多情况下,新员工在加入公司的头一年,公司仅能维持平衡,即新员工创造的价值全当工资发给他了。直到第二年,有了上一年的积累之后,公司才有所盈余。而加入半年就离职的员工,对公司来说基本上是亏本的。这也就解释了为什么人员流动特别快的公司活不长,因为人力成本太高。
跳槽的话显然就要放弃先前的积累。比方说,当你跳槽到另一家公司以后,你曾经做过的系统、曾经服务过的客户仍然在为先前的公司创造着利润,可是跟你已经一毛钱关系都没有了(极少数公司有股票,另当别论)。所以跳槽之前要慎重考虑,跳得不好,有可能越跳越差。
既然新员工相对于老员工来说,收入低一些是正常的,那么老员工工资高也是合情合理的。但是有一些公司,我将其归为“无良公司”,它们会在老员工的收入高到一定程度的时候,将老员工砍掉,然后再招募低廉的新人来承担之前老员工的工作,以赚取更高的利润。我觉得这些都是小聪明,最后的结果就是,聪明能干一些的人,在看出公司的这些伎俩之后果断离职;能力一般的员工,也会把你这里当成培训基地,翅膀硬了就飞了,受损的最后还是公司,实在是得不偿失。还不如厚待老员工,也让新进的员工对未来有一个更好的预期。
也有一些人向我抱怨说:“老员工待得久了,干劲都被磨光了,每天都是混日子,还不如新员工,不开他开谁?”。然后我反问他:“激励员工难道不正是你工作的一部分吗?”。这种情况的出现,更多时候,是管理者的责任,而非员工。
最后补充一点:我并不认为老员工工资比新员工高就一定是合理的。当公司对一个新员工开出很高的工资时,其实是出于这样一种期望:他能推动公司进步得更快。而如果他真的这样做到了,公司进步得更快了、收益更高了,可以反哺老员工,从而公司的整体待遇水平都提高了,不是皆大欢喜吗?可能一些老员工并不能明白这些,所以,当招一个新员工工资水平远高于现有的老员工时,为什么要这样做,最好能让老员工知晓。
2. 老板
这个“老板”是宽泛的老板,不一定是公司最大的老板。有的时候,公司比较大,你的职位又比较低,大老板连有没有你这个人都不知道,此时的老板就是你的上司。很多时候,你的收入与他也有着很大的关系。
对于我来说,我的原则是,如果我是老板,在我的能力范围内,我会为我下属争取更好的待遇。看起来这样做很蠢,花 6000 块就能雇到一个人,为什么要花 8000 块?我认为,我期望能和我的员工形成这样一种互动:我尽我的能力为你争取好的待遇,你也尽你的努力做好工作。
我不能要求员工“你先把工作做好,我自然会给你好的待遇”。总是要有人先迈出一步,总是要有一方先信任另一方,所以在你什么还没有做的时候,我就先信任你,并且给你尽可能好的待遇,那么我该做的事情都做了,我问心无愧,剩下的,就看你的表现了。
3. 门槛
除了积累和上司两个决定因素以外,第三个决定因素就是你从事工作的门槛。为什么街道环卫工人的收入很低?为什么坐在前台收发快递的文员收入很低?因为这些工作的门槛很低,门槛低就意味着你不做有的是人能做,你不做有大批的“后备队伍”在等着做。由于庞大的后备队伍的竞争,你就无法提高自己的要价。而提升自己所从事工作的门槛,实际上就缩减了竞争者的规模。
程序开发也是一样。如果你想收入高,你就做一些别人做不了,又有市场的。机器学习是高的一种,.NET 在程序开发中就属于门槛比较低的一类。
个中原因我想大家都懂的,就不在这里赘述了。做.NET 不需要你科班出身,或许一点兴趣再加上一点时间,或许一个类似某马的培训,都可以让你开始从事 .NET 开发了。
你可以不懂指针、不懂数据结构、不懂算法、不懂汇编、不懂很多东西,但照样可以做出一个.NET 程序来。而这些人往往又是对薪资的要求没那么高的,这样无形中就拉低了.NET 程序员的“身价”。.
NET 的易学易会,很大程度上是由于它的封装性比较好。底层的东西都屏蔽掉了,你只要知道学习一下命名空间,然后寻找相关的 API 去调用就好了。
记得实习的一家公司曾经开发过一个基于 C 语言的手持设备程序,没有任何的类库支持,连排序、链表这样.NET 中的基本功能,都要自己来实现,更别提内存管理和程序逻辑了,和 .NET 比起来,门槛就相对高一些了。
所以,如果想收入高一些,那么就去做更高难度的技术工作,这里随便想了几个例子:
- 百度、谷歌的搜索引擎算法。
- 微软、谷歌、苹果的操作系统。
- 网络游戏,例如《阴阳师》的游戏引擎。
- 大型企业的 ERP,比方说 SAP。
- 3D 图形图像。AI 和 VR。
所以,从这个角度来看,这位同事的辞职是明智的,他很年轻,有的是机会重新选择自己的道路,所以我也祝愿他能有更好的发展。
4. 平台
有个段子说“35 岁要么财富自由,要么跳楼”,话错理不粗。很多程序员觉得 35 岁就瓶颈了,35 岁写程序就到头了,实际上,这只是你的平台比较小罢了。
就拿我自己的公司来说,平台算大,只要是踏踏实实工作过 5 年的程序员,基本上就能够胜任公司 90%的技术工作了,剩下的 10%,请教一下其他同事,进行一下技术交流,也完全能够解决。
这样就存在一个问题:随着你年龄的增长,你的生活压力越来越大,要求越来越高,可是公司只要 5 年经验的程序员就够用了。
假设市场上 5 年经验的程序员的平均要求是 15K,凭什么要给你 30K?你的优势在哪里?如果你没有突破,就会有“35 岁写程序就到头了”的感觉。
而如果平台更大一些情况就会更一样,比方说,你去了微软和 Google ,可能 5 年的经验不过刚刚入门而已。
IBM 有一个工程院,其中有 5 位院士(IBM Fellow)获得过诺贝尔奖,很多人钻研技术都超过 20 年或者更久。如果你对技术感兴趣,并执着去钻研的话,你可以不断地去挑战和攀登。
当然,你可能没那么好的运气和实力进入 IBM,那么其他一些中型的平台也是不错的,比方说阿里巴巴、百度、腾讯等等。
在这里,至少你有足够的理由和需要再去进行深入学习。因为在这些地方,5 年的经验是远远不够的,还需要进一步地学习和努力。
如果处在没有那么大的平台,此时的选择大概有这么几种:
- 你可以凭借你在公司的积累,过比较安逸的日子。如果比较幸运,押对了宝,公司发展得比较好,收入一样会变得非常可观;如果比较不幸,公司经营的状况不好,那就要承担比较大的风险了。说得难听一点,公司倒闭了你去哪里?你过去的积累已经一文不值,而你的年龄已经 35,水平却相当于只有 5 年经验。你的竞争力在哪里?
- 你可以凭自己的努力将现在所在的平台做大,换言之,把自己的小公司做大。这当然是比较积极的做法,也是我一直努力的方向。现在你看到的大公司,不也是从小公司一步一步做起的吗?
不过这里还有几个问题:
- 有的时候,你的力量在公司中的占比没那么大,你再怎么努力推进,速度也还是有限;
- 你缺乏慧眼,选中的公司本身就缺乏长大的资质。我们往往只看到成功了的公司,却忽视了更多在竞争中倒下的公司。
- 主动选择更大的平台,也就是跳槽了。但是跳槽也是有风险的,尤其是过了 30 岁的程序员。你在这家公司的收入高,是因为有之前的积累,换一家就没有积累了,等于从新人开始,而大多数的公司,5 年经验的程序员就够用了。如果跳得不好,收入还可能越跳越低,如果还有老婆、孩子、房贷,那将面临更大的压力。所以当你想要从一个低的平台向更高的平台跳跃的时候,平时就要做足功夫,认真积累自己的实力。
对于我来说,我缺乏大型项目的管理经验,但是没关系,每次遇到管理方面的问题我都认真思考仔细总结没什么问题吧?有些人总是抱怨没有机会,运气不好,我想机会总是有的,但只属于有准备的人。
5. 行业和趋势
我想说的最后一点就是行业和趋势。有时候你觉得已经万事俱备了,可是你所处的这个行业本身就属于极低利润率的,你再怎么努力也很难有很高的收入。很多情况下,可能公司也想提高你的待遇,但是由于缺乏利润的支撑,公司也是有心无力。
所以,在选择公司,尤其是小公司的时候,要重点考察一下公司所处的行业如何?是不是前景比较好、利润比较高的行业?如果是大公司的话,这方面的问题就会少一些,因为如果方向有问题,它就无法做成大公司。
比如我目前在做客户端,但是客户端真的没有 2013、2014 年那么火的,只是大家不愿承认罢了。
行业是有周期性的,可能在一段时期内这个行业好,下一段时期这个行业就不行了。最典型的一个例子就是 Java,2012、2013 年 Java 待遇不高。几年以后,Java 待遇碾压客户端了。
选择行业也不是选择暴利行业就一定好,比方说房地产。资本都是逐利的,当一个行业属于暴利,同时所有人都知道它是暴利的时候,危机就来了。这个危机就是会有大量的社会资源、人力物力投入到这个行业中企图分一杯羹。而全局上又没有一个统一的把控,这个行业究竟需要多少公司才是合适的?最后的结果就是过剩。就好像股票在崩盘时,也许跌 200 点是比较合理也比较正常的位置,但是由于人们的恐慌,它就跌了 500 点了。
由于区块链算是新的行业,有很多可想象空间,这位同事离职我不知道结局会怎样,但是按行业和趋势来说也是不错的选择。
6. 身体
身体健康也是我们说的一点,如果你身体不是很好,那么建议你选择舒适的公司,如果选择高薪高强度的环境,最后塞翁失马,现在你用健康赚钱,以后你就会用金钱换健康。身体是你做一切的前提。
7. 平庸
平庸这个词在国外比较流行,意思是告诫大家,程序员不要给自己贴标签,不要给自己设限,也不要被拖延症给拖垮。甚至不要迷信一些阿猫阿狗!眼光要放远。
那些人:
- 大学时告诉我不要谈恋爱的人,现在娃好几个;
- 当年劝我不要买房,说老实提高技术的,现在房子好几套;
- 以前劝我离职的同事,2 年后还在原单位工作,熬走了所有老人,成功上位;
- 当年告诉我学历不重要的同学,现在已经读博了。
一句:fxxk 没毛病! 庆幸的是我是一个比较有思想的开发,很多东西我不会以别人的思想看眼光去判定。如果你遇到这样的人,那么你需要好好审视和他的关系了,贵人是让你成长的! 而贱人是让你倒退的!
以上我说了几点你为何要离职? 离职和跳槽要注重什么? 甚至一个人的收益不止是现金收入,包括了工资、积累、平台、行业、身体,还有你的不平庸。
题外话,刚需 ,有能力的话,买房越早越好!