在軟體這個行業裡有些規則是很有殺傷力的,比如很有名的摩爾定律。
總結出這些規則的意義在于可以大緻的照明方向,免得努力來努力去卻走到了陰溝裡。
現實中種種利益紛争、觀點之争看似紛繁,但在大時間尺度下來看卻都是規則的實作手段。
這就好比下圍棋,每一手都要為謀得利益而計算,但結局卻隻有三種:赢、輸或和,這就是規則的力量。
民以食為天,是以第一定律從收入開始。
程式員第一定律可以表述為:程式員的收入是技能複雜度和技能實作可能程度的函數。
如果程式員的工資是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的核心開發人員,這類人員内蘊價值極高,處于稀缺狀态;二是微軟提供了實作這種技能内蘊價值的機會。
這二者缺一不可。