1. 程式人生 > >程式設計師第一定律:關於技能與收入

程式設計師第一定律:關於技能與收入

在軟體這個行業裡有些規則是很有殺傷力的,比如很有名的摩爾定律。

總結出這些規則的意義在於可以大致的照明方向,免得努力來努力去卻走到了陰溝裡。

現實中種種利益紛爭、觀點之爭看似紛繁,但在大時間尺度下來看卻都是規則的實現手段。

這就好比下圍棋,每一手都要為謀得利益而計算,但結局卻只有三種:贏、輸或和,這就是規則的力量。

民以食為天,所以第一定律從收入開始。

程式設計師第一定律可以表述為:程式設計師的收入是技能複雜度和技能實現可能程度的函式。

如果程式設計師的工資是S,社會平均水平的工資為A,程式設計師掌握的技能複雜度為C,實現程度為P

那麼S = A x C x P

這裡面的實現程度P不太好理解,額外做點說明。

好比說有人在東北種了很多白菜,並獲得了大豐收。與此同時廣州也確實需要大白菜,按批發價他的這批白菜可以買10萬。

但關鍵是這個人找不到車皮,大白菜就只能在當地零售,這個時候這批大白菜就只能買1萬塊錢。

這就是實現程度。

大白菜內蘊了既定的價值,這種價值並不因為賣多少錢而改變,但這種價值能實現到什麼程度則依賴於現實的可能性。

這視乎很簡單,但其實不是,很多人的一生就籠罩在這條定律下面,我們來基於這第一定律繼續做些推導。

  • 推論1:越容易上手的技術,其內蘊價值越低。

技能的複雜度C可以大致等價於掌握一門技術所需要的時間。

各種整合的開發環境,各種容易學習的類庫等使軟體開發的門檻降得很低,這對整個產業是有利的,但對個體而言則是不利的。

你花5個月可以學會的技術,其他人花5個月也可以學會,而5個月可以學會的東西所蘊含的價值一定是低的。

與之相對5年才可以學會的東西,其內蘊價值一定是高的。

內蘊價值低,所對應的收入必然偏低。

為避免爭議,我這裡就不寫技術的名字了,但大家可以從學習所需要的時間上來對各種技術做個分類。

有時候很多人會有一種錯覺,認為越熱門的技術收益越好。

這在大多時候是錯的。

越熱的技術,越成熟的技術越是大眾的,而越是大眾的技術內蘊價值越低,所以收益越不好。

熱度能夠幫助找到工作,但對技能複雜度C沒有影響。

  • 推論2:單純的涉獵廣泛,沒有專精,對收入的影響是負面的。

各種技術的複雜度大概是呈指數增長的,越到後面前進一步越困難。

好比說學會5

門語言所需要的時間大多時候遠比學精一門語言要短。

在特定年紀尚,每樣技術都會一點,對提高實現程度P略有幫助,但自身可替代性很強,對技能複雜度C的影響為負面。

長期來看得不償失。

  • 推論3:實現程度P越高,風險越大。

有些技術領域很窄,上手也慢,實現程度卻高,比如顯示卡驅動,列印驅動等。

但這類工作好比在鋼絲上跳舞:只要能實現自己的價值,那麼回報大體不錯,但最怕技術更迭。

技術一換代,可能多年積累十去六七。

總結來看,程式設計師要想獲得不錯的收入,第一要掌握稀缺的技術,即技術的內蘊價值要高;第二要找到實現稀缺技術的場景。

《微軟的祕密》一書中提到,微軟裡面優秀的程式設計師是可以擁有許多輛保時捷的。

用上面兩條做分解,就會發現原因很簡單:

一是這樣的人是NT的核心開發人員,這類人員內蘊價值極高,處於稀缺狀態;二是微軟提供了實現這種技能內蘊價值的機會。

這二者缺一不可。

#根據大家的回覆做了點修改把"實現可能性"替換成了"實現程度"。

關聯文章:

-------------------------------------------------------------------------------------------------------------------------------

理想流 + 軟體 = 《完美軟體開發:方法與邏輯》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和邏輯推演本質,追求真理。