開發者最愛的AI工具及其使用技巧
當今開發者使用哪些 AI 工具,以及如何使用?我們與領先的軟件工程師探討了 AI 在開發中的優點(和缺點)。
譯自Favorite AI Tools of Developers and Tips For Using Them,作者 Jeff James。
盡管 AI 相對于開發者工具生態系統來說是一個相對較新的事物,但它對開發人員的工作方式持續產生著越來越重大的影響。根據 Gartner 最近的一份報告,75% 的企業軟件工程師將在2028 年使用 AI 代碼助手,而 2023 年接受調查的人中只有 10%,這是一個相當大的飛躍。
開發者研究公司 SlashData 最近發布了一項更加樂觀的調查,顯示71% 的開發者正在積極使用 AI“以某種方式”,并且“59% 的開發者在他們的開發工作流程中使用 AI 工具”。
“我認為 AI 不會(現在)取代軟件開發者,但我確實認為使用 AI 的軟件開發者可能會取代不使用 AI 的軟件開發者。”
——Audiofeed 聯合創始人 Shane Thomas
雖然 AI 對軟件開發的增長和影響是不可否認的,但我們希望從開發者那里獲得一種真實的感受,了解他們如何親自使用 AI 開發工具,因此我們與一些軟件工程師進行了交談以找出答案——同時也了解他們對使用 AI 開發工具的優點(和缺點)的反饋。
頂級 AI 工具:結對編程和代碼補全
我與之交談的開發者使用的最大類別的 AI 工具屬于AI 結對編程和代碼補全類別,這些工具可以輕松生成代碼片段,并作為程序員的自動化助手。
我與之交談的每一位開發者都提到了GitHub Copilot,它似乎是尋求 AI 工具的開發人員最流行的解決方案之一。
“對我來說,GitHub Copilot 主要用于提高我的速度,”資深軟件工程師兼Audiofeed聯合創始人Shane Thomas說。“[GitHub Copilot] 在我已經知道要寫什么并且它可以為我自動完成那些部分時效果最好。它通常不會[完全]正確,但方向是正確的。它讓我完成了 80% 的工作,我可以更新我知道錯誤的部分。”
其他開發者對 Copilot 也有類似的說法。“我每天都使用 GitHub Copilot,”Rainstorm Technologies所有者兼經驗豐富的開發者Kristian Ranstrom說。“它內置于 Visual Studio 和 Visual Studio Code(以及其他 IDE)中,因此使用它非常容易……你 [還可以]使用 GitHub Copilot 聊天窗口要求它做某事。例如,“如何在 C# 中處理 API 中的圖像大小調整?”或“為此類編寫測試用例”。
OpenSauced的技術 AI 倡導者Bekah Hawrot Weigel說,“GitHub Copilot 和 ChatGPT 是提高效率和擺脫困境的明顯選擇”,并補充說使用 AI 工具“……幫助我們更快地找到正確的答案,并更快地與擁有這些答案的人聯系。”
Thomas 還依賴Cursor IDE,他認為這是 VS Code 的一項增強功能。“當我不確定該怎么做時,我用它來與我的代碼或代碼庫的部分進行聊天……它并不總是完美,但它通常可以為我節省大量時間 [與]搜索引擎或 StackOverflow 相比。”
除了 GitHub Copilot 和 Cursor IDE 之外,我與之交談的開發者提到的其他結對編程和代碼補全工具還包括ChatGPT本身、Claude 3 Opus、Pieces for Developers和Codeium。這絕不是一個詳盡的列表,還有其他一些工具是開發者可能想要考慮的——而且在未來幾個月和幾年里可能會出現更多工具——但上述工具似乎是最流行的一些工具。
其他面向開發者的 AI 工具
除了上面提到的結對編程/代碼補全工具之外,還有許多“AI 鄰近”工具旨在以其他方式讓開發人員的生活更輕松,并且得到了我與之交談的開發人員的推薦。
“大多數開發者都聽說過代碼補全工具,比如 Copilot 等,”Elizabeth Lawler,AppMap的首席執行官兼創始人。“然后還有一些更巧妙的工具,比如SuperMaven和Aider,還有一些相鄰的工具不是代碼補全器,但可以進行更深入的問題解決工作,并充當深度編碼工作‘代理’。”勞勒隨后解釋了 AppMap 的Navie——她將其描述為“使用運行時數據作為上下文進行故障排除和更深入、更復雜的設計和重構工作的 AI 軟件架構師”——屬于后一類。
除了專門專注于幫助 IDE 內或編寫代碼時的開發人員的 AI 驅動的工具之外,我交談過的大多數開發人員還在使用其他 AI 工具來提高他們在其他領域的生產力。
Ranstrom 說,他使用了 OpenAI/ChatGPT 的 API——以及WriteSonic——來幫助創建圖像和編寫內容,而Weigel 使用SwellAI來“分解音頻內容,將其重新用于其他形式,并突出顯示關鍵時刻以供分享”,以及 AI 驅動的視頻編輯工具Descript,她用它來編輯播客、演示和音頻剪輯。她還依賴Zoom AI 伴侶)來獲取會議行動項目、摘要和引用過去的討論。
鼓勵和謹慎:通用 AI 編程建議
我交談過的所有開發人員都贊揚了 AI 可以為開發人員帶來的好處,從提高生產力到增強學習機會。也就是說,許多人也根據自己的經驗提供了一些通用的 AI 開發建議。
“你越擅長提示,AI 就會越有效。”
——Bekah Hawrot Weigel ,OpenSauced 的技術 AI 倡導者
Weigel 說:“AI 是你工具箱中的一個工具……它可以幫助你提高效率,突破你原本可以做的事情的界限,但它不是萬能的工具。”“如果你需要扳手,你不會使用錘子。用戶需要弄清楚如何有效地使用它并確保其準確性。AI 自信地產生幻覺,所以它不能替代你沒有的知識。”
Weigel 還強調,編寫有效的提示——在使用 ChatGPT 等工具時——是一項需要時間才能掌握的技能,但對有耐心的開發人員來說會帶來回報。“我聽到很多開發人員談論 ChatGPT 等 AI 有多‘糟糕’,”Weigel 說。“他們會引用模棱兩可或錯誤的答案,但我很好奇他們的提示是什么。你越擅長提示,AI 就會越有效。”
好處和優勢
Ranstrom 說,利用 AI 來幫助編碼對他來說產生了巨大的影響,這完全屬于好處范疇。“[使用 GitHub Copilot] 使我的速度提高了約 30%。想象一下需要編寫一個很長的類:這需要大量的輸入。即使你可以從其他地方復制/粘貼一些,”Ranstrom 說。“相反,我寫一個注釋來解釋我需要做什么,代碼會自動填充,然后我根據需要進行調整。”
Thomas 呼應了生產力的好處,強調了“提高開發速度、改進對不熟悉代碼的調試和維護”。
使用 AI 的一大好處是幫助開發新技術和新方法。“當我要求 Copilot 為我編寫一些代碼時,我可以看到其他人如何處理類似的情況,” Ranstrom 說。“Copilot 背后有數百萬行開源代碼。”
Weigel 還強調了使用 AI 進行開發的積極學習方面。“AI 是學習的絕佳工具;學習新語言或框架變得容易得多,因為總有一個工具可以回答你的問題。”
缺點和注意事項
雖然使用 AI 工具可以對開發人員的效率和教育產生積極影響,但與我聯系的每個人也提供了一些關于使用 AI 進行開發的注意事項和警示故事。
“你不能 100% 靠 AI 來處理你的編碼。它擅長處理較小的代碼塊,并且會有很大幫助,但它不是最好的軟件架構師。”
——Kristian Ranstrom ,Rainstorm Technologies
Thomas 說:“一旦一個人[被]給了計算器,他們通常就不需要學習如何實際進行數學運算。大多數時候,這可能沒關系。”“然而,有時,理解真的很重要。如果你在不真正理解代碼如何工作的情況下利用 AI,你就不會建立解決 AI 目前無法為你解決的更復雜問題的批判性思維和解決問題的能力。”
Ranstrom 呼應了這些擔憂。“你不能 100% 靠 AI 來處理你的編碼。它擅長處理較小的代碼塊,并且會有很大幫助,但它不是最好的軟件架構師,” Ranstrom 說。“目前,人類仍然需要控制項目并相應地進行規劃。”
Lawler 還告誡經驗較少的開發人員不要過早地信任 AI,并引用了研究結果,該結果表明新手程序員過度使用 AI 的危險性。
“研究表明,經驗較少的開發人員對 AI 的代碼接受率較高,而經驗豐富的開發人員則在 AI 生成的代碼中發現了更多缺陷,并且接受率較低,”Lawler 說。“敏銳的眼光對于交付高質量代碼至關重要。”
Thomas 指出了另一個問題,隨著 AI 開發工具和流程的不斷成熟,這個問題無疑會隨著時間的推移而發展:AI 和數據隱私。
“如果你為一個副業項目或一個小型初創公司編寫代碼,這不是問題,”Thomas 說。“但是,當你為一個較大的組織編寫代碼時,情況就會變得更加復雜。”
雖然數據隱私和 AI 是一個過于龐大的話題,無法在此詳細討論,但根據路透社的一份數據隱私報告——由 Gai Sher 和 Ariela Benchlouch 撰寫——“AI 隱私悖論代表了我們這個時代最重大的挑戰之一。隨著我們不斷前進,我們必須確保我們對技術進步的追求不會以犧牲我們的隱私權為代價。”
AI 輔助開發的未來
盡管存在成長煩惱,但 AI 工具被證明是開發人員寶貴的編碼伙伴。Ranstrom 指出,他正在使用的 AI 工具一直在迅速改進。“從我第一次開始使用它到現在——我們只是在談論幾個月——AI 編程建議已經變得好多了。如果你不使用 [AI 編程工具],你可能會被甩在后面,所以我的建議是趕快加入并堅持下去。”
“就像我們不想一遍又一遍地聽到同一首歌一樣,我們也不想要同一款應用程序的多個版本。”
——AppMap 首席執行官兼創始人 Elizabeth Lawler
Thomas 表示同意。“我認為 AI (目前) 不會取代軟件開發人員,但我確實認為使用 AI 的軟件開發人員可能會取代不使用 AI 的軟件開發人員。”
一個始終如一的話題似乎是,AI 工具可以成為開發人員工具箱的有力補充,但等式中不可或缺的部分仍然是指導 AI 的人。
Lawler 提醒開發人員,他們仍然是創造者:“你不會將工作的創造性部分外包給 AI,它更像是一個分析師,而不是一個魔術師。AI 非常可預測,就像 AI 生成的音樂一樣,”Lawler 說。“如果你不給它新的作曲創意,一段時間后它就會開始‘聽起來都一樣’。[就像我們] 不想一遍又一遍地聽到同一首歌一樣,我們也不想要同一款應用程序的多個版本。”