我個人的經曆略有一點特別,本身學的專業並不是軟體,但在當年軟體熱的背景下,加入了這個行業。
由於很多同學仍在原來的行業,時不時的溝通讓我反思軟體開發究竟和機械製造這類行業有啥區別。
老實講,對於畢業生而言,10年前做軟體收入要比做機械製造有明顯優勢,但10年後的今天這種優勢就不明顯了。
這也是觸發我考慮這種問題的一個原因。
軟體行業與機械製造比一個很不同的特質:知識更迭頻度較快。
在考慮如何使自己升值時,這一特質有關鍵影響。
技術更迭較快說的是這樣一種現象:今天有價值的,明天可能會貶值為0。
這點與機械製造差別很大,比如:學做渦輪機。在做渦輪機這樣的行業裡,今天學的熱力學三定律和五十年前的熱力學三定律並無差別。
但軟體行業不行,你所依賴的某一平台或語言很容易產生更迭。10幾年前大家只有Win32 API好用,但一個人如果只停留在Win32 API裡,是不太能適應今天的軟體開發的。像Delphi這類曾經非常顯赫的開發環境,今天更是幾乎沒什麼聲音了。
這也許源自於這樣一種現實,很多傳統行業的技能直接依賴於某種自然規律如:熱力學、流體力學、材料力學等等。這些東西自身只會深化,但很少會有顛覆性變化。但軟體開發所需的東西(API等)往往依賴於某一個公司或組織,比如微軟,蘋果等,進而是一種人造系統。一旦社會基本需求發生變化,這些公司或組織就必需不斷的拋棄並更新自己的系統,比如:GDI -->GDI+ -->WPF。
可以打一個比方來使這種差異更形象一點:
好比說兩個不同的人,一個在傳統行業一個在軟體行業,兩個人都很勤奮,不停的往自己腳下墊東西,努力使自己達到更高的位置。傳統行業中的人比較自然的會越墊越高,而軟體行業中的人則會墊到一定時候,突然間某幾塊磚就會消失了。
這倒並不意味著軟體行業中並非沒有具有較長生命價值的東西,但這些東西往往集中在一些特定的領域裡,牽涉的從業人員比較少因此不太具有代表性。最典型的東西就是通用資料結構和演算法,今天的排序演算法在10年後必然同樣具有價值,但專門從事演算法最佳化改良的畢竟是少數。具美國人統計的資料幹這類勾當的人佔比還不到5%,而95%的人要和更迭較快的技術打交道。
這一基本特質的影響非常深遠,比如你可能很努力的跑,但一不小心就落後了,既不是因為你跑不快,也不是因為你不努力。
簡單來講,在機械製造裡隨著時間,一個人的稀缺性往往是逐步遞增的,那當然他收入也是逐步遞增的,只要這個行業還在。
而軟體開發不是,一旦被重設,那麼白頭髮的就可能還不如剛畢業的。
在規劃自己職業路徑學習方法時,不考慮這個恐怕不行,會很容易被後浪拍在沙灘上,再實在點講這也影響收入。