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

最近在京西、阿貍、380等互聯(lián)網(wǎng)巨頭掌門人的迷之助攻下,早已被“996”工作制度壓得闖不過氣的程序員們集體“造反”了。

有技術(shù)人員在知名代碼托管平臺 GitHub 上發(fā)起了一個名為“996.ICU”的項目,以此抵制互聯(lián)網(wǎng)公司的超時工作,并得到了大批程序員的響應(yīng)(雖然并沒有什么卵用)。

當(dāng)然,并非只有大陸是程序員的“血汗工廠”。在硅谷,以互聯(lián)網(wǎng)為中心的“奮斗神學(xué)”也常年盛行,朝九晚五的工作者卻會被當(dāng)成Loser看待,天使投資人Gary Vaynerchuk還出版了一系列推崇極端工作的暢銷書,比如《Crush It!》,鼓勵“逐夢互聯(lián)網(wǎng)”的年輕開發(fā)者們每天工作18個小時。扎克伯格也曾告訴他的信徒們,創(chuàng)辦公司就像加入海豹突擊隊一樣。

去年,就有一位Uber工程師Joseph Thomas自殺,并在遺囑中將此歸咎于公司的高壓文化、長時間工作和不堪重負的心理壓力。

為什么996奮斗文化不再有程序員愿意買單?它們不曾經(jīng)和“下一代科技富翁”一樣是互聯(lián)網(wǎng)的光環(huán)和標(biāo)簽嗎?

問題的癥結(jié)或許在于,職業(yè)程序員(負責(zé)編輯代碼的軟件工程師)原本是一項智力活動,它的典型形象原本是那些在車庫中改變世界的開發(fā)者。但隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的極速膨脹,它已經(jīng)逐漸在向體力勞動轉(zhuǎn)移了。

對此,《黑客與畫家》的作者保羅?格雷厄姆,做過一個非常好的概括——

“……(你)只是一個負責(zé)實現(xiàn)領(lǐng)導(dǎo)意志的技術(shù)工人,職責(zé)就是根據(jù)規(guī)格說明書寫出代碼,其實與一個挖水溝的工人是一樣的,從這頭挖到那頭,僅此而已,從事的都是機械性的工作?!?/p>

顯然,只能在程序開發(fā)流程里充當(dāng)一種代碼工具的程序員,久而久之就會面臨非常殘酷的境地,那就是在勞動力市場上變得毫無議價能力:公司讓他做什么就得做什么,做不完就無止境地加班,不想做就只能離開。

而對于互聯(lián)網(wǎng)企業(yè)來講,當(dāng)核心的技術(shù)員工被強制加班而日漸損耗,他們沒有時間來思考“添加/刪減這個功能有沒有必要”“代碼是否優(yōu)美”“自己的技術(shù)理想”,企業(yè)的產(chǎn)品體驗也很難得到創(chuàng)新與升級。

當(dāng)然,推行“996機制”的目的是“合法”逼迫程序員們主動離職的除外。對于大部分不得不通過“996”來提高生產(chǎn)力的公司來說,這顯然是一個勞資關(guān)系的“雙輸”局面。

理想的模式是怎樣的?或許我們可以思考一個新的可能性:那就是將大量現(xiàn)在必須由人類程序員完成的機械工作交給AI,讓員工從枯燥而漫長的“體力勞動”中解脫出來,去從事更有價值的“智力工作”,進行有效的創(chuàng)造。

機器和人類相互配合,重新找回日趨達到邊界的開發(fā)效率,這可能嗎?至少谷歌大腦的最新研究成果正在試圖抵達它。

互聯(lián)網(wǎng)圈的勞動力革命:讓神經(jīng)網(wǎng)絡(luò)編寫“源代碼”

人類軟件工程師到底過著什么樣真實的日子呢?

頂尖互聯(lián)網(wǎng)公司的軟件工程師掙得多,大概已經(jīng)是共識了。被譽為程序員求職神器的招聘網(wǎng)站Triplebyte統(tǒng)計,硅谷的高級軟件工程師年薪的底薪常??梢赃_到14萬美元到17萬美元,折合人民幣約在92萬元到112萬元。還不包括許多額外的期權(quán)、分紅、福利等等。

在中國,高級工程師也可以輕輕松松進入一線城市的高收入群體。

而“光鮮”背后的代價就是,幾乎所有的程序員都在超時工作。一位Google的可靠度工程師從上午9點一直工作到半夜以后完全是常態(tài)。而得益于灣區(qū)的高房價,他們往往還需要花費3-4個小時的通勤時間在路上。

和工作時長一樣威脅程序員健康的,還有可怕的工作壓力。高速的工作節(jié)奏、嚴苛的項目截止日期,大量積壓的工作任務(wù),在處理對公司較為關(guān)鍵的事物時的焦慮,這些都是高薪光環(huán)背后獨有的“陰影”。許多硅谷程序員們都因此而進入漫長的“職業(yè)倦怠”期(崩潰狀態(tài))。

更為殘酷的是,一旦他們的工作效率出現(xiàn)衰退,“性價比”就會顯得極為“不劃算”,并早早結(jié)束自己的職業(yè)生涯(你可以管這叫優(yōu)化、裁員、996,whatever)。

既然大公司的程序員和流水線工人沒什么區(qū)別(嚴格按照設(shè)計稿和需求用代碼將產(chǎn)品一模一樣地實現(xiàn)出來),那么用AI將他們從超負荷的工作量中解脫出來,就是極為必須且有價值的了。

谷歌大腦最新放出的論文,就能夠讓神經(jīng)網(wǎng)絡(luò)來完成這項高價值的工作——源代碼編輯。具體是怎么實現(xiàn)的呢?

想要讓神經(jīng)網(wǎng)絡(luò)學(xué)會“編程”,首先要讓它了解人類程序員是如何完成這一工作的。谷歌大腦的解決方案就圍繞理解人類編寫代碼的過程(例如 GitHub 的 commit)展開,并使用深度神經(jīng)網(wǎng)絡(luò)模擬了整個編輯過程。

具體的過程是這樣的,研究人員收集了來自數(shù)千Python開發(fā)者的數(shù)百萬次細粒度的源代碼,構(gòu)建了一個大型編輯序列數(shù)據(jù)集,訓(xùn)練出了一個模型,試圖讓它學(xué)會“編程”。

效果顯示,在給定編輯序列的情況下,模型能知道后面該怎樣繼續(xù)「寫代碼」。這就和語言模型一樣,給定一小段話,模型就能接著用自然語言「編下去」。

比如給出兩個編輯序列(History A 和 History B)。經(jīng)過兩次編輯后,兩個序列都有了相同的編碼狀態(tài)(State 2),但History A正在給foo函數(shù)添加一個額外的參數(shù),History B正在從foo函數(shù)中移除第二個參數(shù)。

通過對原始狀態(tài)和編輯序列(Edits 1 & 2)的觀察,研究人員發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)“預(yù)測代碼”并知道后面怎么“編下去”,是完全可行的。

那么接下來的問題是,如何讓機器將預(yù)測結(jié)果以合理而優(yōu)雅的方式呈現(xiàn)出來呢?

研究人員為“機器程序員”考慮了兩種表征方式:顯式表征和隱式表征。

顯式表征由一個兩階段的 LSTM 網(wǎng)絡(luò)實現(xiàn),第一階段能夠編碼每一個狀態(tài)序列,第二階段會將前面已觀察到的編輯序列解碼出來,因此,實例化序列中每一次編輯的狀態(tài)結(jié)果都會被 “照貓畫虎”地將代碼呈現(xiàn)出來。

而為了不讓“AI程序員”的作品“反類犬”,還需要帶入隱式表征,這就要求,采用的隱式模型不僅能夠?qū)﹄[式表征進行操作,還能更好地捕捉到編輯內(nèi)容和編輯上下文之間的關(guān)系序列,進而更好地學(xué)習(xí)策略。

谷歌人員參考了Transformer的位置編碼與Multi-head Attention(MHA),改造了一個強大的隱式注意力模型,編碼器會將初始狀態(tài)和所有已知編輯編碼為隱藏向量,解碼器會將其解碼為每一個編輯的位置、以及給定位置的編輯內(nèi)容。

(隱式注意力模型)

結(jié)果顯示,改造后的隱式模型——雙向注意力模型,能夠在真實數(shù)據(jù)中實現(xiàn)高準(zhǔn)確率、精準(zhǔn)置信度和較好的可擴展性。它與顯式模型的協(xié)同工作幾乎可以解決所有任務(wù),甚至是那些涉及元字符和具有較長替換序列的任務(wù),這使機器洞察人類工程師的編程意圖、并在將來寫出“神似人類”的代碼成為了可能。

簡單來說這項研究的獨特之處就在于,谷歌大腦用一個神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)優(yōu)秀人類工程師的編程經(jīng)驗,不僅僅只是簡單地把需求套進去得到一堆結(jié)構(gòu)和功能相似的“靜態(tài)”代碼,而是去理解工程師的意圖、決策等等,并將其應(yīng)用到自己的編碼過程中去。

顯然,對于一線程序員和科技公司來說,這確實是個福音。因為他們總是需要去處理那些高度重復(fù)性、做不完的需求,而一個人的有效工作時間和精力總是有限的,機器的加入將直接降低程序員的工作量和疲勞感。

但這并不是急著樂觀的時候,就目前的研究現(xiàn)狀來看,距離“AI程序員”上崗還有很長一段路要走。

程序員們的“解放之路”,依然很長

一個又一個地完成開發(fā)任務(wù),顯然是乏味的。做不完只能加班,從這個角度看,程序員(以及高級工程師)們的生活,和養(yǎng)雞場的母雞,,并沒有什么本質(zhì)區(qū)別,反正每天都必須完成N個蛋的生產(chǎn)指標(biāo)。

不幸的是,“下蛋”只能由母雞完成,而“編程”這件事,目前也只能由人類來完成。原因也很簡單,“AI程序員”還只存在于設(shè)想和研究階段。

首先,機器編寫代碼的能力還遠遠不夠,真實效果有待驗證。

代碼其實是個“動詞”,它代表一種“動態(tài)”過程,需要很強的泛化能力才能完成。優(yōu)秀的開發(fā)者往往會根據(jù)新需求、新的網(wǎng)絡(luò)環(huán)境、bug的修復(fù)、最新的運營活動、公司的戰(zhàn)略意圖等等各種不斷變化的因素來構(gòu)建代碼,某種程度上這也是區(qū)分普通程序員與牛逼程序員之間的重要標(biāo)志。而讓機器根據(jù)過去的代碼序列來動態(tài)判斷和預(yù)測即將發(fā)生的編輯內(nèi)容,目前的性能完全不足以支撐實際應(yīng)用。

另外,即使性能達到了,機器也只能完成相對簡單的任務(wù),也就是那些流水線上的機械工作。如果想要開發(fā)出比較復(fù)雜和創(chuàng)新性的產(chǎn)品,那么優(yōu)秀的程序員以及高強度的工作還是不可避免的。

更關(guān)鍵的是,機器開發(fā)的成本也并不低。比如在谷歌大腦的這篇研究中,顯式模型的資源消耗就很大,而且隨著數(shù)據(jù)量的增加,它的成本也在指數(shù)級提升。比如長度為100的插入序列比真實數(shù)據(jù)集中的序列小十倍,但在運行時方面已經(jīng)存在一個數(shù)量級的差異。

換句話說,如果雇傭一個程序員就能搞定,企業(yè)為什么要花更多的錢和更高的風(fēng)險去使用AI呢?

也許現(xiàn)在思考這個問題還言之過早,但現(xiàn)實已經(jīng)很明顯,未來程序員想要獲得工作機會,是否愿意996已經(jīng)不是決定因素了,而是因為人比機器更便宜。

由此,我們從谷歌向程序員這樣的“高精尖”工種發(fā)起沖擊的研究動作背后,似乎可以感受到一絲不同尋常的味道。

關(guān)鍵不在996:互聯(lián)網(wǎng)公司到底怎么了?

在這場 “反對996”的全球風(fēng)波背后,重點或許不在于“996”是否合情合理合法,而是直面一個問題,互聯(lián)網(wǎng)公司們到底都怎么了?

我們來做一道簡單論證題。

已知:

很長一段時間內(nèi),程序員的高工作強度是由“高薪水+高預(yù)期+技術(shù)理想”共同買單的;

高薪水源自于互聯(lián)網(wǎng)公司的高估值;

高預(yù)期(股票、期權(quán)、分紅、理想)等由互聯(lián)網(wǎng)上市、融資等商業(yè)模式的完成來實現(xiàn)兌付。

那么,在無法坐實估值的大資本環(huán)境下,互聯(lián)網(wǎng)企業(yè)回歸正常的估值空間,程序員的勞動“薪資”應(yīng)該如何兌付?

過去十年互聯(lián)網(wǎng)企業(yè)的奇跡般增長,都是在這樣的“一夜實現(xiàn)創(chuàng)富夢”的故事下完成的。在普遍不盈利甚至找不到賺錢方式的,就能拿到大筆資金,以期“以小博大”。在行業(yè)繁榮之際,包括生產(chǎn)力核心的程序員們,都對于“奮斗文化”也保持著一定程度的沉默,甚至默認這是合理的。

但現(xiàn)實是,互聯(lián)網(wǎng)的產(chǎn)業(yè)鏈和商業(yè)規(guī)則已經(jīng)大變樣了?;ヂ?lián)網(wǎng)企業(yè)的估值再也不是“賭博游戲”,而開始與傳統(tǒng)實體拉平(效率優(yōu)勢不再),甚至由于長期的泡沫顯得略有些貴了(高薪酬的低性價比)。在新的故事背景下, 隨著企業(yè)IPO/融資而快速實現(xiàn)“財務(wù)自由”的神話開始變得遙遙無期,勞動者自然會強調(diào)現(xiàn)貨兌付。這也是為什么,關(guān)于“996機制”的討論總是圍繞“有無加班費”展開。

有網(wǎng)友調(diào)侃,“996的工資構(gòu)成是10%的人民幣和90%的福氣”。以前這叫“硅谷夢”,現(xiàn)在卻顯得有點搞笑。

時代變了,一方面?zhèn)鹘y(tǒng)互聯(lián)網(wǎng)企業(yè)“靠流量變現(xiàn)”的增長模式再也走不下去了,資本玩法已經(jīng)到了窮途末路(主要是沒錢了)?;ヂ?lián)網(wǎng)企業(yè)想要生存下去,不能再靠便宜的價格(因為補貼不起),而是依靠創(chuàng)新,依靠健康的盈利模式,依靠低勞動力價格的成本優(yōu)勢。

但是,一個極盡可能“壓榨”程序員剩余價值的企業(yè),一個員工無法有充足的時間思考、優(yōu)化的工作環(huán)境,真的能誕生出創(chuàng)新產(chǎn)品嗎?答案顯然是否定的。

另一方面,無論員工或政府,都在“強迫”科技公司打消“以壓榨換效率”的想法。新一代的員工希望能夠開放自由地工作,而非像騾馬一樣常年忍受高強度的工作,以此換來的高薪酬被認為是不值得的。而不少政府也開始介入,英國就打算設(shè)立新的監(jiān)管機構(gòu),來逐步結(jié)束科技公司“自我監(jiān)管”時代,保障高技術(shù)員工的權(quán)益。

“人力成本空間”日漸縮小,將主意打到機器身上就非常地順理成章、喜聞樂見了。

程序員的職業(yè)未來會怎樣?

當(dāng)然,有一部分“斯德哥爾摩”程序員可能會因此感到緊張。畢竟機器較之人類,在忍耐和生產(chǎn)效率上,是有過之而無不及。別說996了,只要舍得掏電費,這可是007(早0點到晚0點一周七天)模式都能干的“編程怪物”!

先別急著恐慌,擔(dān)心以后連“996”的機會都沒了,引入AI對于大部分程序員來說,更真實的場景可能是這樣的:

首先,大部分機械的工作都會在機器的幫助下更高效率地完成?;ヂ?lián)網(wǎng)企業(yè)要通過越來越多的運營活動實現(xiàn)營收,程序員的任務(wù)也會越來越流程化,而AI可以比較高效地完成基礎(chǔ)源代碼開發(fā),替代這部分機械勞動,緩解開發(fā)者的工作壓力。

同時,軟件工程師的職位重心開始向創(chuàng)造力和興趣轉(zhuǎn)移。過去的產(chǎn)業(yè)膨脹器,很多人選擇從事變成工作只不過是為了一份高的薪水和光環(huán),經(jīng)過幾個月的培訓(xùn)就能上崗,但對于鉆研技術(shù)、產(chǎn)品創(chuàng)新毫無興趣。未來,這種經(jīng)過短期培訓(xùn)就能上手的低技能程序員崗位都會被機器替代,而高技能、高創(chuàng)造性的工程師的價值,則會史無前例地提高,自然也就不必每天在電腦前枯坐十幾個小時。

這樣,程序員這個職業(yè)本身的“新陳代謝”也會減慢, 職業(yè)生命隨之延長。

在很長一段時間內(nèi),快速的技術(shù)更新和高強度的工作壓力,使得互聯(lián)網(wǎng)企業(yè)更愿意招收那些年輕的開發(fā)者。但他們的職業(yè)生涯很快就會到達瓶頸,開發(fā)速度開始慢下來(盡管實務(wù)經(jīng)驗也在增長),但由于機械工作只會越來越多,就會被更年輕的勞動者所取代,進而被公司“優(yōu)化”掉。

如果把那些損耗型、體力型的工作統(tǒng)統(tǒng)丟給機器去做,顯然程序員們的價值就不再是產(chǎn)出代碼的“生產(chǎn)工具”,考核標(biāo)準(zhǔn)也不再是是否忠實有效地完成了KPI,而是“自由意志”和創(chuàng)造思維的體現(xiàn)。

從這個角度看,AI消融的是那些非創(chuàng)造性的工作壁壘,對于早已疲憊不堪的程序員群體來說,對技術(shù)的期待應(yīng)該會遠遠大于被技術(shù)淘汰的恐懼。因為唯有如此,才能從胡蘿卜加大棒的“騾子”命運中逃離出來,去追尋工作和生活的樂趣與價值。

用一句老掉牙的話來說,工作也好,生活也好,讓我們給歲月以文明,而不是給文明以歲月。

免責(zé)聲明:此文內(nèi)容為第三方自媒體作者發(fā)布的觀察或評論性文章,所有文字和圖片版權(quán)歸作者所有,且僅代表作者個人觀點,與極客網(wǎng)無關(guān)。文章僅供讀者參考,并請自行核實相關(guān)內(nèi)容。投訴郵箱:editor@fromgeek.com。

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2019-04-16
谷歌大腦教AI寫代碼,是不是為了取代程序員?
在硅谷,以互聯(lián)網(wǎng)為中心的“奮斗神學(xué)”也常年盛行,朝九晚五的工作者卻會被當(dāng)成Loser看待,天使投資人GaryVaynerchuk還出版了一系列推崇極端工作的暢銷書,比如《CrushIt!》,鼓勵“

長按掃碼 閱讀全文