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