今天有个前同事联系到我,抱怨现在好的前端程序员很缺,正好前几天五一的时候看到 Twitter 上很多人公开讨论自己的薪资,有一些感触。大部分程序员,尤其是前端,每天都要关注技术进展,几乎没时间关心别的,性格往往也不善言辞,老实巴交,凡事先反思自己的技术水平,所以我打算写这篇文章谈论一下薪水问题,希望对别人有些帮助。
首先简单介绍一下个人情况:本人之前在北京工作五年,技术能力平平,没多少谈论薪水的经验,相比之下薪水一直不高,好在不太在乎薪水,也有时间想这些乱七八糟的问题。现在离开行业也已经近两年,所以这篇文章的内容可能都是纸上谈兵,大家看的时候多留个心眼,不要被我骗了 *_*
在往下看之前,请问自己一个问题:我辛辛苦苦做程序员的目的是什么?如果只是磨练技术水平,做出更完美的东西,物质什么的无所谓,那么就不用往下看了。如果你不止想提高自己的能力,还想随着经验增长不断挣到更多钱,那么下面这句话请跟我重复三遍:
你之所以挣到那么多薪水,不是因为你「值」那么多,而是你能「要」到那么多。
你之所以挣到那么多薪水,不是因为你「值」那么多,而是你能「要」到那么多。
你之所以挣到那么多薪水,不是因为你「值」那么多,而是你能「要」到那么多。
很多程序员特别诚恳,自己的薪水不高首先就怀疑自己的技术能力,告诉自己没有怀才不遇这回事。看到「为什么现在好前端那么少」之类的问题,首先也不想到现在市场变了,前端更值钱了,而是把前端技能树列出来,告诉大家前端要掌握的能力很多,最后说一句我们还不够努力。当然,这么想在某些方面是好事,可以勉励自己不断努力,但让我们面对现实:你的薪水大部分是市场决定的,不是你的能力决定的。
举个极端的例子,假设你是世界上最顶尖的 100 个程序员之一,技术好到爆,但是因为某些原因,世界上只剩下 50 个公司需要程序员,而且他们每个公司都只需要 1 个,最高只能给你 2000 一个月,那么你最多每个月也就能挣 2000 。这个和技术水平无关,就是需求没那么多,你再牛也没办法。
为了避免误会这里要强调一下,我不是鼓励所有人都去钱多的行业,赶紧跳槽,而是说在提高自己技术能力的同时可能需要认清这样一个现实,否则你可能以为只要提高能力就能挣到更多的钱,只会埋头钻研技术,最后发现达不到目的又反过来抱怨。不是世界欺负你,是你的方向有些偏差。
那么怎么样才能挣到更多钱呢?很简单,四个字:
多要点儿。
多要点儿。
多要点儿。
首先讲一个不知道是心理学还是经济学的概念,叫做「锚定」。比如说我们去买手表,有时会看到柜台里有一只手表比其它手表都贵得多,会很奇怪它能不能卖得出去。但事实上它不是用来卖的,而是在你的心里做一个参照,这样你就不会觉得其它手表很贵了。
所以当你和 HR 谈论薪水的时候,首先就要开高价,这样就给他们一个参照价格,就算他们不能承受,回给你的价格也会接近这个参照价格。而如果你一开始就要的比较低,就算 HR 可怜你,也不会比这个参照价格高出多少。担心 HR 也懂心理学识破你的把戏?别怕,「锚定」最妙的地方就在于,就算对方知道这个心理现象,哪怕他是个心理学家,还是会受到影响。
另一个事实是,如果找工作的时候你不敢张口,导致起薪很低,那么别指望每年公司内部的加薪。下次再大幅加薪只有跳槽。以前我非常天真,觉得起薪低没啥,只要努力干,公司肯定不会亏待我的,但在我学习过公司的激励制度之后,猛然发现在一个公司里「加薪」是激励员工的最后选项。加薪对员工激励最大,但是一旦加薪就很难再降回去了,所以加薪一定要非常谨慎。这就是说你想要薪水大幅提高,就只能跳槽。
或许你还会担心这样狮子大开口会不会导致对方非常生气,然后拒绝雇佣,最后导致找不到工作呢?如果你有这样的疑问,请跟我重复三遍下面的话:
HR 不会和我一样幼稚。
HR 不会和我一样幼稚。
HR 不会和我一样幼稚。
程序员一般都不会掩饰自己的性格,有技术防身,见谁黑谁,照样活得不错。但是在很多其它行业是有社交规则的,就算很讨厌你也不会在办公室对你摆一副臭脸,而且当他们想要招你的时候,如果价格不合适会和你继续讨价还价,而不是拍桌子走人。他们可能会在朋友圈骂你癞蛤蟆想吃天鹅肉,但面对面的时候还是会很礼貌。
找工作就是推销自己,这个时候我们就不是程序员,而是一个 businessman ,所以要专业一点。我们要做的就是在找工作的时候暂时收敛一下自己的性格,努力彬彬有礼,开高价的时候也要专业自然,摆出协商的姿态,而不是拽得不行。最新一季纸牌屋里面 Claire 在俄罗斯监狱里面劝说那个理想主义者说:You want change? Then learn how to compromise. 心里有「妥协」两个字才更可能达成交易。
「开高价」和「妥协」在一起使用很奏效。前几天 Twitter 上讨论薪资的一篇文章很值得一看:
http://www.kalzumeus.com/2015/05/01/talking-about-money/ ,作者在里面总结到:
If a buyer pitches me on 2X my desired number I will, naturally, say “That’s an interesting number. If you were offer insert 2.2X here I think we’d have a deal.” No buyer will pitch 2X if they know what X is, though. A younger, less savvy me would interject here “Why ask for more money given that they’ve already offered you enough?” and my answer to that is “Because everyone in the negotiation is a businessman and any number we are mutually happy with is a morally acceptable number. Given this, and keeping all else equal, I prefer ‘more’ to ‘less’ and always, always, always ask for ‘more.’ You should try that — it’s a trivial tactical suggestion which helps address you systematically low-balling yourself, which you’re prone to. You think that asking for ‘more’ will result in ‘less’ being yanked from the table, but you believe this because you’re young, inexperienced, and working from a narrative about desert which is quite disconnected from how rational businessmen actually operate. No counterparty who you actually want to work with will hold good-faith negotiating against you.”)
Always, always, always ask for ‘more.’ 如果你开的价格没有公司能接受,那么为了找到工作你自然会调低期望,这就是市场的力量。我们要相信市场的力量。
还有一个误区是认为薪水和能力是绝对正相关的。再举个极端的例子:全世界只有 50 个程序员,你是最烂的一个,其他人都鄙视你的代码。但现在有 100 个公司,每个公司需要 5 个程序员,你依然可以要到高薪。
程序员群体很重视技艺,这点有时我很喜欢,有时我很反感。可能我程序写得不太好,可能我比较笨,但一个烂程序员也是人啊!我们也有追求高薪和幸福的权利!你们当然可以不给我们高薪和幸福,但不能和 HR 一起嘲笑我们的梦想!公司招人是很理性的,一般不会有 All or nothing 这种想法,当他们的预算不够或者没有吸引力,找不到一个好的程序员时,他们宁愿找一个烂程序员,至少烂程序员也可以干活。而且如果我们能力确实达不到市场要求,自然找不到工作,生活变得艰苦,命运会惩罚我们。有时候看到一些优秀的程序员嘲讽「某些人能力不够还开天价」,我就觉得奇怪,每个人都有开价的权利,不愿意给就拒绝好了,咱们能不能别那么幼稚。
而作为烂程序员,我们要把技艺和薪水分开。技艺不够要谦虚,多向大牛学习,但是薪水是另一回事,坚决不能自卑自暴自弃,还是要尽量多要。((「你以为我穷,低微,不漂亮,我就没有灵魂没有心吗?你想错了! 我和你一样有灵魂,有一颗完整的心!」)——简爱)还有一个经济学理论叫做「更大傻瓜理论」。当你看到一个易拉罐,你知道它是个垃圾,但也知道会有一个富豪花高价买下它,那么你就要买下它,因为会有比你更大的傻瓜接盘。当然,我们只是程序写得烂,比垃圾还是好很多(虽然在大牛那里就是垃圾 T_T),所以如果有人愿意高薪聘请我们有什么奇怪呢?
而且烂程序员能要到高价,说明市场不错,这对整个程序员群体都是好事,那些优秀的程序员就能挣到更多。一个反例就是很多做外包的特别讨厌学生,因为学生要价特别低,扰乱整个市场,如果他们多要一些,大家会更好过。上面那篇文章中还提到,作者在挣到 30K $/year 和 30K $/week 的时候技术能力并没有太大区别,"I just got better at organizing the business to expose me to opportunities to capture the better rate. "
这里需要说明的一点是:如果自觉是一个烂程序员,找到好工作千万不要作贱自己,觉得是公司施舍给你一份工作,从此感恩戴德。当然在哪里都要努力工作,但是记住一点:公司绝对不会施舍给你工作的。公司非常理性,他们招你是觉得你最合适,不招别人是别人能力不如你,或者不愿意来。他们不开除你不是因为可怜你,而是因为你能完成工作,或者你工作能力虽然不太好,但再招聘一个人成本很高,不如将就一下。有些公司主管特别莫名其妙,恨不得觉得是大家的衣食父母,经常有那种高高在上的施恩的姿态。对公司女同事可以有感情,但是对公司就不必了,从小到大我们遇到多少一脸「我们生你养你多不容易」以及「我是为了你好」的莫名其妙的人,不需要再多给自己找一个。啊,感恩,多少恶行假汝之名以行!
很多人可能会觉得如果程序员都要高价,创业公司就招不起人,这样不利于创新和理想主义。首先,没有多少公司想要创新,很多人都是奔着被收购或上市去的,找人一起抢银行当然要先谈分赃。其次,要高价其实可以帮助更好识别那些理想主义的公司,一个听到别人要高价就在微博上骂人的 CEO 肯定是没法创新的。程序员那么老实,现在一心看钱,还不是因为大家都一般黑?真有一个想创新的,肯定立刻被感动了,顾不上钱了。
事实上,越来越多的公司懂得宣传和包装自己,口号喊得比谁都大,让人觉得谈钱很羞耻。这样的公司说着「善待员工」,实际上恨不得把员工体检和 team building 都安排在周末,并且之前和之后都要顺便开项目会议,为什么不让员工周末在家陪家人呢?程序员哪有家人?在家自己打游戏也好啊,要你管。很多人觉得谈钱伤感情,但正如塔勒布在《反脆弱》一书比较了商界和学术界之后说的:「金钱和交易净化了关系;而“认可”和“信用”等概念和抽象的事物则围绕着学者们,导致形成一种没完没了的竞争氛围。」如果你拿到高薪,心情就会很舒畅,很多事情就会变得包容,就算老板抱怨某员工要价太高你也能体谅他创业不易,需要不断宣泄。
我也是看着 Google, Facebook, Amazon 的故事一路过来的,也曾因为看到它们给董事会的信里面义正严词地写「我们更看重长远发展」而激动不已,但是毕业之后被打击得到现在还没太回过神来。如果你也被硅谷文化吸引,那么尽快去硅谷,否则你就要意识到,硅谷的文化和美国其它地方的文化都有很大差异,更别提中国了。如果你正在或打算看硅谷文化的书,别拿那个当标准,向往一下,或者当个遥远的梦就好了。
接下来我想说一下:为什么前端工程师应该拿高薪。
众所周知,中国经济发展速度非常快,而且最近好像要大力发展互联网行业。我性格懒散,而且一直不知道自己要什么,所以不太愿意拼命挣钱,想要按时下班,然后思考人生意义(严肃)。是的,我就是李彦宏曾经发文严重鄙视的那种「小资」。我并不是想找一个「钱多活少」的工作,而是想相对挣少一些,同时没那么多加班,但后来发现几乎不可能,因为在这样的大环境下公司都发展很快,不加班的工作就是没有工作。
公司发展快的结果之一就是产品迭代特别快,很多可能只是实验性质,如果某段时间内用户达不到多少就直接砍掉。这个时候前端工程师完全就是苦力,干的是体力活,每天都要应付很多新需求。这也就罢了,问题是技术理想完全被践踏。想要优化代码?想要应用设计模式?屁啦!这个页面说不定下周就要重做,赶紧上线是正事!别难过,等我们产品成功了,给你招几个小弟好好重构代码!
一段时间以后,尽管项目经验丰富了,但技术水平好像在退步。因为早就被社区灌输了「程序员要不断学习」的观念,心中后怕,周末不去相亲打算学点新知识,结果发现硅谷那帮人又造了一堆框架和类库,而且现在都不说 just works 了,动不动就 most advanced 或 popular ,错过一个都觉得亏,还有一堆人整天在 blog 上写恐吓文章:2xxx 年不得不知的几个趋势,5 most useful tips in web development。心生疲惫之后发现 AngularJS 发布了 2.0, 宣布完全不兼容 1.0 ,他妈的又白学了好多。
所以国内的前端工程师很多都处在只有输出没有输入的处境,长时间重复劳动,没时间应用新技能,没时间学习新知识,就算有时间也一团乱麻,常常担心自己被业界抛弃了,对不起笔记本上贴的 HTML5 贴纸。如果你真的碰到一家对技术精益求精的公司,也可能并不是好事,技术主导可能拖累产品进度,导致商业上的失败。
有些人或许会说现在本身就是「终身学习」的时代,自己学习能力不行不能怪别人。但学习是有分别的,有些学习可以积累,而有些无法积累。不断编程确实可以提高很多方面的经验和能力,比如调试能力、系统架构能力,但有些具体的经验,比如学习 AngularJS 1.0 ,等 2.0 普及之后可能大部分就没用了,而新人完全可以跳过这些经验,他们也更年轻,更有好奇心,更爱加班,把前浪拍死在沙滩上很容易。
我很难同意那种刻薄的论调,即把所有问题都归结到程序员「缺乏危机意识」、「学习能力不够」。一个有多年经验的前端程序员本可以去做架构师,继续发挥作用,但整个行业并不给他喘息的机会,到后来很多人转管理,然后大家又抱怨为什么国内程序员寿命那么短。
鉴于前端程序员那么辛苦并且职业道路坎坷,而且现在创业公司个个都要做网站或 App ,严重缺乏前端程序员,所以大家应该趁这个机会把薪水提高一些,再提高一些,把整个行业的薪水都拉上去,当然啦,是在不耽误研究新技术的情况下。如果有公司许诺有远景或者重视工程师,那么问一下自己:这家公司在这样的环境中远景到底是什么?有没有能力对抗整个环境?嘴上说的和真正在做的一样吗?
这里说句题外话,经常见到高管,CEO 以及其它成功人士在微博上教育别人,他们说的那一套都对,「忠诚」、「长远眼光」之类的,但为什么一个忠诚于公司的人,薪水要比一个跳槽出去再跳回来的人差那么多呢?为什么整个环境那么浮躁,鼓励大家放弃好的品质呢?为什么向上面要市场而向员工要道德呢?我觉得有影响力的人更应该思考这些问题,而不是希望有一群奴隶。
写了这么多,很多人可能觉得我唯利是图,斤斤计较,negative & mean 。no, no, no, 那只是表面现象,拿高薪这件事情意义重大:
当程序员拿到高薪之后,就有更多时间思考技术,也更乐意为开源做贡献或教育业界新人。同时那些给不起钱又没理想的公司会慢慢倒闭,整个行业的资源得到优化配置,更具有创新能力。美国人不再想要把工作外包给中国程序员,而是转向越南或者美国,缓解这些地区的就业问题。所以仅仅通过提高自己的薪水,我们就可以 make the world a better place, 让世界变得更好。(P.S 我们也绝不愿意生活在一个产品经理薪水更高并且比我们更能让世界变得更好的世界,哼。—— 参考
《Silicon Vallay》第二季)