自動化來勢洶洶,未來程序員何去何從?
AI、自動化,這些技術(shù)進步不僅威脅到到了其他行業(yè)的工作,甚至有聲音認為,連開發(fā)這些技術(shù)的程序員其自嘲的“碼農(nóng)”地位都將不保。比方說,OpenAI前研究科學家Andrej Karpathy就認為,在AI引領(lǐng)的軟件2.0趨勢下,傳統(tǒng)程序員真的有可能要失業(yè)了。不過,跟Tyler Elliot Bettilyon相比,這些都是對程序員未來的片面看法,相對而言,他對程序員未來的工作前景分析更加全面客觀,值得從業(yè)者好好看看,思考未來作何選擇。
我的一位朋友最近提出了一個問題,這樣的問題我在不同場合都聽說過,只是形式各不相同:
你是否認為IT和一些低端的編程工作會重蹈渡渡鳥的覆轍?看起來一場大規(guī)模的就業(yè)泡沫似乎就要破裂了。在我看來,技術(shù)和低端計算機科學相關(guān)工作之所以還“久負盛名”并且拿到不菲的報酬的其中一個原因,是那些荒謬的行話以及公眾對計算機的無知,但這兩個在未來10年都會消失……
這個問題同時指向了兩點,一是技術(shù)工作的未來,二是對軟件工程領(lǐng)域的普遍誤解。雖說有大量“荒謬的行話”沒錯,但是還有同樣多的困難問題等著那幫有著合適技能組合的人去解決也是事實。一些軟件工作絕對是要消失的,但在很多年的時間里有著合適經(jīng)驗和知識的一些程序員仍然會繼續(xù)享有聲望并且拿到可觀的報酬;作為例子可以看看最近AI研究人員薪水的爆發(fā)以及可用人才的相應短缺就知道了。
在不斷變化的技術(shù)業(yè)能夠保持與時俱進是個挑戰(zhàn)。通過審視取代現(xiàn)在哪些程序員的技術(shù)可以預測出市場的那些崗位會消失。此外,要想預測特定技能薪酬和需求變化我們應該考慮學習編程群體的壯大情況。就像Hannah指出“公眾對計算機的無知”導致了那些會編程的人工資高企一樣,大眾對計算機的認知正在逐年變得更加嫻熟。
日益走向商品化
對自動化取代工作的恐懼既不新鮮也不是杞人憂天。在任何領(lǐng)域,尤其是在技術(shù)領(lǐng)域,市場力量都會推動著企業(yè)朝著自動化和商品化發(fā)展。Gartner的炒作周期曲線就是對這一現(xiàn)象的很好詮釋。
Gartner 2017炒作周期曲線
隨著時間延續(xù),特定想法和技術(shù)把生產(chǎn)力推進到了“高原期”,最終實現(xiàn)自動化。但凡回顧歷史就能得出結(jié)論,自動化是有能力摧毀特定的就業(yè)市場的。從作物收割到,到汽車裝配,不同行業(yè)的技術(shù)發(fā)展正在不斷替代和增強人類勞動力,降低成本。一位教授曾經(jīng)在自己的編譯器課程上總結(jié)說,“以史為鑒,看看紡織業(yè)和鋼鐵業(yè):你是想建造機器和工具呢,還是想操作那些機器?”
在這里“機器”的隱喻是指計算機編程語言。這位教授其實是問:你是想用JavaScript開發(fā)網(wǎng)站呢,還是想開發(fā)驅(qū)動JavaScript的V8引擎?
網(wǎng)站的創(chuàng)建工作已經(jīng)由WordPress等工具自動化了。而另一方面V8的競爭對手也越來越多,其中一些正在解決開放的研究問題。語言會來了又走(想想看現(xiàn)在還有多少分Fortran的工作?),但總會有人開發(fā)下一種編程語言。我們是幸運的,因為編程語言的實現(xiàn)也是用編程語言寫的。作為軟件的“機器操作者”把你推上了一條成為“機器制造者”的道路,這是過去的鋼鐵廠工人所沒有走過的。
語言、解譯器以及編譯器的不斷增多向我們表明,每一臺摧毀工作的機器也提供了對這些機器進行改進、維護等的新機遇。盡管消失的工作的列表正在變得越來越長,但是人類全體都認為“我想已經(jīng)沒有工作可以做的了”的那個歷史性時刻還沒有到來。
Pinsetters
商品化會向我們所有人襲來,不僅僅只是軟件工程師。在整個歷史長河中,人類勞動力都在不斷被非人類的東西取代或者增強,導致工作所需的人更少,對技能的要求更低。自動汽車和自動卡車只是這個偉大的人類傳統(tǒng)的一時之興。如果創(chuàng)造和自動化的周期是生活的現(xiàn)實,接下來我們自然要問:哪些工作和行業(yè)有危險,哪些又暫時無憂呢?
誰自動化誰?
AWS、Heroku等類似托管主機平臺永久性地改變了系統(tǒng)管理員/DevOps工程師的角色。互聯(lián)網(wǎng)企業(yè)過去絕對需要自己的服務器專家。其中一些精通Linux;一些懂得如何用Apache或者NGINX配置服務器;有的不僅會對服務器、路由器等各種物理組件進行布線,而且還懂配置路由表以及各種必要的軟件來讓服務器供大眾在web上訪問。盡管現(xiàn)在仍然有一群人懂得干這一行,但AWS正在令其中一些技能變得過時——尤其是對經(jīng)驗要求更低的一些事情以及硬件類的事情。對于靈通物理基礎設施的人來說,Amazon(以及Netflix、Google等)內(nèi)部還有非常賺錢的角色可以擔任,但是中小企業(yè)方面對這些角色的需求已經(jīng)大為減少。
像SalesForce、Tableau以及SpotFire這樣的“商業(yè)智能(BI)”工具正在開始占領(lǐng)歷史上屬于軟件工程師的地盤。這些系統(tǒng)已經(jīng)減少了對內(nèi)部數(shù)據(jù)庫管理員的需求,但作為一種通用技能同時也增加了對SQL的需求。BI還減少了對內(nèi)部報表技術(shù)的需求,但增加了對“集成工程師”的需求,后者的工作是將來自企業(yè)的數(shù)據(jù)流交給第三方平臺進行自動化處理。一度為Excel和電子表格所統(tǒng)治的數(shù)據(jù)管理領(lǐng)域正在逐步被推向Python或者R這樣的腳本語言以及SQL上。一些工作會消失,但對能夠?qū)戃浖娜说男枨罂傮w上來說是增長的。
就更接近軟件而言,數(shù)據(jù)科學是商品化的一個很好的例子。Scikit.learn、Tensorflow以及PyTorch都是、方便大家編寫機器學習軟件的軟件庫。事實上,用同一個數(shù)據(jù)集跑許多有著不同參數(shù)集、同時賭氣算法實現(xiàn)幾乎一無所知的機器學習算法是有可能的(當然這么做是不明智的,這里只是說可能性)。我敢打賭未來幾年商業(yè)智能公司會嘗試將這些類型的算法集成到自己的工具里面。
從很多方面來說數(shù)據(jù)科學就像5到8年前的web開發(fā)——這是一個蓬勃發(fā)展的領(lǐng)域,因為“技能鴻溝”,你能夠獲得的效果知識很少。后來,隨著web開發(fā)訓練營的關(guān)停整合,數(shù)據(jù)科學訓練營又在原來的地方冒出來。收購了原來的web開發(fā)訓練營(Dev Bootcamp)的Kaplan現(xiàn)在就是設立了一個數(shù)據(jù)科學訓練營(Metis),并且決定關(guān)閉DevBootcamp,同時維持Metis的運轉(zhuǎn)。
內(nèi)容管理系統(tǒng)是工具里面因為自動化而取消對軟件工程師需求的最明顯例子之一。SquareSpace和WordPress是當今最流行的CMS系統(tǒng)之一。這些平臺顯著降低了只有一點前端web開發(fā)技能的人的價值。事實上,做網(wǎng)站并把它放上網(wǎng)的門檻已經(jīng)低了很多,低到毫無變成經(jīng)驗的人也能夠每天都成功地發(fā)布新網(wǎng)站。這些人沒法做出服務數(shù)十億人的、交互性極強的網(wǎng)站,但是替自己的企業(yè)制作網(wǎng)站為客戶提供所需信息絕對是可以的。一個可愛的登錄頁,再加上如何尋找公司、如何聯(lián)絡自己這樣的信息對于當?shù)仫埖?、酒吧或者零售店來說已經(jīng)綽綽有余。
如果你的企業(yè)不是以“互聯(lián)網(wǎng)業(yè)務”為主,想弄個過得去的網(wǎng)站放到網(wǎng)上從來都沒有像現(xiàn)在這么容易。因此,可迅速做好網(wǎng)站并放到網(wǎng)上的 web承包商產(chǎn)業(yè)一度欣欣向榮,但現(xiàn)在已經(jīng)變得沒那么賺錢了。
最后,在這種情況下如果忽視計算機的物理方面的話這種態(tài)度近乎自大。用Mike Acton的話來說:“軟件不是平臺,硬件才是平臺”。搞軟件的人至少要學習一點計算機體系結(jié)構(gòu)和電氣工程的知識才算是明智的。硬件的一次大動蕩,消比如費者級的量子計算機的出現(xiàn)將會改變軟件工程的一切。
量子計算機仍然還有很長一段路要走,但對GPU的興趣在增加,同時朝著并行化的方向發(fā)展是即將到來的轉(zhuǎn)變。 CPU的速度近幾年來一直停滯不前,而在當時,對機器學習和“大數(shù)據(jù)”的渴望似乎已經(jīng)達到無可遏止的地步。隨著對大型數(shù)據(jù)集的處理需求與日俱增,OpenMP,OpenCL,Go,CUDA等其他并行處理語言和框架將繼續(xù)成為主流。為了在短期內(nèi)快速提高競爭力,顯著并行化將成為全面需求,而不僅僅局限在高性能的小眾應用領(lǐng)域,比如操作系統(tǒng),基礎設施以及視頻游戲等。
人人都在學編碼
網(wǎng)站無所不在。2017 Stack Overflow調(diào)查報告指出,約15%的專業(yè)軟件工程師正在“互聯(lián)網(wǎng)/Web服務”公司工作。美國勞工部預計Web開發(fā)的增長率比平均崗位需求增長速度高很多的情況仍將繼續(xù)(2014年到2024年間為24%)。鑒于其可視性,這個行業(yè)很大一部分的關(guān)注點都會落在“填補技能鴻溝”上面。編碼訓練營幾乎只教Web開發(fā),而Udemy、Udacity以及Coursera等類似市場上也充斥著Web開發(fā)的課程。
整個Web開發(fā)技術(shù)棧的自動化程度越來越高,入門級的新程序員大量涌入Web開發(fā)領(lǐng)域,這導致部分人預測軟件開發(fā)人員將會面臨一個“藍領(lǐng)”市場。有的人甚至更加激進一點,認為把這個產(chǎn)業(yè)推向藍領(lǐng)市場是大型科技公司設計的戰(zhàn)略。當然,其他人會說我們正朝著又一次泡沫破裂進發(fā)。
對特定技術(shù)需求的變化已經(jīng)不是新聞。技術(shù)的語言和框架總是會有此消彼長的情況。Web開發(fā)目前的化身(“JS為王”)的走勢最終會像2000年代早期的Web開發(fā)走勢一樣(還記得Flash嗎?)所不同的是,這次在當今流行的web開發(fā)框架上很多人都有著明確(且主要)的教育經(jīng)歷。在你決定給自己貼上“React開發(fā)者”標簽之前,請記住曾經(jīng)有人自認為是“Flash開發(fā)者”。如果把你的職業(yè)生涯吊死在一種語言、框架或者技術(shù)上無異于玩輪盤賭游戲。當然,要預測哪些技術(shù)還將繼續(xù)發(fā)展下去是相當困難的,但是如果你打算找個東西全力以赴的話,我建議可以按照Lindy效應(對易損的東西來說,每多活一天,都會縮短其壽命;相反的,對于不易損的東西來說,每多活一天,都將更拉長其存在壽命。)選出一些已經(jīng)經(jīng)受住了時間考驗的語言,比如C語言。
下一代人將具備一種事實上的技術(shù)素養(yǎng)水平,這是X世代乃至千禧世代所不具備的。其結(jié)果之一是,這些人將會使用下一代的CMS工具。這些工具會變得更好,年輕的工作者也會用得更好會更好地使用它們。隨著充滿渴望技能熟練的年輕人進入就業(yè)市場,這兩個因素的結(jié)合絕對會降低低水平的IT和web開發(fā)技能的價值。高中也在迎頭趕上,開始提供計算機科學和編程課程,一些受過良好教育的高中學生一旦畢業(yè)可能就會馬上以編程實習生的身份加入勞動大軍。
另外一大群的新人是MBA和數(shù)據(jù)分析師。一度由Excel主宰的崗位列表正在開始把SQL列為“具備更好”,甚至變成了“崗位要求”。諸如Tableau,SpotFire,SalesForce等基于Web的指標體系在繼續(xù)取代電子表格作為報表生成主要工具的地位。如果這種情況持續(xù)下去,更多的數(shù)據(jù)分析師將會開始學習如何直接使用SQL,因為這要比把數(shù)據(jù)導出到電子表格更加簡單。
想要超越同行在職場繼續(xù)往上爬的人正在網(wǎng)上學習數(shù)據(jù)庫和統(tǒng)計變成語言方面的課程。有了這些新技能之后,通過機器學習和統(tǒng)計庫的學習,他們就可以把自己定位成數(shù)據(jù)科學家了。走這條路的話看看Metis的課程就是很好的例子。
最后,獲得計算機科學和軟件工程學位的人數(shù)在不斷攀升。比如說,普渡大學報告說,其計算機課程課程的申請量在5年間已經(jīng)翻了一番??的螤柎髮W的計算機科學畢業(yè)生也出現(xiàn)了類似的爆發(fā)式增長。鑒于軟件的發(fā)展和普及,這種趨勢并不令人驚訝。年輕人很難會想象出計算機在我們的未來發(fā)揮的作用會越來越小,所以為什么不去學習一些能提供工作保障的東西呢。
稀有與期望
現(xiàn)在這個行業(yè)的一個普遍的觀點是,你在大學四年計算機科學課程中受到的教育大多是不必要的東西。我已經(jīng)多次在編程訓練營的大廳里,web開發(fā)商店里聽到過這樣的說法,甚至像Eric Elliott這樣的業(yè)界知名人物都這么說。不過反方意見也很流行,有的甚至說“所有的程序員都應該拿到碩士學位”。
我的觀點跟Eric Elliott一樣,我認為學習編程應該有更多的選擇,而4年的學位未必許多人的最佳選擇。同時,我也同意William Bain的觀點,即跨編程領(lǐng)域的基礎技能對職業(yè)壽命至關(guān)重要,但是除了大學課程,目前你很難在其他地方找到這些信息。我曾經(jīng)寫過,作為長期職業(yè)生涯的基礎,有抱負的工程師應該學習什么樣的技能,并且解釋了為了幫助分享這些知識,我加入了Bradfield。
不同形態(tài)和規(guī)模的編碼學校正變得愈發(fā)的無處不在,這里面有很好的理由。你不用了解大O符號、晦澀的數(shù)據(jù)結(jié)構(gòu)以及算法細節(jié)也能學習編程。然而,盡管斯坦福大學的新鮮熱辣的畢業(yè)生確實也能跟剛出Hack Reactor出來的人競爭一些工作,但這種情況只在一個或兩個子行業(yè)中出現(xiàn)。編碼學校和訓練營的畢業(yè)生還沒有申請嵌入式系統(tǒng)、密碼/安全、機器人、網(wǎng)絡基礎設施或人工智能研究和開發(fā)方面的工作。但這些領(lǐng)域就像web開發(fā)一樣正在迅速發(fā)展。
一些與編程相關(guān)的技能已經(jīng)開始從“稀有技能”向“基準期望”過渡。相反,建立像AWS這樣強悍的引擎的工作已經(jīng)非常普遍的。推動技術(shù)發(fā)展的大公司——比如Amazon、Google、Facebook、Nvidia以及Space-X等——通常不會找“對JavaScript有基本了解”的人。 AWS每天為數(shù)十億用戶提供服務。為了支撐這種載荷量,AWS基礎設施工程師需要對網(wǎng)絡協(xié)議、計算機架構(gòu)有深入的了解,并且要有多年的相關(guān)經(jīng)驗。就像任何學科一樣,這里面有業(yè)余愛好者和工匠之別。
這些知名企業(yè)正在解決研究問題開發(fā)真正建立真正開拓能力疆界的系統(tǒng)。然而,即使在基本的編程技能越來越普遍的情況下,他們?nèi)匀缓茈y填補其中的空缺??梢跃帉懰惴▉眍A測基因序列變化從而帶來想要結(jié)果的人在未來將會非常值錢??梢詫πl(wèi)星、航天器和機械自動化編程的人將繼續(xù)受到高度重視。這些領(lǐng)域并不適合采取前端web開發(fā)那種“3個月密集學習計劃”的人才速成,至少還沒有像樣的成功先例。
因為計算機科學開頭是“計算機”這個詞,所以我們可以認為,到2025年,所有的年輕人天生就能理解計算機。不幸的是,計算機的普及并沒有造就對數(shù)學、計算機科學、網(wǎng)絡基礎設施、電氣工程等有著事實上的了解的新一代人。會用計算機跟計算研究是不一樣的。盡管數(shù)學自創(chuàng)始伊始就已經(jīng)存在,但十分精通統(tǒng)計學的人仍然相對較少,而計算機科學也是一樣的陳舊。 Euclid發(fā)明了好幾種算法,其中之一是在每次發(fā)出HTTPS請求時使用;每次我們登錄網(wǎng)站都要用HTTPS這一事實并不會自動讓任何人了解這些協(xié)議是如何工作的。
雙峰工資分布
更成熟的專業(yè)領(lǐng)域往往會有雙峰的工資分布模式:相對較少的從業(yè)人員賺走了相當多的錢,其中大多數(shù)人的工資都不錯,但并沒有處在前1%之列。美國全國法律就業(yè)組織收集的數(shù)據(jù)可以十分清晰地反映出這一現(xiàn)象。大部分法學畢業(yè)生的工資在45000美元到65000美元之間,這是很高的工資了,但很難跟“頂尖專業(yè)人士”聯(lián)系在一起。
法律專業(yè)的工資分布情況
我們往往會認為,所有的法律畢業(yè)生都有可能成為一家律師事務所的合伙人,但事實上他們有很多條路可以走:律師助理,文員,公設辯護人,法官,企業(yè)法律服務,合同寫作等等。計算機科學專業(yè)的畢業(yè)生也有很多選擇,從Web開發(fā)到嵌入式系統(tǒng)不等?;镜木幊碳寄軙^續(xù)成為一種期望,而不是“錦上添花”,我懷疑編程工作也會出現(xiàn)類似的分布情況。
盡管還會有一批程序員靠著不斷推進技術(shù)極限而賺到很多的錢,但是為新的以計算機為中心的經(jīng)濟提供動力的中級程序員隊伍將會越來越壯大。Web開發(fā)人員的平均工資肯定會隨著時間的推移而下降。說雖如此,但我懷疑“程序員”的崗位總量只會繼續(xù)增長。隨著人工的供給側(cè)開始滿足需求,希望我們將看到各種中級編程工作將會出現(xiàn)有益的繁榮。對于那些正在開辟無限可能的程序員來說,他們還將繼續(xù)拿到頂級的職業(yè)工資。
不管你是屬于哪一類的程序員,從事技術(shù)行業(yè)意味著終生都要繼續(xù)教育。如果你想成為第二類程序員,你就得加大投入,去學習如何創(chuàng)造機器,而不僅僅是使用機器。