程序员修炼之路(十四)IT外企那点儿事–也说跳槽

  • Post author:
  • Post category:其他



最近一个月一直在忙项目,几乎没什么时间写博客,今天中午才有时间看看csdn,在论坛上看到一篇很好的文章,分享给大家。也给自己留作备用。



原文地址:http://www.cnblogs.com/forfuture1978/archive/2012/11/26/2788610.html



跳槽的学问不在一个跳字,而在于长期的职业生涯规划。跳槽可以帮助职业生涯更上一层楼,而跳槽之所以能够成功,也是因为以往有了较好的职业生涯规划。





什么决定了程序员的价格



所谓的职业就是企业和员工之间的价值交换。企业付出薪水,福利来雇用员工,以期通过员工的劳动来实现企业的目标。员工付出劳动,技术,以期通过在企业中的劳动来实现自己的目标。当双方都觉得收获大于付出的时候,交换就会产生,于是供需双方达成合作,价格也就产生了。


当然这里的价格不仅仅是薪水,而是多方面组成,参考马斯诺需求,现分类如下:



  • 生理需求:薪水够不够吃饭,是不是老是加班,长期出差,是不是需要大量应酬喝酒抽烟,是不是腰椎颈椎有问题,是不是压力太大影响心理健康。

  • 安全需求:工作是不是稳定,是不是会随时裁员,朝不保夕,公司可能不可能被兼并或者面临倒闭。

  • 社交需求:团队氛围是不是很好,是互相信任,还是勾心斗角,工作环境活泼还是压抑。

  • 尊重需求:公司或者上司的领导风格是否过于强硬,是否尊重员工的劳动成果,员工的工作是否有技术含量,在业内得到认可,员工所在的公司是否得到社会的尊重。

  • 自我实现需求:是否能够学到新的技术,是否能够职位上难以提升,是否工作过于清闲,职位被架空。



那么程序员到底价格几何?由什么来决定的呢?


在工作或者面试中,我们常常看到有以下两方面的误区:


·


企业方面:在给企业提出多少薪水的时候,想想你给企业能够带来多少价值。凭什么你一个大学毕业生,刚入职场,就要求给你1万的收入?你想想你一个月能够给企业赚1万元么?我们还要花时间培养你。你先来我们这里,给你一个月2000,等你的能力上去了,相信薪水也会跟着上去的。这是我们经常听到一些老板的理论,每当这个时候,被问到的求职者就会苦笑不得,我也不知道我能不能给企业每个月赚1万,但是我的确得到了另一个公司的1万的offer,你给不了,我就要去他们那里了。老板的这种理论是典型的使用价值决定价格的理论,虽然这些老板对求职者是这个样子的,转过脸来对消费者就不是这个理论了,变成了供需理论,同样一个房子,原来5000一平米,现在30000一平米,房子给我带来的使用价值值得我花这么多钱么?老板会说没办法,需求太旺盛了。其实同样对于程序员也是这个样子的,是供需而非使用价值决定了我们的价格,我们只要保证在市场中像我们这样整体素质的人需求大于供给就可以了,举一个极端的例子,如果公司想聘用一个清华大学毕业,学生会主席,英文流利,ACM程序设计大赛冠军,就是他写出的软件年年赔钱(当然赔钱的原因很少是因为程序员的问题),你也必须要付出相应的价格才能聘用。


·


员工方面:我们程序员千辛万苦,加班加点做出的软件,老板卖了1000万,可是每个月还是给我们2000一个月,连加薪都不肯。就像上面讲到的,软件赔钱的原因很少是由于程序员,其实软件赚钱的关键点也多不在程序员。为什么这么说你不是关键点呢?其实还是一个供需的概念。假设你的薪资水平是2000一个月,你们100个人一起完成了这个项目,和你同样水平的程序员在市场上有10万人,可以组成和你们一样的团队1000个,如果有机会的话,每个团队都想赚这1000万,但是却只有你们团队接到了这个项目,这里面可能有以下的因素:一是别的团队不知道,你的老板说不定跟了这个客户n年才知道客户需要这个软件,这叫信息;二是知道了,却拿不下来,招标人说不定是你们公司副总的小舅子,这叫资源;三是知道了,也有可能拿下来,但是前期投入需要500万,做完了才能赚1000万,可是你们这个团队所有能凑加起来才100万,挣不到钱公司就得垮,这叫资本;也可能是销售卖的好,也可能是市场广告做的好,客户相信你们的品牌等等等等,正是这些因素而非你的技术,让你们团队从1000个相同类型的团队中脱颖而出,所以你不是关键点。当然,如果你掌握的是很牛的技术,整个市场上一共100个人会,而想使用这个技术的公司就不止100个,所以是因为你的技术使你的公司脱颖而出,你理所当然的成为关键点,那1000万中你得一大部分也不为过。


所以,程序员的价格是由供需关系决定的,有一个概念叫做机会成本,也即公司换掉你再招一个需要多少钱,那么你大概就是这个价格。就像第一个误区中的公司,你如果想招这样的牛人,无论你的公司是否盈利,就必须要给这么多钱,你嫌他要的高,把他赶走,再招一个同样水平的,还是需要这么多钱,除非你降低要求,招个不那么牛的。再如第二个误区中的员工,如果你所从事的技术很多人都会,甚至培训一下就可以速成,那么如果你因为觉得这样不公平就不想好好干,老板可以辞掉你后,同样花2000到3000再招一个,并不影响其项目的进行。


程序员如何涨价


当然市场上价格不是固定不变的,而是不断变化的。


这种变化有客观方面的原因:有的时候因为需求的增加带来程序员价格的上涨。一些新的产品,新的平台,新的理念,会造成新的技术方向,当新的技术方向刚刚兴起的时候,需求远远大于供给,从而造成在一段时间内从事新的技术方向的程序员薪资高企,引得众多程序员趋之若鹜,然而当进入这个新的技术方向的程序员大大增加后,薪资就会慢慢回归。另外就是整个社会的通货膨胀,新发的货币虽然最先流入基建工程,如铁道,公路,或者房地产,金融,使得这些行业赚的彭满钵满,上游产业吃肉,IT业也能喝点汤,流动资金增多,很多创业企业就能够得到较多的天使投资或者风投,成熟企业也能够借机扩张,从而造成大量的程序员岗位缺口,引得很多人跳过去,这些人的跳槽又造成了原来企业的岗位缺口,从而最终出现大家都跳一跳,薪水也都跟着涨一轮。


在主观方面,作为程序员,我们自己更应该做的是,减少相同水平的供给量,也即提高自己的不可替代性。有人可能会说了,不可替代容易啊,人们不能两次踏入同一条河流,世上每个人都是不一样的,每个人由于性格特点,个人兴趣,学习经历,工作经历不同,会形成不同方面的能力,虽然每个方面的能力不是最好的,但是各方面综合起来,就会存在一定的不可替代性。比如一个人英语好,爱炒股,本科学的会计,研究生读的是计算机,也许这个人做不了最好的翻译,不能成为最好的证券分析师,不能做最好的审计员,不能成为最牛的软件工程师,但是如果说要找一个四门全会的人,这个人就有很好的不可替代性。这种说法有一定的合理性,不过还是必须要指出的是,这里的不可替代性,是供需关系下的,不但要强调供给(我具有某些能力),还要看这些能力有没有需求,以及这些能力有没有需求结合点(同时需要这些能力)。显然如果一个公司不需要某项能力,就不会为这项能力付出额外的薪水。比如这个人找了一家做web开发的国内公司,公司就仅仅会付给一个软件工程师的钱,如果这个人碰巧找了一家做财务证券软件的外企,则公司自然会为外语能力,证券知识,会计知识付出额外的薪水。这不但告诉我们,在找工作的时候,应该尽量去寻找你的各项能力有需求结合点的公司,也同时告诉我们,自己的职业生涯需要好好的规划,使得自己的多项能力更容易找到需求结合点,而不是东一榔头,西一棒子。设想如果你做了三年C++,三年Java,三年C#,结果样样通样样松,哪一方面也要不上好的价格,和做了9年C++的人就不能比了。


那么程序员应该如何规划自己的职业生涯呢?当然谁都不可能一毕业就知道自己想做什么,即便有想法,也可能能力不及,暂时不能实现,即便能够实现,也可能做着做着,发现最初的想法不符合。但是必须指出的是,一个人,无论多么不成熟,无论前途多么迷茫,每个阶段,都应该有一个目标,随着自己的路慢慢的走,经验不断的积累,前面的路能够看的清楚一些,可以根据自己的经验,性格特点,做事风格,已有优势,目标可以进行一定的调整(不必固执于原来的想法,请参考老罗语录Happy Accident),每次调整,可能都会面临选择,没办法,只有像李开复说的那样follow your heart,追随内心,人都有一个特点,追随内心的选择比较不会后悔(至于对不对,人生没走完,谁也不知道)。比如面临A,B两个选择,内心想选A,可是家人,朋友都觉得B好,如果选择了A,A选择顺利,则会庆幸自己的选择,如果A选择不顺,也会想,就算选B也可能不顺,相反如果违心选了B,如果B顺利,会想如果选A说不定更好,如果B不顺,则抱怨家人朋友让自己掉坑里了。(也提醒大家在亲友人生重大问题上,必须让其自己选择)


前面说的比较抽象,下面具体说说。在这里,我把程序员的能力分为以下几个维度:技术深度,架构广度,业务知识,管理水平。


当一个程序员从学校里面出来,所掌握的基本只有计算机基础知识以及程序设计语言,这个时候,会面临第一个选择,就是语言方向问题,java/C++/C/C#/PHP/Python/Perl等,有的是主动选择的,非这个我不做,大多数还是被动选择的,可能在学校学习的是C++,擅长的是C++,面试的也是C++,但是分到team后,发现项目是Java的。因为刚毕业,程序员像一张白纸,公司不怎么挑面试者的语言,觉得只要基础好,上手都很快。如果你有很强烈的语言倾向,则在前三年务必坚持使用这门语言进行开发,如果这三年使用了其他语言,再去面试的时候,公司就不再会相信你在大学的时候擅长某门语言这个故事了,在想转回去难上加难。如果没有强烈的语言倾向,倒也无所谓,每门语言都有自己的优势,也都能出牛人。


在最初的三年,根据接触的项目不同,你已经开始接触某个技术分支,比如linux应用程序开发,linux内核开发,windows应用程序开发,windows driver开发,Java SE,Java EE等。在这三年,你可以不怎么稳定,换项目甚至不断跳槽,职业生涯初期的频繁跳槽还是比较容易得到理解的,但是不是盲目的跳,你要做的一件事情就是确定好自己未来的技术分支,并开始在这个方向上深入研究,形成自己的第一维度的能力——技术深度。根据不同的人基础不同,确定技术方向的快慢,深入研究的努力程度不同,在职业生涯的第三到第六年,技术深度一般会达到一定的程度,大多数人都会成为高级工程师,在这个阶段的后期,一般会再一次面临选择,这是职业生涯中关键的一次选择,将影响职业生涯的第六年到第十年。有的人会选择更细的技术分支进行进一步更深入研究,继续扩大自己在技术深度这一维度的优势,此类人职业规划简单直接,就是成为某项技术的大牛,不希望找过多的需求结合点,就像郭靖一样,就是降龙十八掌一掌一掌练下去,就靠一技之长行走江湖,跳槽也是容易,只要是需要这方面技术的就可以,其他的我不想做,对于此类程序员,我的建议还是选择一些有技术含量,稳定不易淘汰,不是一时半会儿能学会的方向,比如linux存储系统的开发,数据挖掘,图像处理等。有的人不希望进一步扩大技术深度这一维,而是希望整个系统从前端到后端,从底层到上层都能够有一定程度的了解,也即开始扩展架构广度这一维度,此类人对每一项技术都会了解到一定的深度,在各项技术大牛的帮助下,能够搭建起整个系统,他们的职业规划就是成为架构师,由于各个模块的技术都有可能更新,所以架构师需要不断的学习新的技术,不至于架构过老而遭到淘汰。有的人做的软件是面向某个行业的,比如金融,证券,财务,航运,电力等,他们出来技术深度形成一定的优势外,在三到六年这段时间里,也开始慢慢了解这些行业,于是扩展了另外一维——业务知识,他们能够迅速理解这些行业的业务需求,并转换成为软件的需求,他们的职业规划就是需求分析师,他们需要更系统的学习业务方面的专业知识,以期能准确把握需求。有的人在成为技术主力后,由于有一定的沟通和组织能力,开始带新人,以及领导一些人完成任务,于是扩展了另外一维——管理水平,他们需要学习项目管理,组织行为学,绩效管理等方面的知识,职业规划是成为技术经理,我的建议是有可能的话,做管理开始尽量在大公司,一方面大公司体制完善,培训到位,会更快帮助你成为一个好的管理者,另一方面大公司的管理岗位才有含金量,不像小公司,动不动就冒出个技术总监。


接下来,在工作的第六年到第十年,就是按照上述的选择各自走各自的道路,最终小有成就,成为真正的技术牛人,软件架构师,需求分析师,技术经理。在这个时期的后期,部分人还是会选择多维的结合,技术牛人技术太牛了,大家五体投地,都心服口服的听他的,最终也会发展处管理水平这一维,成为技术型领导者;架构师由于需要协调各方,也会发展出管理一维,成为经理,由于架构师基本能够自己搭建一套系统,有可能会因为一个idea进行创业;需求分析师一般也会参与到架构设计中,发展出架构广度一维,也需要协调团队完成需求,发展出管理一维,从而可以成为乙方的项目经理,甚至会进行接项目方式的创业;技术经理可以进一步拓展管理一维,成为高级经理直至技术总监。在国内,成为大公司的技术总监,中小公司的CTO乃至VP,是大部分的程序员职业生涯的顶端,如果你是国外派回来的海归,或者自主创业成功的英雄,那应该另说,毕竟都是少数。


当程序员按照自己的职业生涯规划提高自己的不可替代性的时候,会造成市场上此水平程序员的价格上涨。


是时候跳槽了


当某程序员的市场价格上涨,而公司付出的价格没有跟上的时候,跳槽也就产生了。跳槽就是使得程序员的价格不随着公司的盈利状况,薪资制度而线性的增长,而是到市场中重新估价的过程。


根据上述程序员价格的组成,跳槽的原因包括以下几点:


生理需求方面:


·


加薪幅度不够,很多老板抱怨IT行业跳槽频繁,其实也是很无奈的事情,公司内部一般都有一定的加薪制度,根据不同的表现获得不同的加薪幅度,这个幅度不是根据市场情况来定的,而是根据员工之间的比较优势,背后的逻辑是这样的,表现好的员工技术进步较大,应获得更多加薪。一方面,从市场行情自有其运作规律,有的时候外界出现较大的通胀,相同水平的程序员价格普遍升高,其实这些情况公司都很了解,也不得不遵守市场规则,否则就会招不到人,常出现的现象就是应届生起薪升高,从外面挖过来的人薪资偏高,当员工发现应届生比自己辛辛苦苦干了一年薪水还多的时候,当员工发现自己忠心耿耿在公司埋头苦干多年还不如一个外来的和尚的时候,当员工发现自己好好表现还不如表现一般的同事随意一跳的时候,跳槽便成了理智的选择;另一方面,从员工的个人能力角度,需要指出的是,尤其是在职业生涯的初期,由于程序员底子薄,只要肯用功,成长速度往往飞快,远远超过公司的加薪幅度,而且在公司的表现可能仅仅是员工的冰山一角,真的并非表现最好的员工技术进步最大,因为表现最好的员工一般是老板的好帮手,老板指东打东,指西打西,因而可能会干很多的杂活,而且由于疲于应付工作,接触到的每项技术都没有办法深入研究,而很多表现一般的员工,却很有心,活虽然干的慢一些,但是遇到的技术会花时间研究下去,经过一段时间的积累,技术可能大大进步,跳一跳可能会有较大的薪资涨幅,所以跳槽也就成了理所应当的事情。


·


加班时间过长,工作和生活长期失衡,虽然薪资可以,但是性价比较低,甚至造成身体的疾病或者心理的疾病,实在得不偿失。不要过于相信很多成功人士的话,说自己年轻的时候怎么怎么拼命干活,才有的今天。虽然不能说这些成功人士的话不正确,的确很多人是付出了超出常人的努力才能出人头地,但是每个人的身体状况不一样,你听说过因为年轻的时候太拼得了干眼症的周鸿祎,也会听过因疲劳过度而患肠癌死去的王均瑶,更听过因身体不支加班后猝死的狼性公司,以及因心理原因接连跳楼的血汗工厂,我想说的是,自己的身体应该自己最清楚,当身体出现不舒适和不良信号的时候,没有什么理由应该让你不顾一切的工作下去,如果你为国家而死,还能封你个烈士,让你的妻子父母得到一定的抚恤,然而为在某公司内部的一个薪酬评价,你值得么?当你觉得身体有时候有点撑不下去的时候,果断去休息,去看病,这个时候,不要管同事的催促,老板的不满,客户的抱怨,当你倒下的时候,唯一伤心的是你的父母,妻女。有人可能会说,别人能坚持,如果我不坚持,那怎么能够成功呢?首先不可能每个人都能成功,其次即使追求成功,也有早有晚,有不同的方式,有人可以很年轻一篇文章红遍大江南北成为明星,有人则可以终生研究一个东西一直到九十多岁成为泰斗,别人熬夜七天闯过去了可能创业成功,你却可能熬夜七天心肌梗塞猝死。人生应该有追求,但不应该强求。


安全需求方面:公司经营遭遇困境,面临减薪,裁员,甚至倒闭。这几年,由于国际经济形势不佳,很多大型公司都在裁员,必将导致公司内部人心惶惶,很多人都开始准备跳槽,以留下后路。


社交需求方面:无法融入团队氛围,与同事无法合作。团队的氛围的形成很大程度上是由团队领导者的领导风格造成的。领导总会自觉或者不自觉的喜欢和倾向于比较符合自己做事风格的员工,从而对团队的氛围起到导向作用。团队中的很多无法合作和冲突往往就是因为各自的做事风格不同造成的,各自都有自己的理由,彼此对对方不屑,但其实平静一想,很难说是谁有错。我经常听到有人抱怨自己的同事如何如何差,如何如何极品,这种人怎么可能有发展,怎么可能交的到朋友,打死我我都不愿意和他再共事。我于是就问:你仔细观察一下他,他在生活中真的没有朋友么?得到的答案往往是否定的。于是抱怨者就很困惑他的那些朋友平时是怎么相处的。于是我说:说不定在他的朋友圈中也是这样评论你的呢。无论什么性格和做事方式的人,都会有朋友,也都会有一定的发展,你不愿和他同事,他也不愿意和你同事,只能说你们是不同维度的两个人,但不可能因为你们的冲突,上天就一棒子打死别人的生活和工作。所以如果你是一个乐观开朗的人,你可能会抱怨一个团队死气沉沉,可是他们也可能抱怨你过于活跃而影响别人集中精力编程;如果你是一个喜欢主动争取的人,你可能会发现一个团队人人等着领导分任务,可是他们也会抱怨你总是争功,出风头;如果你是在大公司工作较长时间,崇尚良好的软件流程,加入一家小公司后,发现各种的不规范,可是别人会抱怨你的那套东西不适合小公司,流程太完善,效率太差,小公司那有空这么玩。总之,当你发现你和你的同事不是一个维度的人的时候,跳槽也就在眼前了。


尊重需求:同上司有矛盾,劳动成果得不到尊重。这往往是离职的一个最主要的原因。 来自盖洛普公司的调查显示,75%雇员的离职是离开他们的主管而非公司。在《首先打破一切常规——世界顶级管理者的成功秘诀》(First Break All the Rules: What The Worlds’ Greatest Managers Do Differently)一书中提到:员工不是离开公司,他们是离开老板(people don’t leave jobs, they leave managers)。所谓干活不由东,累死也无功。因为和上司的不和,会使得其他的各个方面都化为乌有,什么加薪升职肯定排在最后,也别想做什么核心的模块,如果有裁员那肯定是首当其冲,所以三十六计走为上。


自我实现需求:职业生涯得不到发展。在上面提到的各种职业发展路径中,对于技术牛人路线或者架构师路线的人,如果发现在某家公司技术进步的速度较慢,则应该选择一个高手更多的更有技术含量的公司,注意这里强调的是速度,而非绝对的量,因为我们知道,在任何一家公司里面学习技术,总是由刚来的时候非常快,到后来慢慢减缓的,有的老板强调绝对的量,也即只要你在这家公司还有的可以学,就不应该跳,当然天外有天,人外有人,怎么可能在一家公司没有任何可以再学的东西呢?所以我强调的是速度,就是当速度下降到一定程度,你发现总是重复在干一些事情的时候,就可以选择去一家更牛的公司,来进行下一轮高速度的学习了。对于走需求分析师路线和管理路线的人,如果发现公司的业务或者规模发展比较慢,或者公司的平台比较小,上面已经坐满了比自己大不了多少的年轻领导,则说明发展空间有限,应该选择一个平台更大,扩张更快的公司。前面说的都是从下游向上游跳,当然也有反其道而行之的,有的人在大公司里面学到了核心技术或者较高层的管理经验,遭遇人生的天花板的时候,反而会选择跳到一些中等的公司进行半创业或者索性自主创业,以期人生获得更大成功。



程序员修炼之路(一)–随便写写,养成写技术博客的习惯


程序员修炼之路(二)–近期的学习计划


程序员修炼之路(三)一个清华大学毕业生做猎头的感受(转)


程序员修炼之路(四)走近腾讯 走进腾讯(一个关于面试准备的记录)


程序员修炼之路(五)李开复:算法的力量|万变不离其宗


程序员修炼之路(六)编写自己的工具(JAVA注册系统级快捷键源码>jintellitype<)


程序员修炼之路(七)这十几年编程的不同认知层次——摘自聊天记录




程序员修炼之路(八)再次写给我们这些浮躁的程序员


程序员修炼之路(九)关于为什么中国这么多码农的其中一种解释


程序员修炼之路(十)程序员必读经典书籍和成长路线


程序员修炼之路(十一)外国大学网络课堂


程序员修炼之路(十二)程序员老鸟写sql语句的经验之谈



程序员修炼之路(十三)我在北京工作这几年 – 一个软件工程师的反省