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