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





























