天天看點

GitHub CEO:很快 AI 将能實作 80%的程式設計

作者:圖靈同學

如果從事後的角度看網際網路大廠的收購案例,我覺得以下幾個可以被稱為完美的例子:Google 收購了 YouTube 和 Android,Facebook 收購了 Instagram,位元組收購了 Musical.ly,以及微軟對 GitHub 的收購。

在如今的 AI 時代,微軟以 75 億美金的價格對 GitHub 的收購顯得更加突出,它既走在了 AI 的最前沿,也讓 GitHub 背後所代表的技術開發群體擔心有一天可能會被 AI 所取代。

最近,GitHub CEO Thomas Dohmke 與 Freethink 進行了一次對話。在這個訪談中,Thomas Dohmke 表示 Copilot 很快将能夠實作 80% 的代碼程式設計(Copilot will write 80% of code "sooner than later"),而現在這個數字大約在 50% 左右。

Thomas Dohmke 認為開發者不會被取代,而是可以讓他們将更多時間專注于剩餘的 20% 部分。Copilot 将重塑程式設計這個職業,并且改變我們學習的方式。

同時,Thomas Dohmke 分享說,在今年 2 月份正式釋出 GitHub Copilot for Business 版本後,已經有超過 1 萬家企業客戶在使用 Copilot 的企業版,包括可口可樂和 Airbnb 等企業。此外,微軟本身也有 3 萬多名員工在使用企業版的 Copilot,并且借助它進行程式設計。

整個對話給人很多啟發,建議你閱讀完整的原文 https://www.freethink.com/robots-ai/github-copilot

在過去的十五年中,GitHub已成為編碼世界不可或缺的一部分。該平台于 2007 年推出,現在有超過 1 億開發人員使用該平台進行協作、跟蹤更改和存儲他們的代碼。

GitHub 于 2018 年被微軟以75 億美元收購,現在正以其他方式赢得聲譽:從根本上改變編碼的工作方式。催化劑是 Copilot,這是一種生成代碼的 AI 工具,就像 OpenAI 的 ChatGPT 生成十四行詩一樣容易。(事實上,Copilot 由 OpenAI 的 Codex 提供支援,這是一種大型語言模型,根據從網際網路上收集的代碼進行訓練。)

隻需按下 Tab 鍵,使用 Copilot 的開發人員就可以完成一行、生成代碼塊,甚至編寫整個程式。根據 GitHub 的資料,從可口可樂到 Airbnb 等超過 10,000 家組織已經注冊了Copilot 的企業版,微軟本身的 30,000 多名員工現在定期在 Copilot 的幫助下進行編碼。

“開發人員的技能将是弄清楚,'在我可以利用 AI 為我合成該代碼之前,我必須做多小?'”

托馬斯·多姆克

最近,Freethink 采訪了 GitHub 的首席執行官 Thomas Dohmke,以詳細了解 Copilot 如何承諾将程式設計重塑為一種職業,以及人工智能驅動的開發對創新本身的未來提出的問題。我們還讨論了為什麼使用 Copilot 進行編碼如此有趣,AI 将如何改變我們的學習方式,以及 Copilot 是否可以修複仍在大型機上運作 COBOL 的銀行。

為了篇幅和清晰度,對這次采訪進行了編輯。

Freethink:就程式設計的本質而言,您認為未來會發生什麼變化?軟體開發是否仍将是專家的領域?還是您認為以 AI 為動力的無代碼開發會變得更加普遍——以至于成為一名軟體工程師的意義看起來有所不同?

Thomas Dohmke:我認為系統思考——了解軟體的複雜性并能夠應對真正的大問題、大挑戰、大的新功能并将其分解為小問題——将發揮越來越大的作用。

我們從穿孔卡到數百到數千再到數百萬,現在可能是數萬億——如果不是數萬億之後的下一步——代碼行。是以,作為開發人員,我們需要能夠管理這些解決大型複雜問題的大型複雜系統。你需要能夠将它們分解成小的建構塊。

開發人員的技能将是弄清楚,“在我可以利用 AI 為我合成該代碼之前,我需要做多小?” 至少在可預見的未來,我們仍将不得不審查所有源代碼——了解它的作用,并進行安全審查、合規審查,看看你是否有及時注入,有人試圖注入有害代碼到代碼庫。

開發人員仍然是專家,了解代碼以及人工智能合成的内容是否真正符合開發人員的意圖。在接下來的十年中,這可能會發生變化——我們自己編寫了多少,剛剛合成了多少。但我認為我們離一切都隻是無代碼開發的地方還差得很遠。

“分心的事情并沒有減少,但你可以更好地利用創作時間。”

托馬斯·多姆克

Freethink:由于 Copilot,您如何看待程式員的日常工作發生的變化?

Dohmke:如今,開發人員實際上并沒有将大部分時間花在編碼上——開發人員每天有 2 到 4 個小時用于編寫代碼。剩下的時間他們做其他事情,比如站立會議,檢視崩潰報告。(或者 App Store 評論中有人告訴您最新版本已損壞,您甚至無法重制該錯誤。)

使用 Copilot,如果您每天隻有兩到四個小時來實際編碼,您可以更好地利用這段時間。您可以利用這段時間保持順暢,完成工作并享受工作。

分心的數量并沒有減少——無論是 Slack、Twitter,還是你的手機和 WhatsApp 消息。那些不會消失,但你可以更好地利用創作時間,你可以在某種程度上解決問題,因為如果你不經常從編輯器切換到其他東西,你也會減少分心的觸發器. 是以我們看到人們更頻繁地留在該區域。

“副駕駛帶回了樂趣,帶回了創造力。它把流量帶回來了。”

托馬斯·多姆克

Freethink:您自己編寫軟體的過程發生了怎樣的變化?我不知道這些天你能投入多少時間來編碼,但我真的很好奇你自己的編碼過程是如何通過 Copilot 發展起來的。

Dohmke:這對我來說主要是業餘愛好項目。但我首先想到的是:Copilot 帶回了樂趣。很多時候,有很多分心的事情,而且您還有很多其他事情可以做。周末——我們下班的時間——在某種程度上是一場圍繞注意力廣度的競賽:你想出去走走嗎?或者你想搭建一些樂高套裝嗎?或者你想編碼?

當我抽出一個小時來編寫軟體時,Copilot 會帶回樂趣,帶回創造力。它把流程帶回來了,因為你不必不斷地在編輯器、浏覽器和搜尋引擎之間切換上下文,也不需要像 Stack Overflow 或 GitHub 本身這樣的東西,來找到你需要的那三行代碼——我不'知道,在您正在建構的 iPhone 應用程式上做一個圓角。

是以我認為它帶回了我當時的那種“我正在建構我的大燈泡想法”的感覺,在周日早上的那一兩個小時裡,在其他事情變得優先之前。

“初創公司明白,即使生産力提高 20-25% 也可能決定他們的生存。”

托馬斯·多姆克

Freethink:如果您在建立第一家初創公司時能夠使用像 Copilot 這樣的工具,您認為自己作為創始人的經曆會有什麼不同?

Dohmke:我認為這會讓我的生活更輕松。作為一家小型創業公司的創始人,您可以非常快速地行動,因為這是生存的唯一途徑。是以,擁有一個可以讓您保持順暢的工具,一個可以讓您獲得原型、進行預覽,然後最終實作産品市場契合的工具,這會令人難以置信地強大。

我與很多初創公司交談過,我是其中一些的天使投資人,他們都在使用 Copilot,因為他們明白即使是 20-25% 的生産力提高也可能決定他們的生存。

“反應令人震驚。人們告訴我們,如果沒有 Copilot,他們就無法開發。”

托馬斯·多姆克

Freethink:我很好奇你收集了哪些關于 Copilot 如何改變 GitHub 和微軟自己的程式員工作方式的資料——無論是轶事的還是更正式的。

Dohmke:我們于 2020 年 8 月開始研究 Copilot,然後在 2021 年初向大約 250 名 GitHub 員工或“Hubbers”推出了第一個内部預覽版,我們得到的回應令人震驚。人們很興奮。人們告訴我們,他們不能再沒有 Copilot 了。

我們測量了淨推薦值 NPS [ed. 注意:使用者滿意度的衡量标準],從負 100 到正 100。我們的 250 名測試人員的結果為 +73。我們從未在開發環境的任何其他更改中看到這些數字。通常,開發人員會說,“不要碰我的系統,我知道我在做什麼,Thomas——你為什麼要引入新工具?”

我們從我們的團隊那裡看到了巨大的積極回報,并且留存率,即有多少人在第一天或第一周後繼續使用它,非常高——高于我們建構的任何其他産品。你預計會有一定的下降——你在公司内推出一項新功能,第一天每個人都很興奮,然後到第三天,每個人都繼續回到他們的舊習慣。我們還沒有在 Copilot 中看到這一點,無論是在 GitHub 中,在 Microsoft 中,還是在我們的客戶中。

“平均将近一半的代碼是由 Copilot 編寫的。僅這一點就令人難以置信。”

托馬斯·多姆克

Freethink:關于 GitHub 上更廣泛的開發人員社群如何使用 Copilot,以及它對他們的工作效率有何影響,您是否有任何事實或資料?

Dohmke:當客戶使用 Copilot 時,我們會跟蹤他們按 Tab 鍵的頻率以及 Copilot 在這些檔案中編寫了多少代碼。這個數字現在平均為 46%——平均幾乎一半的代碼是由 Copilot 在啟用它的檔案中編寫的。僅此一點就令人難以置信。

我們三年前開始研究 Copilot;它大約兩年前進入預覽。自我們推出以來,這個數字一直在穩步上升。遲早,80% 的代碼将由 Copilot 編寫。正如我們所讨論的,這并不意味着開發人員将被替換。這意味着開發人員有更多時間專注于他們正在編寫的 20%。

當您使用 Copilot 時,您的風格會發生變化,因為您變得更加直率。你寫代碼注釋,也許還有一個小例子。當您編寫帶有輸入和輸出的函數時,隻需提供示例輸入和輸出,Copilot 就會“了解”您想要做什麼,并将其用作額外的上下文來合成代碼。

“配備 Copilot 的小組速度提高了 55%。這将改變這個行業。”

托馬斯·多姆克

實際上,我們通過對 2,000 名開發人員進行的定量調查了解了他們對使用 Copilot 的感受,其中 75% 的開發人員表示他們感到更加滿足。我們從他們那裡聽說,他們需要更少的心智能力來完成工作。他們花在編寫樣闆檔案上的時間越來越少,而我們作為開發人員總是必須這樣做。

我們還進行了一項定性研究,我們向 50 名開發人員提供了 Copilot 的通路權限,并讓大約 50 名沒有 Copilot 的開發人員(如果您願意的話,我們将其設為對照組),然後我們要求他們建構一個 Web 伺服器。Copilot 組的速度提高了 55%。這将改變這個行業。

他們不僅速度提高了 55%,而且他們的成功率實際上更高:78% 比 70%。

GitHub CEO:很快 AI 将能實作 80%的程式設計

“我認為我們的學習方式将徹底轉變。”

托馬斯·多姆克

Freethink:Copilot 對未來程式員的發展有什麼影響?當你學習程式設計時,你會感到緊張,一方面是對看似簡單的事情感到沮喪,另一方面是通過反複做這些事情,你最終會更深入地了解它是如何工作的。我很好奇像 Copilot 這樣的工具可能會對正在學習如何進行冒泡排序的高中生産生什麼影響,并且可以隻按Tab 鍵并顯示代碼,而無需先從頭開始。

Dohmke:我認為我們的學習方式将徹底轉變,我們在學校的教學方式也将徹底轉變。

我認為我們将更少關注于了解誰是 1845 年的總統,而更多地關注我們如何學習。老師更像是一名教練,幫助所有年齡段的孩子利用技術以自己的速度自行探索這些主題。我認為這對孩子們來說将是難以置信的民主化,特别是在軟體開發方面。

在美國這裡很容易忘記編碼中最常用的語言是英語。如果你在這裡長大,你可能比在巴西、中國或德國長大更容易了解英語。僅此一項就可以解放孩子們,因為他們可以用他們的母語查詢 AI 代理,例如 Copilot。Copilot 将了解這些語言,并仍然以學生正在學習的程式設計語言合成代碼,但學生可以用他們自己的語言進行互動和提問。

我認為知識将變得不那麼重要,知道如何推理、知道如何探索内容——知道如何弄清楚人工智能提供的内容是否真的是正确答案将是至關重要的。教師将與孩子們一起學習如何做到這一點。學生們必須弄清楚,人工智能給我的是我正在解決的問題的實際答案,還是模型産生了幻覺?

“孩子們可以用他們的母語查詢 AI 代理,比如 Copilot。”

托馬斯·多姆克

Freethink:至少在我看來,似乎無論你選擇哪個學科,無論是醫學還是計算機科學,為了進行那種更高層次的推理,你都必須從一定程度的内容知識開始。

Dohmke:如果你使用 Copilot,你會相對較快地發現你仍然需要具備這些基礎知識。沒有它你就逃不掉。你可以去 ChatGPT 或 Copilot 上問它“如何建構 GitHub”,它會給你一個非常抽象的答案。

你必須有能力說,“好吧,現在我如何将這個非常大的問題分解成小問題?” 為此,您必須了解什麼是資料庫、什麼是虛拟機、什麼是容器?你必須了解計算機科學中的所有這些知識,才能真正達到 AI 可以解決你的問題的地步。

“我們一直在為開源開發者争取權利,因為我們相信開源是實作人類進步的基礎。”

托馬斯·多姆克

老師們,如果你回到學校的例子,就會立即發現這一點。如果學生隻是想通過作弊來解決作業,他們不僅需要提供答案,還需要展示他們的作品。這就像數學課:展示您如何使用 Copilot 建構某些東西的工作。

另一件事是,沒有一個軟體項目是相同的,為超市建構銷售點系統或建構在每台裝置上運作但可能仍擁有 1 億使用者的 iPhone 應用程式之間存在很大差異。您仍然需要了解這些概念以及如何解決這些問題。而且我認為這對我們人類來說是比了解程式設計語言的所有細節更有用的技能。

Freethink:作為一個非常支援開源的人,您認為開源在這裡扮演什麼角色?

Dohmke:開源将在 Copilot 的發展中發揮基礎性作用。OpenAI 為 Copilot 提供的模型是在網際網路上的開放資料上訓練的。不僅是源代碼,還有其他各種文檔。這使得副駕駛不僅可以說程式設計語言,還可以說人類語言。開源提供了用于訓練這些模型的資料集。

我們現在已經看到了一些開源的大型語言模型。其中很多實際上都托管在 GitHub 上,這讓我們很興奮!在過去的 15 年裡,GitHub 一直擁抱我們提供的開源生态系統。基本上我們所有的功能都可以免費提供給開源項目,我們希望繼續支援這個生态系統。我們一直在為開源開發者争取權益,因為我們相信開源是實作人類進步的根本。

開源帶來的協作模式可能是現存最無邊界和無邊界的協作模式:許多國家的開發人員互相合作,并不關心我們在這個星球上存在的所有其他沖突。

“語言已經過時了。但他們也永遠不會停止服務。”

托馬斯·多姆克

通常情況下,當你收到一個 pull request 時,你不知道那是誰,他們的頭銜是什麼,他們一直在做什麼,他們是否上過大學。你不在乎。我不認為如果你想将代碼貢獻回 Linux 核心,沒有人會問你,“你真的有适當的教育和五年的工作經驗嗎?” 這不是開源協作的工作方式。

在 GitHub,這就是我們已經接受并将永遠接受的東西,作為我們授權和啟用開源開發人員的使命的一部分。我認為大型語言模型将發揮巨大作用,并将幫助我們共同加速進步。

Freethink:您認為 Copilot 在開發新的程式設計語言方面可能扮演什麼角色?語言流行起來,過時了——我很好奇 Copilot 對此有何影響。

Dohmke:你說語言會過時。我認為這是對的。但他們也永遠不會停止服務。這裡最常見的例子來自仍在大型機上運作 COBOL 的銀行和金融服務機構。它不僅僅是某個地方的一家銀行,它是我在世界上任何國家交談過的仍在大型機上運作 COBOL 的任何銀行。

這是個問題,因為幸運的是,60 年代編寫 COBOL 的人現在都退休了,不再需要為銀行維護該代碼。Copilot 将在幫助公司實作代碼庫現代化方面發揮作用——而且它将以多種方式發揮作用。

一方面,Copilot 可以向現在必須擁有它的開發人員解釋遺留代碼。您可以突出顯示代碼并說:“請向我解釋此代碼。” 一旦有了解釋,您就可以實際使用解釋和代碼來為該代碼生成測試用例。下一個合乎邏輯的步驟是,您在與“飛行員”(開發人員)的疊代過程中利用 AI,用 Python 重寫所有内容。因為您生成了測試并生成了描述——這兩者在 60 年代都不太可能存在;很多代碼沒有文檔記錄——你可以将舊代碼庫轉換為新代碼庫。

我們都在與上一代開發人員和我們自己六個月大的代碼庫的技術債務作鬥争——大多數開發人員,無論他們六個月前寫了什麼,當他們現在看到這個時,他們會說,“我會現在比六個月前做得更好。” 我們将看到更多的疊代,希望我們背負的包袱更少。

我認為另一種方式是學習編碼會更容易,并且程式設計語言本身可能會變得更加人性化。我可能不會寫很多代碼,而是寫很多注釋,然後綜合其餘代碼。這些評論可能是德語、巴西葡萄牙語——實際上幾乎任何語言都可以被這些模型了解,以用于合成代碼。

最後一個是我們預覽了一款名為 Copilot Voice 的産品,它可以幫助您用聲音而不是雙手進行編碼——這将使那些因重複性勞損而無法整天打字的殘障人士也能使用它。

Freethink:當我教高中生程式設計時,他們最大的飛躍是了解編碼語言與自然語言的不同之處。讓他們感到沮喪的是計算機如何完全按照你告訴他們的去做——就像一個煩人的兄弟姐妹會做明顯錯誤的事情,然後說“嗯,從技術上講,你說過這個。” 使用像 Copilot 這樣的工具,您認為會出現一種融合,編碼變得更類似于我們人與人之間的交流方式嗎?

Dohmke:我想你已經可以看到了。當你使用這些聊天代理時,它們不僅有你剛剛輸入的句子,還有之前對話的上下文。對于 Copilot Chat,它實際上知道您的編輯器中有什麼——不僅在您打開的檔案中,而且實際上在相鄰的頁籤中,以及在您的調試器中。将來,他們可能會将整個存儲庫或檔案夾作為上下文提供給他們。

今天,您已經可以編寫一個 HTML 檔案——一個網頁——并且在編寫它時,在 Copilot 的幫助下,您可以說,“将此文本設為粗體。” 或者,“将此區域置于頁面中央。” 然後它會告訴你如何去做,它消除了過去我們認為計算機不了解我想要什麼的挫敗感。好吧,現在可以了。

“與 Copilot 互動的最佳時刻之一就是您可以告訴它出了什麼問題。”

托馬斯·多姆克

就在最近的一次會議上,我建構了一個 Snake 遊戲作為 Copilot 示範。我說,“讓遊戲更漂亮”,它隻是輸出樣式表。我從沒說過我想要樣式表。我什至從未用 HTML 或 CSS 的概念來提示它。它通過了解我想要實作的目标來解決這個問題。

我認為與 Copilot 互動的最佳時刻之一是您可以告訴它出了什麼問題。實際上,您可以說,“這不是我想要的”或“這行不通”。

然後它說,“哦,我道歉。這是您可以嘗試的另一件事。” 是以它有這種互動模式,你不必知道程式設計語言的确切文法。你不必知道你必須知道什麼才能解決這個問題。您可以探索它并自己找到解決方案。

“盡管他們隻接受過現有藝術的教育訓練,但他們可以創造出全新的藝術類别。”

托馬斯·多姆克

Freethink:據我所知,Copilot 是建立在 OpenAI 的 Codex 上的,它是過去的快照,是 2021 年之前的代碼。我不知道是否有計劃将 Copilot 連接配接到網際網路,是以它得到了更新更頻繁,但我很好奇您是否發現不必如此頻繁地編寫樣闆檔案可能帶來的任何潛在損失。當你不得不一直鑽進雜草中時,每 10 萬人中就有一個人最終可能會說,“哇,這裡有一種方法可以做得更好。” 然後該解決方案在整個開發人員社群傳播。如果人們隻是向 Copilot 詢問基于昨天代碼的最佳解決方案,那麼您如何看待創新本身的變化?

Dohmke:首先要考慮的是,大型語言模型中沒有存儲代碼片段的庫。它們是具有數十億個參數的神經網絡,這些參數描述了如何預測某事的機率。就語言模型而言,那個東西就是下一個詞。在擴散模型方面,它是如何從噪音到圖檔。

如果你把那些擴散模型作為一個可視化的例子,它們顯然可以創造出以前不存在的新事物。即使他們隻接受過現有藝術的教育訓練,他們也可以創造出全新的藝術類别。您可以轉到 Stable Diffusion 并說:“渲染紐約的天際線,就像法國印象派畫家所畫的那樣。” 然後它實際上為您呈現了今天紐約的天際線,就好像它是由莫奈或其他法國印象派畫家繪制的一樣。

訓練集中沒有一張圖檔看起來真的像那樣。圖檔根據您的提示自行生成,最終消除噪音。

我認為語言模型也是如此。他們可以生成全新的文本,以前從未有過的全新代碼,是以,他們可以與開發人員合作,真正創造創新并建立新算法或新代碼。但是,正如您可以從“Copilot”一詞推斷的那樣,我們相信有一個飛行員與 Copilot 反複合作以實作這項創新。