知乎日報:程序員在十年後還會有今天的收入嗎?
感覺你提的不止是一個問題,而是很多問題。
首先,如果你要在 EE 和 CS 中間選擇的話,我強烈推薦 CS。這個產業價值鏈的趨勢是越來越長,帶來附加價值的部分越來越向上,從硬件、軟件、網絡服務、人工智能、利用網絡服務進行線下服務……跟隨這個趨勢的話,應該選擇在棧更高端的 CS。
其次,你問的問題是是否學習計算機專業,但問題卻是程序員。這兩件事情未必是對應的。確實計算機專業畢業相當大比例去當程序員了,可程序員中是計算機專業畢業的其實並不是多數。各個專業都可以。所以你詢問程序員的收入,這未必和計算機專業畢業去做的程序員是一回事。計算機專業的學習遠遠比編寫程序要廣泛,其實更加對口的工作是一些更具專業性的領域,比如系統級別的軟件開發,如操作系統、分佈式系統、數據庫、編程語言、編譯器和運行環境等;再如人工智能相關的機器學習、數據挖掘、信息檢索、語音、圖像、視頻等。如果要探討這些更具專業性的領域在十年後是不是可以保持現在這樣的收入,這還真的是很難説的。也許硬件的革命給這些領域帶來更大的挑戰和機遇,也許現有問題解決得越來越好,缺乏更新的突破於是需要解決新問題的人越來越少。這真的是很難説的。但我相信,會有更多重要的計算機系統領域出現的,計算機專業的培養未必完全對口,但應該是相對最容易轉型到這些新領域的。
最後回到你説的程序員收入的發展趨勢。程序員本身並不是一個定義清晰的職業。有一件事情我可以確定,那就是編程這一技能會在越來越多的行業成為必需技能。編程序是人告訴可計算設備應該幹什麼的方法,隨着計算機在各行各業更廣泛更深入得應用,編寫程序成為越來越基本的技能。幾十年後,編程序也許會成為和加減乘除的算術技能,或者識字寫作的語文能力一樣重要的基本技能。到那時候,多數人的工作都會包含需要編程的部分。廣義地説,多數人的工作都是程序員的工作。你可以看看過去幾十年發展的趨勢:汽車這樣幾十年被認為是機械產品,但現在很多汽車裏運行着百萬行代碼;電子芯片設計現在完全是編寫程序;金融業已全部電子化,自動化交易和量化分析都需要大量編寫代碼;從數據分析到大數據分析,現在需要寫 python,而不僅僅是會用 Excel;在科學研究領域,高能物理、天文物理、生物基因工程等等都以編寫程序為主要研究工具……這樣的趨勢只會不斷繼續。在程序員外延不斷擴大,而編程技能變得越來越普遍的情況下,程序員的平均收入也許會降低。
當然,你也許不會認為所有工作中要求編寫大量程序的職業都算程序員,的確多數時候我們也並不這麼認為。如果我們狹義的來説,只把開發計算系統本身的工作稱作程序員的話(比如系統開發、網絡服務開發、移動客户端開發、人工智能系統開發等),在十年後,這類工作的收入和今天比會怎樣?
今天程序員待遇為什麼高?是因為計算系統的革新給各行各業帶來核心競爭力的提升,這些領域花大價錢跟上革命的趨勢避免落後——有新玩家顛覆格局,有老巨頭花錢避免出局。隨便舉幾個例子,電子商務給零售業帶來的提升、電子支付給金融業帶來的提升、移動通訊給通訊業帶來的提升、網絡視頻服務給娛樂業帶來的提升……未來很難預測,但我們依然有理由相信,這一波技術革命積累的勢能,在未來十年應該還是無法完全釋放出來的,十年後,計算系統的提升應該還可以給很多行業提供核心競爭力。從現在積累的勢能來看,大數據給各行業帶來的決策革命才剛剛開始,深度學習給人工智能各個領域帶來的提升還沒有機會應用到各個領域,物聯網初出茅廬,機器人虛擬現實等也有很大的潛力,CPU 可定製計算的趨勢也許會給給主要計算機系統革命性的改變,這還不算上腦機接口這樣更有不確定性的領域。所有這些新趨勢都需要我們做出更新更好的計算系統,幫助各行各業帶來更好的提升。未來幾十年不好説,但把時間限定為十年的話,我還是對現在積累的勢能充滿信心的。
最後再多説兩句。剛才説的是大的趨勢,小的波動是難以預測的。經濟形勢波動對這一職業的影響一般是還比較大的。金融危機來了,程序員待遇一定會降低。另外這個領域的投資有很大一部分來自於風險投資,而風險投資並不很穩定,很容易削減或移到別處。這些調整的因素是很難預測的。