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