最近一個月一直在忙專案,幾乎沒什麼時間寫部落格,今天中午才有時間看看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)。所謂幹活不由東,累死也無功。因為和上司的不和,會使得其他的各個方面都化為烏有,什麼加薪升職肯定排在最後,也別想做什麼核心的模組,如果有裁員那肯定是首當其衝,所以三十六計走為上。

自我實現需求:職業生涯得不到發展。在上面提到的各種職業發展路徑中,對於技術牛人路線或者架構師路線的人,如果發現在某家公司技術進步的速度較慢,則應該選擇一個高手更多的更有技術含量的公司,注意這裡強調的是速度,而非絕對的量,因為我們知道,在任何一家公司裡面學習技術,總是由剛來的時候非常快,到後來慢慢減緩的,有的老闆強調絕對的量,也即只要你在這家公司還有的可以學,就不應該跳,當然天外有天,人外有人,怎麼可能在一家公司沒有任何可以再學的東西呢?所以我強調的是速度,就是當速度下降到一定程度,你發現總是重複在幹一些事情的時候,就可以選擇去一家更牛的公司,來進行下一輪高速度的學習了。對於走需求分析師路線和管理路線的人,如果發現公司的業務或者規模發展比較慢,或者公司的平臺比較小,上面已經坐滿了比自己大不了多少的年輕領導,則說明發展空間有限,應該選擇一個平臺更大,擴張更快的公司。前面說的都是從下游向上遊跳,當然也有反其道而行之的,有的人在大公司裡面學到了核心技術或者較高層的管理經驗,遭遇人生的天花板的時候,反而會選擇跳到一些中等的公司進行半創業或者索性自主創業,以期人生獲得更大成功。