谷歌大腦教AI寫代碼,是不是為了取代程序員?

腦極體
AI消融的是那些非創(chuàng)造性的工作壁壘,對(duì)于早已疲憊不堪的程序員群體來說,對(duì)技術(shù)的期待應(yīng)該會(huì)遠(yuǎn)遠(yuǎn)大于被技術(shù)淘汰的恐懼。因?yàn)槲ㄓ腥绱?,才能從胡蘿卜加大棒的“騾子”命運(yùn)中逃離出來,去追尋工作和生活的樂趣與價(jià)值。
  最近在京西、阿貍、380等互聯(lián)網(wǎng)巨頭掌門人的迷之助攻下,早已被“996”工作制度壓得闖不過氣的程序員們集體“造反”了。
 
 
  有技術(shù)人員在知名代碼托管平臺(tái)GitHub上發(fā)起了一個(gè)名為“996.ICU”的項(xiàng)目,以此抵制互聯(lián)網(wǎng)公司的超時(shí)工作,并得到了大批程序員的響應(yīng)(雖然并沒有什么卵用)。
 
  當(dāng)然,并非只有大陸是程序員的“血汗工廠”。在硅谷,以互聯(lián)網(wǎng)為中心的“奮斗神學(xué)”也常年盛行,朝九晚五的工作者卻會(huì)被當(dāng)成Loser看待,天使投資人Gary Vaynerchuk還出版了一系列推崇極端工作的暢銷書,比如《Crush It!》,鼓勵(lì)“逐夢(mèng)互聯(lián)網(wǎng)”的年輕開發(fā)者們每天工作18個(gè)小時(shí)。扎克伯格也曾告訴他的信徒們,創(chuàng)辦公司就像加入海豹突擊隊(duì)一樣。
 
  去年,就有一位Uber工程師Joseph Thomas自殺,并在遺囑中將此歸咎于公司的高壓文化、長(zhǎng)時(shí)間工作和不堪重負(fù)的心理壓力。
 
  為什么996奮斗文化不再有程序員愿意買單?它們不曾經(jīng)和“下一代科技富翁”一樣是互聯(lián)網(wǎng)的光環(huán)和標(biāo)簽嗎?
 
  問題的癥結(jié)或許在于,職業(yè)程序員(負(fù)責(zé)編輯代碼的軟件工程師)原本是一項(xiàng)智力活動(dòng),它的典型形象原本是那些在車庫(kù)中改變世界的開發(fā)者。但隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的極速膨脹,它已經(jīng)逐漸在向體力勞動(dòng)轉(zhuǎn)移了。
 
  對(duì)此,《黑客與畫家》的作者保羅?格雷厄姆,做過一個(gè)非常好的概括——
 
  “……(你)只是一個(gè)負(fù)責(zé)實(shí)現(xiàn)領(lǐng)導(dǎo)意志的技術(shù)工人,職責(zé)就是根據(jù)規(guī)格說明書寫出代碼,其實(shí)與一個(gè)挖水溝的工人是一樣的,從這頭挖到那頭,僅此而已,從事的都是機(jī)械性的工作。”
 
 
  顯然,只能在程序開發(fā)流程里充當(dāng)一種代碼工具的程序員,久而久之就會(huì)面臨非常殘酷的境地,那就是在勞動(dòng)力市場(chǎng)上變得毫無議價(jià)能力:公司讓他做什么就得做什么,做不完就無止境地加班,不想做就只能離開。
 
  而對(duì)于互聯(lián)網(wǎng)企業(yè)來講,當(dāng)核心的技術(shù)員工被強(qiáng)制加班而日漸損耗,他們沒有時(shí)間來思考“添加/刪減這個(gè)功能有沒有必要”“代碼是否優(yōu)美”“自己的技術(shù)理想”,企業(yè)的產(chǎn)品體驗(yàn)也很難得到創(chuàng)新與升級(jí)。
 
  當(dāng)然,推行“996機(jī)制”的目的是“合法”逼迫程序員們主動(dòng)離職的除外。對(duì)于大部分不得不通過“996”來提高生產(chǎn)力的公司來說,這顯然是一個(gè)勞資關(guān)系的“雙輸”局面。
 
  理想的模式是怎樣的?或許我們可以思考一個(gè)新的可能性:那就是將大量現(xiàn)在必須由人類程序員完成的機(jī)械工作交給AI,讓員工從枯燥而漫長(zhǎng)的“體力勞動(dòng)”中解脫出來,去從事更有價(jià)值的“智力工作”,進(jìn)行有效的創(chuàng)造。
 
  機(jī)器和人類相互配合,重新找回日趨達(dá)到邊界的開發(fā)效率,這可能嗎?至少谷歌大腦的最新研究成果正在試圖抵達(dá)它。
 
  互聯(lián)網(wǎng)圈的勞動(dòng)力革命:讓神經(jīng)網(wǎng)絡(luò)編寫“源代碼”
 
  人類軟件工程師到底過著什么樣真實(shí)的日子呢?
 
  頂尖互聯(lián)網(wǎng)公司的軟件工程師掙得多,大概已經(jīng)是共識(shí)了。被譽(yù)為程序員求職神器的招聘網(wǎng)站Triplebyte統(tǒng)計(jì),硅谷的高級(jí)軟件工程師年薪的底薪常??梢赃_(dá)到14萬美元到17萬美元,折合人民幣約在92萬元到112萬元。還不包括許多額外的期權(quán)、分紅、福利等等。
 
  在中國(guó),高級(jí)工程師也可以輕輕松松進(jìn)入一線城市的高收入群體。
 
 
  而“光鮮”背后的代價(jià)就是,幾乎所有的程序員都在超時(shí)工作。一位Google的可靠度工程師從上午9點(diǎn)一直工作到半夜以后完全是常態(tài)。而得益于灣區(qū)的高房?jī)r(jià),他們往往還需要花費(fèi)3-4個(gè)小時(shí)的通勤時(shí)間在路上。
 
  和工作時(shí)長(zhǎng)一樣威脅程序員健康的,還有可怕的工作壓力。高速的工作節(jié)奏、嚴(yán)苛的項(xiàng)目截止日期,大量積壓的工作任務(wù),在處理對(duì)公司較為關(guān)鍵的事物時(shí)的焦慮,這些都是高薪光環(huán)背后獨(dú)有的“陰影”。許多硅谷程序員們都因此而進(jìn)入漫長(zhǎng)的“職業(yè)倦怠”期(崩潰狀態(tài))。
 
 
  更為殘酷的是,一旦他們的工作效率出現(xiàn)衰退,“性價(jià)比”就會(huì)顯得極為“不劃算”,并早早結(jié)束自己的職業(yè)生涯(你可以管這叫優(yōu)化、裁員、996,whatever)。
 
  既然大公司的程序員和流水線工人沒什么區(qū)別(嚴(yán)格按照設(shè)計(jì)稿和需求用代碼將產(chǎn)品一模一樣地實(shí)現(xiàn)出來),那么用AI將他們從超負(fù)荷的工作量中解脫出來,就是極為必須且有價(jià)值的了。
 
  谷歌大腦最新放出的論文,就能夠讓神經(jīng)網(wǎng)絡(luò)來完成這項(xiàng)高價(jià)值的工作——源代碼編輯。具體是怎么實(shí)現(xiàn)的呢?
 
  想要讓神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)“編程”,首先要讓它了解人類程序員是如何完成這一工作的。谷歌大腦的解決方案就圍繞理解人類編寫代碼的過程(例如GitHub的commit)展開,并使用深度神經(jīng)網(wǎng)絡(luò)模擬了整個(gè)編輯過程。
 
  具體的過程是這樣的,研究人員收集了來自數(shù)千Python開發(fā)者的數(shù)百萬次細(xì)粒度的源代碼,構(gòu)建了一個(gè)大型編輯序列數(shù)據(jù)集,訓(xùn)練出了一個(gè)模型,試圖讓它學(xué)會(huì)“編程”。
 
  效果顯示,在給定編輯序列的情況下,模型能知道后面該怎樣繼續(xù)「寫代碼」。這就和語(yǔ)言模型一樣,給定一小段話,模型就能接著用自然語(yǔ)言「編下去」。
 
  比如給出兩個(gè)編輯序列(History A和History B)。經(jīng)過兩次編輯后,兩個(gè)序列都有了相同的編碼狀態(tài)(State 2),但History A正在給foo函數(shù)添加一個(gè)額外的參數(shù),History B正在從foo函數(shù)中移除第二個(gè)參數(shù)。
 
  通過對(duì)原始狀態(tài)和編輯序列(Edits 1&2)的觀察,研究人員發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)“預(yù)測(cè)代碼”并知道后面怎么“編下去”,是完全可行的。
 
 
  那么接下來的問題是,如何讓機(jī)器將預(yù)測(cè)結(jié)果以合理而優(yōu)雅的方式呈現(xiàn)出來呢?
 
  研究人員為“機(jī)器程序員”考慮了兩種表征方式:顯式表征和隱式表征。
 
  顯式表征由一個(gè)兩階段的LSTM網(wǎng)絡(luò)實(shí)現(xiàn),第一階段能夠編碼每一個(gè)狀態(tài)序列,第二階段會(huì)將前面已觀察到的編輯序列解碼出來,因此,實(shí)例化序列中每一次編輯的狀態(tài)結(jié)果都會(huì)被“照貓畫虎”地將代碼呈現(xiàn)出來。
 
 
  而為了不讓“AI程序員”的作品“反類犬”,還需要帶入隱式表征,這就要求,采用的隱式模型不僅能夠?qū)﹄[式表征進(jìn)行操作,還能更好地捕捉到編輯內(nèi)容和編輯上下文之間的關(guān)系序列,進(jìn)而更好地學(xué)習(xí)策略。
 
  谷歌人員參考了Transformer的位置編碼與Multi-head Attention(MHA),改造了一個(gè)強(qiáng)大的隱式注意力模型,編碼器會(huì)將初始狀態(tài)和所有已知編輯編碼為隱藏向量,解碼器會(huì)將其解碼為每一個(gè)編輯的位置、以及給定位置的編輯內(nèi)容。
 
 
  (隱式注意力模型)
 
  結(jié)果顯示,改造后的隱式模型——雙向注意力模型,能夠在真實(shí)數(shù)據(jù)中實(shí)現(xiàn)高準(zhǔn)確率、精準(zhǔn)置信度和較好的可擴(kuò)展性。它與顯式模型的協(xié)同工作幾乎可以解決所有任務(wù),甚至是那些涉及元字符和具有較長(zhǎng)替換序列的任務(wù),這使機(jī)器洞察人類工程師的編程意圖、并在將來寫出“神似人類”的代碼成為了可能。
 
  簡(jiǎn)單來說這項(xiàng)研究的獨(dú)特之處就在于,谷歌大腦用一個(gè)神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)優(yōu)秀人類工程師的編程經(jīng)驗(yàn),不僅僅只是簡(jiǎn)單地把需求套進(jìn)去得到一堆結(jié)構(gòu)和功能相似的“靜態(tài)”代碼,而是去理解工程師的意圖、決策等等,并將其應(yīng)用到自己的編碼過程中去。
 
  顯然,對(duì)于一線程序員和科技公司來說,這確實(shí)是個(gè)福音。因?yàn)樗麄兛偸切枰ヌ幚砟切└叨戎貜?fù)性、做不完的需求,而一個(gè)人的有效工作時(shí)間和精力總是有限的,機(jī)器的加入將直接降低程序員的工作量和疲勞感。
 
  但這并不是急著樂觀的時(shí)候,就目前的研究現(xiàn)狀來看,距離“AI程序員”上崗還有很長(zhǎng)一段路要走。
 
  程序員們的“解放之路”,依然很長(zhǎng)
 
  一個(gè)又一個(gè)地完成開發(fā)任務(wù),顯然是乏味的。做不完只能加班,從這個(gè)角度看,程序員(以及高級(jí)工程師)們的生活,和養(yǎng)雞場(chǎng)的母雞,,并沒有什么本質(zhì)區(qū)別,反正每天都必須完成N個(gè)蛋的生產(chǎn)指標(biāo)。
 
  不幸的是,“下蛋”只能由母雞完成,而“編程”這件事,目前也只能由人類來完成。原因也很簡(jiǎn)單,“AI程序員”還只存在于設(shè)想和研究階段。
 
  首先,機(jī)器編寫代碼的能力還遠(yuǎn)遠(yuǎn)不夠,真實(shí)效果有待驗(yàn)證。
 
  代碼其實(shí)是個(gè)“動(dòng)詞”,它代表一種“動(dòng)態(tài)”過程,需要很強(qiáng)的泛化能力才能完成。優(yōu)秀的開發(fā)者往往會(huì)根據(jù)新需求、新的網(wǎng)絡(luò)環(huán)境、bug的修復(fù)、最新的運(yùn)營(yíng)活動(dòng)、公司的戰(zhàn)略意圖等等各種不斷變化的因素來構(gòu)建代碼,某種程度上這也是區(qū)分普通程序員與牛逼程序員之間的重要標(biāo)志。而讓機(jī)器根據(jù)過去的代碼序列來動(dòng)態(tài)判斷和預(yù)測(cè)即將發(fā)生的編輯內(nèi)容,目前的性能完全不足以支撐實(shí)際應(yīng)用。
 
  另外,即使性能達(dá)到了,機(jī)器也只能完成相對(duì)簡(jiǎn)單的任務(wù),也就是那些流水線上的機(jī)械工作。如果想要開發(fā)出比較復(fù)雜和創(chuàng)新性的產(chǎn)品,那么優(yōu)秀的程序員以及高強(qiáng)度的工作還是不可避免的。
 
 
  更關(guān)鍵的是,機(jī)器開發(fā)的成本也并不低。比如在谷歌大腦的這篇研究中,顯式模型的資源消耗就很大,而且隨著數(shù)據(jù)量的增加,它的成本也在指數(shù)級(jí)提升。比如長(zhǎng)度為100的插入序列比真實(shí)數(shù)據(jù)集中的序列小十倍,但在運(yùn)行時(shí)方面已經(jīng)存在一個(gè)數(shù)量級(jí)的差異。
 
  換句話說,如果雇傭一個(gè)程序員就能搞定,企業(yè)為什么要花更多的錢和更高的風(fēng)險(xiǎn)去使用AI呢?
 
  也許現(xiàn)在思考這個(gè)問題還言之過早,但現(xiàn)實(shí)已經(jīng)很明顯,未來程序員想要獲得工作機(jī)會(huì),是否愿意996已經(jīng)不是決定因素了,而是因?yàn)槿吮葯C(jī)器更便宜。
 
  由此,我們從谷歌向程序員這樣的“高精尖”工種發(fā)起沖擊的研究動(dòng)作背后,似乎可以感受到一絲不同尋常的味道。
 
  關(guān)鍵不在996:互聯(lián)網(wǎng)公司到底怎么了?
 
  在這場(chǎng)“反對(duì)996”的全球風(fēng)波背后,重點(diǎn)或許不在于“996”是否合情合理合法,而是直面一個(gè)問題,互聯(lián)網(wǎng)公司們到底都怎么了?
 
  我們來做一道簡(jiǎn)單論證題。
 
  已知:
 
  很長(zhǎng)一段時(shí)間內(nèi),程序員的高工作強(qiáng)度是由“高薪水+高預(yù)期+技術(shù)理想”共同買單的;
 
  高薪水源自于互聯(lián)網(wǎng)公司的高估值;
 
  高預(yù)期(股票、期權(quán)、分紅、理想)等由互聯(lián)網(wǎng)上市、融資等商業(yè)模式的完成來實(shí)現(xiàn)兌付。
 
  那么,在無法坐實(shí)估值的大資本環(huán)境下,互聯(lián)網(wǎng)企業(yè)回歸正常的估值空間,程序員的勞動(dòng)“薪資”應(yīng)該如何兌付?
 
  過去十年互聯(lián)網(wǎng)企業(yè)的奇跡般增長(zhǎng),都是在這樣的“一夜實(shí)現(xiàn)創(chuàng)富夢(mèng)”的故事下完成的。在普遍不盈利甚至找不到賺錢方式的,就能拿到大筆資金,以期“以小博大”。在行業(yè)繁榮之際,包括生產(chǎn)力核心的程序員們,都對(duì)于“奮斗文化”也保持著一定程度的沉默,甚至默認(rèn)這是合理的。
 
  但現(xiàn)實(shí)是,互聯(lián)網(wǎng)的產(chǎn)業(yè)鏈和商業(yè)規(guī)則已經(jīng)大變樣了。互聯(lián)網(wǎng)企業(yè)的估值再也不是“賭博游戲”,而開始與傳統(tǒng)實(shí)體拉平(效率優(yōu)勢(shì)不再),甚至由于長(zhǎng)期的泡沫顯得略有些貴了(高薪酬的低性價(jià)比)。在新的故事背景下,隨著企業(yè)IPO/融資而快速實(shí)現(xiàn)“財(cái)務(wù)自由”的神話開始變得遙遙無期,勞動(dòng)者自然會(huì)強(qiáng)調(diào)現(xiàn)貨兌付。這也是為什么,關(guān)于“996機(jī)制”的討論總是圍繞“有無加班費(fèi)”展開。
 
  有網(wǎng)友調(diào)侃,“996的工資構(gòu)成是10%的人民幣和90%的福氣”。以前這叫“硅谷夢(mèng)”,現(xiàn)在卻顯得有點(diǎn)搞笑。
 
 
  時(shí)代變了,一方面?zhèn)鹘y(tǒng)互聯(lián)網(wǎng)企業(yè)“靠流量變現(xiàn)”的增長(zhǎng)模式再也走不下去了,資本玩法已經(jīng)到了窮途末路(主要是沒錢了)。互聯(lián)網(wǎng)企業(yè)想要生存下去,不能再靠便宜的價(jià)格(因?yàn)檠a(bǔ)貼不起),而是依靠創(chuàng)新,依靠健康的盈利模式,依靠低勞動(dòng)力價(jià)格的成本優(yōu)勢(shì)。
 
  但是,一個(gè)極盡可能“壓榨”程序員剩余價(jià)值的企業(yè),一個(gè)員工無法有充足的時(shí)間思考、優(yōu)化的工作環(huán)境,真的能誕生出創(chuàng)新產(chǎn)品嗎?答案顯然是否定的。
 
  另一方面,無論員工或政府,都在“強(qiáng)迫”科技公司打消“以壓榨換效率”的想法。新一代的員工希望能夠開放自由地工作,而非像騾馬一樣常年忍受高強(qiáng)度的工作,以此換來的高薪酬被認(rèn)為是不值得的。而不少政府也開始介入,英國(guó)就打算設(shè)立新的監(jiān)管機(jī)構(gòu),來逐步結(jié)束科技公司“自我監(jiān)管”時(shí)代,保障高技術(shù)員工的權(quán)益。
 
  “人力成本空間”日漸縮小,將主意打到機(jī)器身上就非常地順理成章、喜聞樂見了。
 
  程序員的職業(yè)未來會(huì)怎樣?
 
  當(dāng)然,有一部分“斯德哥爾摩”程序員可能會(huì)因此感到緊張。畢竟機(jī)器較之人類,在忍耐和生產(chǎn)效率上,是有過之而無不及。別說996了,只要舍得掏電費(fèi),這可是007(早0點(diǎn)到晚0點(diǎn)一周七天)模式都能干的“編程怪物”!
 
  先別急著恐慌,擔(dān)心以后連“996”的機(jī)會(huì)都沒了,引入AI對(duì)于大部分程序員來說,更真實(shí)的場(chǎng)景可能是這樣的:
 
  首先,大部分機(jī)械的工作都會(huì)在機(jī)器的幫助下更高效率地完成?;ヂ?lián)網(wǎng)企業(yè)要通過越來越多的運(yùn)營(yíng)活動(dòng)實(shí)現(xiàn)營(yíng)收,程序員的任務(wù)也會(huì)越來越流程化,而AI可以比較高效地完成基礎(chǔ)源代碼開發(fā),替代這部分機(jī)械勞動(dòng),緩解開發(fā)者的工作壓力。
 
  同時(shí),軟件工程師的職位重心開始向創(chuàng)造力和興趣轉(zhuǎn)移。過去的產(chǎn)業(yè)膨脹器,很多人選擇從事變成工作只不過是為了一份高的薪水和光環(huán),經(jīng)過幾個(gè)月的培訓(xùn)就能上崗,但對(duì)于鉆研技術(shù)、產(chǎn)品創(chuàng)新毫無興趣。未來,這種經(jīng)過短期培訓(xùn)就能上手的低技能程序員崗位都會(huì)被機(jī)器替代,而高技能、高創(chuàng)造性的工程師的價(jià)值,則會(huì)史無前例地提高,自然也就不必每天在電腦前枯坐十幾個(gè)小時(shí)。
 
 
  這樣,程序員這個(gè)職業(yè)本身的“新陳代謝”也會(huì)減慢,職業(yè)生命隨之延長(zhǎng)。
 
  在很長(zhǎng)一段時(shí)間內(nèi),快速的技術(shù)更新和高強(qiáng)度的工作壓力,使得互聯(lián)網(wǎng)企業(yè)更愿意招收那些年輕的開發(fā)者。但他們的職業(yè)生涯很快就會(huì)到達(dá)瓶頸,開發(fā)速度開始慢下來(盡管實(shí)務(wù)經(jīng)驗(yàn)也在增長(zhǎng)),但由于機(jī)械工作只會(huì)越來越多,就會(huì)被更年輕的勞動(dòng)者所取代,進(jìn)而被公司“優(yōu)化”掉。
 
  如果把那些損耗型、體力型的工作統(tǒng)統(tǒng)丟給機(jī)器去做,顯然程序員們的價(jià)值就不再是產(chǎn)出代碼的“生產(chǎn)工具”,考核標(biāo)準(zhǔn)也不再是是否忠實(shí)有效地完成了KPI,而是“自由意志”和創(chuàng)造思維的體現(xiàn)。
 
  從這個(gè)角度看,AI消融的是那些非創(chuàng)造性的工作壁壘,對(duì)于早已疲憊不堪的程序員群體來說,對(duì)技術(shù)的期待應(yīng)該會(huì)遠(yuǎn)遠(yuǎn)大于被技術(shù)淘汰的恐懼。因?yàn)槲ㄓ腥绱?,才能從胡蘿卜加大棒的“騾子”命運(yùn)中逃離出來,去追尋工作和生活的樂趣與價(jià)值。
 
  用一句老掉牙的話來說,工作也好,生活也好,讓我們給歲月以文明,而不是給文明以歲月。
THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論