代碼自動生成Codex引發(fā)程序員恐慌?OpenAI:不信謠,不傳謠
隨著程序員不斷解放各個(gè)純機(jī)械勞動的領(lǐng)域,現(xiàn)在失業(yè)的終于輪到程序員自己了嗎?隨著 OpenAI 發(fā)布了強(qiáng)力代碼自動生成模型 Codex,這種問題始終困擾著大家,但程序員失業(yè)那天也許還要很遠(yuǎn)很遠(yuǎn)。
今年夏天,人工智能公司 OpenAI 發(fā)布了 Codex,只需簡單的提示就可以用自然語言自動編寫軟件代碼。
也就是說,你可以作為產(chǎn)品經(jīng)理,給 Codex 提出各種需求,他就會給你生成一份代碼。
Codex 基于 GPT-3 進(jìn)行訓(xùn)練,而 GPT-3 使用了在 2019 年之前對互聯(lián)網(wǎng)上幾乎所有公開的書面文本進(jìn)行訓(xùn)練,所以它對于自然語言是有一定理解能力的。
關(guān)于 Codex,最常見的問題是「人類程序員會被它取代嗎?就像其他手工業(yè)被消滅掉一樣?!?/p>
因?yàn)楦鱾€(gè)國家在培訓(xùn)新的軟件開發(fā)人員上都不遺余力,如果一下子人類程序員就被取代了,那投入的幾十億美元瞬間就成為泡影,所有的努力也都會付之東流。
如果你是一名軟件開發(fā)人員,或者你已經(jīng)高價(jià)聘請了許多程序員,那你大可以放心。盡管 Codex 比人類更強(qiáng)大、高效和專注,但要說取代,可能那一天還遠(yuǎn)遠(yuǎn)沒有到來。
一個(gè)資深程序員分享了一段經(jīng)歷,幾年前他與美國一家大型咨詢公司的一位高級數(shù)據(jù)科學(xué)家(工資非常高)和軟件開發(fā)人員一起參與了一個(gè)政府?dāng)?shù)據(jù)庫項(xiàng)目。他們的任務(wù)是了解一個(gè)國家機(jī)構(gòu)如何使用其數(shù)據(jù)庫向各組織分配贈款,然后就如何改進(jìn)數(shù)據(jù)庫向該機(jī)構(gòu)提出建議。
當(dāng)他第一次開始與開發(fā)人員同事合作時(shí),對程序員的工作方式有很多先入為主的想法,例如會想象程序員整天蜷縮在筆記本電腦前敲打代碼,或者用 Mathematica 編寫精彩的公式來幫助我們更好地理解客戶的數(shù)據(jù)庫。或者在 windows 上用漂亮的思維方式瘋狂地涂鴉,回歸分析,以及在屏幕前花費(fèi)大量時(shí)間,編寫數(shù)千行 Python 代碼。
然而事實(shí)與想象截然相反,程序員與客戶坐下來面對面交流,花幾天時(shí)間了解他們的贈款發(fā)放流程,然后開始一系列數(shù)據(jù)約定,還包括與個(gè)別工作人員、利益相關(guān)者、機(jī)構(gòu)成員等的會晤。
經(jīng)過幾個(gè)月的這類工作,他終于坐下來分析該機(jī)構(gòu)的數(shù)據(jù),使用R和各種圖形庫。實(shí)際的寫代碼和分析只花了整整兩天的時(shí)間。他的分析結(jié)果很準(zhǔn)確,他的程序運(yùn)行得很好,客戶也非常激動。
所以說實(shí)際上編寫代碼和運(yùn)行分析只占用了程序員大約1% 的時(shí)間。剩下的時(shí)間用于與客戶合作,了解他們的問題,確定要使用的正確軟件和數(shù)學(xué)模型,收集和清理實(shí)際數(shù)據(jù),并展示結(jié)果。在大多數(shù)情況下,寫代碼和數(shù)學(xué)本身是軟件開發(fā)過程中很小的、幾乎是死記硬背的一部分。
當(dāng)然1% 屬于比較極端的例子。根據(jù) TechRepublic 的說法,實(shí)際編寫代碼通常只占軟件開發(fā)人員時(shí)間的不到一半,在許多情況下,只占 20%。
這意味著,即使像 Codex 這樣的系統(tǒng)工作得很好,它們也將取代典型人類軟件開發(fā)人員最多一半的工作,而且通常不到四分之一。除非有人訓(xùn)練 Codex 與客戶坐下來,贏得他們的信任,理解他們的問題,并將這些問題分解為可解決的組件,否則 Codex 很難威脅到熟練的開發(fā)人員。
也就是說,一個(gè)非編碼人員能夠坐下來與 Codex 合作,編寫一份規(guī)格表,并制作出一個(gè)軟件的日子還很遙遠(yuǎn)。
OpenAI 的研究人員在公布 Codex 的論文中也承認(rèn)了這一點(diǎn)。
用他們的話來說就是,工程師不會花一整天的時(shí)間寫代碼,相反,他們會把大部分時(shí)間花在諸如與同事討論、編寫設(shè)計(jì)規(guī)范和升級現(xiàn)有軟件技術(shù)棧之類的任務(wù)上。
Codex 的創(chuàng)建者認(rèn)為該系統(tǒng)可以讓開發(fā)人員更快地編寫好代碼。如果說與替代程序員這件事有什么不同的話,他們認(rèn)為自動化與軟件開發(fā)相關(guān)的繁重工作將為更多的人服務(wù)。
它也可能創(chuàng)造一個(gè)新的專業(yè):提示工程(prompt engineering),這是一個(gè)制作文本提示的復(fù)雜過程,讓 Codex 等人工智能系統(tǒng)發(fā)揮其魔力。
但其他人則不那么肯定。
Wired 雜志的記者 Steven Levy 認(rèn)為,Codex 可能不會作為一個(gè)代碼生成工具,而是一個(gè)輔助代碼生成工具。如果這能讓每個(gè)開發(fā)者的效率大大提高,公司可能會決定,他們可以用更少的開發(fā)者。如果一個(gè)項(xiàng)目以前可能需要 10 名開發(fā)人員,那么如果這些開發(fā)人員得到 Codex 或類似 AI 系統(tǒng)的協(xié)助,則可能只需要 8 名開發(fā)人員,從而導(dǎo)致兩個(gè)工作崗位的凈損失。
也許有一天這是真的,但那一天不會很快到來。
考慮到 2020 年全球?qū)﹂_發(fā)者的需求增長了 25%,盡管出現(xiàn)了流感大流行,但像 Codex 這樣的系統(tǒng)對就業(yè)的真正威脅似乎很小,至少目前是這樣。如果說有什么區(qū)別的話,允許頂級公司用更少的開發(fā)人員生存可能會使這些開發(fā)人員能夠?yàn)橹卸斯净虺鮿?chuàng)公司所用,從而在技術(shù)生態(tài)系統(tǒng)的各個(gè)層面上都能產(chǎn)生更好的軟件。
目前,初創(chuàng)公司往往難以吸引有才華的開發(fā)人員。如果谷歌和 facebook 在世界范圍內(nèi)挖走的頂尖開發(fā)者更少,那么新興的創(chuàng)新型公司可能會擁有更多的頂尖人才。
同樣重要的是,所有這些都是基于這樣一個(gè)想法,即 Codex 或類似它的系統(tǒng)可以像人類軟件開發(fā)人員一樣編寫代碼。
而目前,他還遠(yuǎn)遠(yuǎn)沒有那個(gè)能力。
OpenAI 承認(rèn),在發(fā)布時(shí),Codex 的代碼有 63% 的時(shí)間存在錯(cuò)誤或根本無法工作。即使在 37% 的時(shí)間里編寫完美的代碼對機(jī)器來說也是一件困難的事。但是,一個(gè)非編碼人員能夠坐下來與 Codex 合作,編寫一份規(guī)格表,并完成一個(gè)軟件工作件的那一天仍然遙不可及。
Github 推出的 Copilot 就是由 Codex 提供的技術(shù)支持,工作方式類似于代碼自動更正,提供代碼來完成整個(gè)功能,或者作為開發(fā)人員自動填充重復(fù)代碼。
不過在航空業(yè),副駕駛(Copilot)是一名完全合格的飛行員,如果需要,他可以從機(jī)長手中接管飛機(jī)的控制權(quán)。另一方面,自動駕駛儀可以在某些情況下自動駕駛飛機(jī)(如直線和水平巡航),但在情況不穩(wěn)定時(shí)(如在惡劣天氣著陸時(shí)),必須將控制權(quán)交給人類飛行員。
GitHub 的副駕駛更像是自動駕駛儀,而不是真正的副駕駛。當(dāng)任務(wù)簡單且重復(fù)時(shí),它可以自己編寫代碼,但一旦任務(wù)變得更復(fù)雜,就需要人工干預(yù)。
Github 在其關(guān)于副產(chǎn)品的頁面上說:“作為開發(fā)人員,你永遠(yuǎn)是負(fù)責(zé)人。”
在給定的商業(yè)航班上,飛機(jī)可能 90% 的時(shí)間處于自動駕駛狀態(tài)。但至關(guān)重要的是人類飛行員總是在監(jiān)督系統(tǒng)。如果沒有他們 10% 的貢獻(xiàn),飛機(jī)就會頻繁墜毀。
除非 Codex 在未來幾年內(nèi)大幅改善,否則人類軟件開發(fā)人員的工作是安全的。如果你是一名開發(fā)人員,復(fù)習(xí)一下諸如快速工程之類的技能,并申請使用諸如 Copilot 和 Codex 之類的系統(tǒng),這樣你就可以獲得使用它們的早期經(jīng)驗(yàn)。
像 Codex 這樣的系統(tǒng)在與熟練的開發(fā)人員較量時(shí)可能會失敗。
但隨著 Codex 及其同類產(chǎn)品的改進(jìn),通過將自身技能與先進(jìn)人工智能相結(jié)合很可能成為一股強(qiáng)大的、也許是不可阻擋的技術(shù)力量。