在軟體這個行業裡有些規則是很有殺傷力的,比如很有名的摩爾定律。
總結出這些規則的意義在於可以大致的照明方向,免得努力來努力去卻走到了陰溝裡。
現實中種種利益紛爭、觀點之爭看似紛繁,但在大時間尺度下來看卻都是規則的實現手段。
這就好比下圍棋,每一手都要為謀得利益而計算,但結局卻只有三種:贏、輸或和,這就是規則的力量。
民以食為天,所以第一定律從收入開始。
程式設計師第一定律可以表述為:程式設計師的收入是技能複雜度和技能實現可能性的函式。
如果程式設計師的工資是s
,社會平均水平的工資為
a,程式設計師掌握的技能複雜度為
c,實現可能性為p。
那麼s = a x c x p
。
這裡面的實現可能性p
不太好理解,額外做點說明。
好比說有人在東北種了很多白菜,並獲得了大豐收。與此同時廣州也確實需要大白菜,按批發價他的這批白菜可以買10萬。
但關鍵是這個人找不到車皮,大白菜就只能在當地零售,這個時候這批大白菜就只能買1
萬塊錢。
這就是實現的可能性。
大白菜內蘊了既定的價值,這種價值並不因為賣多少錢而改變,但這種價值能實現到什麼程度則依賴於實現的可能性。
這視乎很簡單,但其實不是,很多人的一生就籠罩在這條定律下面,我們來基於這第一定律繼續做些推導。
技能的複雜度c
可以大致等價於掌握一門技術所需要的時間。
各種整合的開發環境,各種容易學習的類庫等使軟體開發的門檻降得很低,這對整個產業是有利的,但對個體而言則是不利的。
你花5個月可以學會的技術,其他人花
5個月也可以學會,而
5個月可以學會的東西所蘊含的價值一定是低的。
與之相對5
年才可以學會的東西,其內蘊價值一定是高的。
內蘊價值低,所對應的收入必然偏低。
為避免爭議,我這裡就不寫技術的名字了,但大家可以從學習所需要的時間上來對各種技術做個分類。
有時候很多人會有一種錯覺,認為越熱門的技術收益越好。
這在大多時候是錯的。
越熱的技術,越成熟的技術越是大眾的,而越是大眾的技術內蘊價值越低,所以收益越不好。
熱度能夠幫助提公升實現可能性p
,但對技能複雜度
c沒有影響。
各種技術的複雜度大概是呈指數增長的,越到後面前進一步越困難。
好比說學會5
門語言所需要的時間大多時候遠比學精一門語言要短。
在特定年紀尚,每樣技術都會一點,對提高實現可能性p
略有幫助,但自身可替代性很強,對技能複雜度
c的影響為負面。
長期來看得不償失。
有些技術領域很窄,上手也慢,實現可能性也低,比如顯示卡驅動,列印驅動等。
做這類工作好比在鋼絲上跳舞:只要能實現自己的價值,那麼回報大體不錯,但最怕技術更迭。
技術一換代,可能多年積累十去六七。
總結來看,程式設計師要想獲得不錯的收入,第一要掌握稀缺的技術,即技術的內蘊價值要高;第二要能實現對這種技術的應用。
《微軟的秘密》一書中提到,微軟裡面優秀的程式設計師是可以擁有許多輛保時捷的。
用上面兩條做分解,就會發現原因很簡單:
一是這樣的人是nt
的核心開發人員,這類人員內蘊價值極高,處於稀缺狀態;二是微軟提供了實現這種技能內蘊價值的機會。
這二者缺一不可。
zhuanzai:
找老公一定要找程式設計師
要嫁就嫁程式設計師 1.專一的心,除了計算機就是你!2.不喝酒不發脾氣!3.一套衣服穿半年!4.沒時間接觸其它girl,想搞婚外戀也沒可能。5.平時總加班,所以週末一定會懷著一顆愧疚的心在家陪老婆逛街 看電視 聊天 做家務。6.只認識0和1,基本沒理財能力,一定會主動把所有的錢都交給老婆管,還會千恩...
程式設計師為什麼一定要用Linux?
大多數人推薦linux,基本上都會說linux讓你更高效 更優秀。然而工具只是工具。然而工具只是工具。然而工具只是工具。優秀程式設計師和不優秀程式設計師的區別首先是態度上的區別。他們有自己的理想,思考很多,不管是專案開始之前還是在專案進行中,專案完成之後也會進行總結。他們對待問題比較嚴謹,思考比較全...
程式設計師為什麼一定要用Linux
大多數人引薦linux,基本上都會說linux讓你更高效 更優異。然而工具只是工具。然而工具只是工具。然而工具只是工具。優異程式設計師 和不優異程式設計師 的差異首先是態度上的差異。他們有自個的理想,考慮許多,不管是專案開端之前還是在專案進行中,專案完結以後也會進行總結。他們對待疑問對比謹慎,考慮對...