我個人的經歷略有一點特別,本身學的專業並不是軟體,但在當年軟體熱的背景下,加入了這個行業。
由於很多同學仍在原來的行業,時不時的溝通讓我反思軟體開發究竟和機械製造這類行業有啥區別。
老實講,對於畢業生而言,10年前做軟體收入要比做機械製造有明顯優勢,但10年後的今天這種優勢就不明顯了。
這也是觸發我考慮這種問題的乙個原因。
軟體行業與機械製造比乙個很不同的特質:知識更迭頻度較快。
在考慮如何使自己公升值時,這一特質有關鍵影響。
技術更迭較快說的是這樣一種現象:今天有價值的,明天可能會貶值為0。
這點與機械製造差別很大,比如:學做渦輪機。在做渦輪機這樣的行業裡,今天學的熱力學三定律和五十年前的熱力學三定律並無差別。
但軟體行業不行,你所依賴的某一平台或語言很容易產生更迭。10幾年前大家只有win32 api好用,但乙個人如果只停留在win32 api裡,是不太能適應今天的軟體開發的。像delphi這類曾經非常顯赫的開發環境,今天更是幾乎沒什麼聲音了。
這也許源自於這樣一種現實,很多傳統行業的技能直接依賴於某種自然規律如:熱力學、流體力學、材料力學等等。這些東西自身只會深化,但很少會有顛覆性變化。但軟體開發所需的東西(api等)往往依賴於某乙個公司或組織,比如微軟,蘋果等,進而是一種人造系統。一旦社會基本需求發生變化,這些公司或組織就必需不斷的拋棄並更新自己的系統,比如:gdi -->gdi+ -->wpf。
可以打乙個比方來使這種差異更形象一點:
好比說兩個不同的人,乙個在傳統行業乙個在軟體行業,兩個人都很勤奮,不停的往自己腳下墊東西,努力使自己達到更高的位置。傳統行業中的人比較自然的會越墊越高,而軟體行業中的人則會墊到一定時候,突然間某幾塊磚就會消失了。
這倒並不意味著軟體行業中並非沒有具有較長生命價值的東西,但這些東西往往集中在一些特定的領域裡,牽涉的從業人員比較少因此不太具有代表性。最典型的東西就是通用資料結構和演算法,今天的排序演算法在10年後必然同樣具有價值,但專門從事演算法優化改良的畢竟是少數。具美國人統計的資料幹這類勾當的人佔比還不到5%,而95%的人要和更迭較快的技術打交道。
這一基本特質的影響非常深遠,比如你可能很努力的跑,但一不小心就落後了,既不是因為你跑不快,也不是因為你不努力。
簡單來講,在機械製造裡隨著時間,乙個人的稀缺性往往是逐步遞增的,那當然他收入也是逐步遞增的,只要這個行業還在。
而軟體開發不是,一旦被重置,那麼白頭髮的就可能還不如剛畢業的。
在規劃自己職業路徑學習方法時,不考慮這個恐怕不行,會很容易被後浪拍在沙灘上,再實在點講這也影響收入。
自上而下的軟體開發和自下而上的軟體開發
自上而下 top down 開發模式是指從乙個應用的最高點開始開發。從最高點逐步往下層編碼,直到開發完所有的任務。一旦寫完了最下層的 開發任務就完成了。使用這種方式,你需要設計 編寫出所有你需要的但還沒有實現模擬介面 服務 偽 自下而上 bottom up 開發模式是指從乙個應用的最底層開始開發。這...
軟體系統開發 軟體開發 系統開發的差別
軟體系統開發 軟體開發 系統開發的差別 一般人可能認為這三者是沒有區別的,實際上不光是名詞的不同,在定義上的區別很大,首先,系統開發包括兩種,軟體系統開發和硬體系統開發,系統開發比軟體系統開發定義的範圍要大得多。1.軟體系統開發,資訊系統開發 應用軟體系統開發等等,這類是以編寫 進行開發。軟體系統是...
資訊系統的軟體開發方法和軟體開發模型
我搞不清軟體開發方法和開發模型這兩個概念。書本上這兩部分都放在 軟體工程 這一章節裡,但是是分開介紹的,並沒有闡明二者之間的關係,比較割裂。我嘗試在網際網路上找找資料,但都非常少。這裡先把一些學習心得記錄下來,等待以後完善。一 鋪墊知識 系統生命週期分為四個階段。系統規劃 系統開發 系統運維 系統更...