程式設計師如何增加收入

cheny_com發表於2013-03-20

  程式設計師的收入是廣受關注的問題,很多人從業3~5年之後就會遇到這個收入瓶頸。儘管物價不斷上漲,程式設計師尤其是初、中級程式設計師的收入不升反降。即使上次在某個文章中看到有中國第一程式設計師之稱的某位,月薪也只有3萬,儘管這個數字已經很高了,但這個“中國第一”,也只有眾多小型軟體企業總監級別的收入而已。為什麼這麼高水平的技術人員在公司中的位置仍然顯得與日俱降?本文會分析其中的原因,並依據原因給出相應的建議,為收入遇到瓶頸的程式設計師找到出路。

  要理解一個人能賺多少錢,先要理解錢的流轉規律。對於程式設計師,總是認為若自己能力提升了,自己的收入就應該相應提升。不過,請先讀一下任正非寫給華為員工的郵件中的一段文字:

因此,沒有責任心,不善於合作,不能集體奮鬥的人,等於喪失了在華為進步的機會。那樣您會空耗了寶貴的光陰,還不如試用期中,重新決定您的選擇。進入華為並不意味著高待遇,因為公司是以貢獻定報酬的,憑責任定待遇。對新來員工,因為沒有記錄,晉升較慢,為此十分歉意。如果您是一個開放系統,善於吸取別人的經驗,善於與人合作,藉助別人提供的基礎,可能進步就會很快。

  從中可以看出,先要替公司賺到錢,承擔責任,一個員工才能拿到錢。

  分析

  若一個程式設計師技術水平一個頂十個,在他替公司賺錢的道路上還有哪些障礙呢?典型障礙有很多,比如:

  1. 這個程式設計師開發的功能中有50%客戶不常使用

  因此,客戶要麼沒有選擇這個產品,要麼只願意付出更低的價格。“這怪產品經理啊,為什麼怪我?”錯。若賺到了錢,論功行賞的分配方法有很多;但若賺不到錢,分配方法就一種:大家都沒錢。也就是在一家產品方向失敗的公司,即使最頂級的程式設計師,也賺不到錢;或者說,他賺到的錢,可能還不如一個產品方向正確的公司的一個普通程式設計師。

  2. 這個程式設計師開發的底層庫中,有50%不被呼叫

  很多頂級的程式設計師都迷戀編寫底層庫,認為這才是施展技術實力的地方;他們多數不願意參與業務級別的工作,認為工作過於簡單還要和客戶打交道。這時候編寫出來的東西,經常會出現“需求鍍金”,就是最終程式碼中充斥著大量的無用的功能。本人做過一段這種事情,所編寫的一個庫,可能幾年後使用率也不超過一半。

  如果這兩個問題不解決,我們表面上看到的看到的10倍的能力,真正能轉化到生產力上的不足25%。公司的錢賺不來,個人收入低的問題也就很好理解了。

  3.頂尖高手在公司內部的位置已經不再重要

  現在已經不是當年兩個修自行車的能造飛機的英雄時代了。現在的軟體很少像當年KV300、WPS一樣可以由一個高手獨立寫成,多數都依託於一個十多人乃至近百人的大型團隊。如果這個團隊的整體實力很強,裡邊一個頂三、五個的程式設計師大有人在,那麼單個的能頂十個的程式設計師貢獻能有多大,就值得商討了。

  在10年前參與的一家公司中,有一位自己躲在自己辦公室的“掃地僧”,功力超過我們團隊的最頂級的程式設計師還要數倍。不過,他卻在獨立開發一個與公司方向不符的小產品,由於他是老闆的朋友,老闆也執拗不過,就隨他去了。幾年後公司上市,不過是因為我們所在的25人團隊的產品佔據市場份額60%以上。畢竟這種規模的團隊,如果技術和管理又能跟得上(這個團隊就是本人第一次遇到鬆結對程式設計、139團隊的那個團隊),生產力不是一個兩個游擊隊員能夠相比的。如果不能把自己的能力轉化為企業的盈利,收入就無從談起。

  答案

  有了這兩個分析,就不難得到答案,整體上分兩個方向,最後我們再總結兩個截然不同的方向的共同點。

  一個方向,是轉向關注業務。具體說來,包括成為產品經理,或稱為對產品需求負有責任的技術兼業務高手。

  為何產品經理的收入很高?三星剛剛重獎了GalaxyIII的產品經理,而騰訊、阿里的產品經理也久負盛名,而他們的所謂“高階程式設計師”一般都默默無聞。原因就是產品經理是“掌舵”的,不是“划船”的,他對團隊生產力的貢獻,不是加法,而是乘法。國內征途以幾十人團隊每年幾億的收入,騰訊以9千人超過中國電信5萬人的營業額,國外Apple及FB的崛起,靠的不是技術高手的加法,而是產品經理的乘法。

  作為純技術高手,可能直接轉為產品經理很難,或者不願意轉,那麼,至少要變成關心需求的技術兼業務高手。也就是不能只沉迷技術,而要關心是否正在開發客戶關注的核心需求,業務實現是否有效、友好,與競爭對手定位於功能比較等內容。

  作為掌舵的人,更容易幫助團隊把技術能力轉化為生產力,提升績效,也更容易獲得更高的收入。

  第二個方向,是作為技術領導,將自己的技術與管理結合起來,提升整個團隊的戰鬥力。

  技術高手作為團隊的領導具有得天獨厚的優勢,畢竟軟體管理是個複雜的過程,需要結合技術、團隊、過程的各方面才能做好。

  比如設定這樣一個目標:“促進團隊的程式碼複用,以提升進度和質量。”個人參與過的幾個專案都證明做好這件事情意義非比尋常,然而做好卻很難。個別技術高手可以以1/4程式碼寫出相同的功能,然而整個團隊卻很難做到,原因是缺少恰當的團隊管理方法。而作為純管理出身的專案經理,又不理解應該建立何種複用結構,如何分工。要讓純管理的人跨越技術壁壘是比登天,而讓技術高手幫助進行管理則只是一念之間的事情(雖然也很難!)。

  如果一個高手,能夠幫助自己身邊的三、五個程式設計師提升水平,那麼很容易再獲得相當於幾個人的生產力,這是他個人提升所很難再獲得的。本人在十年前遇到一位高手,跟他學了一年,感覺自己提升了三四倍的水平(從完成任務所需的功能量縮減而言,何況還有技術、質量方面的提升),而身邊另外幾個師兄弟,也都長進迅速,有一兩個甚至都超過了師傅的水平。除了傳授技術之外,這個團隊後來在這位高手帶領下,還改善了管理結構,演進成為一個鬆結對和1-3-9團隊,在不到一年時間從5人擴充套件到25人,而產品質量沒有明顯的下降,後來市場佔有率更是達到60%以上。

  這兩個方向有一個共同點,就是把自己卓越的技術能力對團隊的貢獻,從加法變成乘法。高手必須認識到自己對團隊和企業的最大貢獻,不是自己獨立承擔的那點任務,而是影響產品和影響團隊的能力。

  最後一個常見問題:

  “我傳授了徒弟,最後卻被一腳踢掉怎麼辦?”這是很多技術高手所擔心的事情。其實,老闆都是很聰明的人,技術、管理、業務可能都一般,但識人、用人絕對超過我們,否則怎麼會我們給他打工呢!一個高手如果被踢掉,更可能是因為沉迷技術逐漸變得鑽牛角尖、封閉,最終變成無用之人。

相關文章