AI融入編程工作流的十個心得
AI工具在軟件開發(fā)中扮演重要角色,能輔助編寫測試、鞏固模式和驅(qū)動創(chuàng)新。Windsurf和Cursor各有特點,前者保守,后者快速。信任AI需逐步建立,并維護代碼所有權(quán)。在提示AI前先提示自己,必要時關(guān)閉AI。AI不會取代工程師,而是提高生產(chǎn)力,思考和協(xié)作仍至關(guān)重要。
譯自:10 Insights from Integrating AI into My Coding Workflow[1]
作者:Dieter Randolph
軟件開發(fā)充滿了相互競爭的壓力:我們被期望快速行動、不斷創(chuàng)新,并且仍然交付高質(zhì)量、可維護的代碼。在最好的情況下,這都是一項艱巨的任務(wù)——而這正是 AI 工具可以提供幫助的地方。
在過去的幾個月里,我一直在將 AI 集成到我的日常工作流程中[2],作為 DataStax[3] 的高級軟件工程師。最初只是一點好奇心,現(xiàn)在已經(jīng)變成了一種穩(wěn)定的伙伴關(guān)系:我依靠 AI 不僅僅是為了節(jié)省時間,更是為了以不同的方式思考、減少摩擦并加強我正在使用的系統(tǒng)。
作為開發(fā)人員,我們都見過炒作來來去去,但這次有些不同。這些工具正在重塑我們與代碼庫交互的方式[4]、我們調(diào)試的方式、我們測試的方式以及我們成長的方式。這一過程并非沒有失誤,但卻令人受益匪淺。以下是我在此過程中學(xué)到的 10 個最有見地、最有幫助或最令人驚訝的經(jīng)驗教訓(xùn)。
1. 使用 AI 編寫測試
我從來都不喜歡編寫測試,這也是我使用 AI 來幫助我的原因之一。但更重要的是,當(dāng)我親自編寫代碼和測試時,我的任何盲點都容易延續(xù)到兩者中。
AI 提供了第二個視角——就像有另一雙眼睛。我通過這種方式發(fā)現(xiàn)了不止幾個錯誤,尤其是一些我甚至不會想到要測試的錯誤。它將測試過程[5]變成了一種早期的同行評審,并使測試更好,從而使代碼更好。
2. AI 鞏固模式與驅(qū)動創(chuàng)新
AI 開發(fā)工具的風(fēng)險之一是,它們通常會強化代碼庫中已經(jīng)存在的東西——無論是好是壞。這種可預(yù)測性很有用,但它也可能保留有缺陷的架構(gòu)和錯失的機會。
有時,AI 建議“舊方法”正是你為了保持一致性所需要的。但有時,這是一個暫停并詢問的提示:這仍然是正確的方法嗎?真正的創(chuàng)新仍然需要我們挑戰(zhàn)默認設(shè)置并朝著更好的模式前進。
3. Windsurf vs. Cursor:第一印象
我一直在大量使用 Windsurf[6],并且才剛剛開始嘗試 Cursor[7]。這兩種工具本身都令人印象深刻,但感覺卻不同。Windsurf 往往更保守,并且以代碼庫中已經(jīng)存在的模式為基礎(chǔ)。Cursor 感覺更快、更具實驗性——更可能進行猜測和嘗試。
如果你正在尋找遵循已建立的約定且可預(yù)測的建議,那么 Windsurf 是一個不錯的選擇。如果你想要快速迭代并且不介意更多的驚喜,那么 Cursor 可能更適合你。
4. 建立對 AI 工作流程的信任
當(dāng)我剛開始使用 AI 編碼時,我持懷疑態(tài)度。我真的可以信任機器提出的建議嗎?但是信任是慢慢建立起來的——這里抓到一個錯誤,那里巧妙地重寫一個測試——現(xiàn)在我發(fā)現(xiàn)自己正在積極地依賴它。
我發(fā)現(xiàn)從一個明確的問題(一張可靠的 Jira 工單有所幫助)開始,然后向 ChatGPT 詢問偽代碼會很有幫助。我將偽代碼粘貼到 Windsurf 中,然后讓它從那里開始構(gòu)建。這種工作流程意味著我保持控制,同時仍然受益于 AI 的優(yōu)勢。
5. 將調(diào)試面板作為 AI 加速器
Windsurf 有一個我經(jīng)常使用的強大功能:臨時調(diào)試面板。我不只是依賴 console.log 或瀏覽器網(wǎng)絡(luò)選項卡,而是要求 Windsurf 生成一個面板,該面板在 UI 中顯示特定的狀態(tài)值。我甚至可以截取屏幕截圖,包括瀏覽器控制臺,將其粘貼到 Windsurf 聊天中,并獲得量身定制的反饋。
視覺上下文非常有幫助,調(diào)試面板成為一個用于弄清楚哪里出錯的迷你實驗室。只是完成后不要忘記清理。
6. 以 AI 為伙伴進行重構(gòu)
在處理繁瑣但重要的工作(如重構(gòu)舊代碼)時,AI 會大放異彩。手動可能需要數(shù)小時的工作可以壓縮到幾分鐘——前提是我仍然坐在駕駛座上。
我通常會要求 AI 向我介紹它計劃做什么,然后仔細審查更改。是的,這節(jié)省了我的時間,但它也有助于我在進行過程中推理代碼。這就像與一個鍵盤操作速度很快但仍然需要架構(gòu)指導(dǎo)的人配對。
7. 維護代碼的所有權(quán)
我曾經(jīng)遇到過 AI 產(chǎn)生了一些優(yōu)雅的東西——在紙面上——但最終卻以微妙的方式破壞了某些東西。在一個案例中,我要求進行優(yōu)化,但它引入了一個 useMemo,該 useMemo 緩存了錯誤的值。我花了幾個小時才追蹤到這個問題。
那次經(jīng)歷提醒我,即使 AI 編寫了代碼,它仍然是 我的 責(zé)任。這個錯誤是我的。我已經(jīng)學(xué)會放慢速度并確保我理解每一個更改,即使它看起來很聰明。
8. 在提示 AI 之前提示自己
在我在 AI 聊天中輸入任何內(nèi)容之前,我會花一點時間來草擬我認為的解決方案應(yīng)該是什么。然后,我告訴 AI 我的想法,并詢問它會怎么做。這種“元提示”——要求它回應(yīng)我自己的想法——有助于磨練我的想法,并確保我不僅僅是將困難的工作外包出去。結(jié)果通常是一個更強大的答案,并且一個我感覺更與之相關(guān)的答案。
9. 何時使用原力
有時,我能做的最好的事情就是關(guān)閉 AI。當(dāng)建議變得嘈雜或感覺不靠譜時,我會退后一步并手動操作一會兒。它可以讓我頭腦清醒。這讓我想起了《星球大戰(zhàn)》中盧克關(guān)閉目標計算機并信任原力的那一刻。
AI 是一種了不起的工具,但它仍然只是一種工具。我發(fā)現(xiàn)檢查一下自己很有幫助:這仍然有幫助嗎,還是該重新集中注意力了?
10. AI 取代工程師的神話
關(guān)于 AI 取代開發(fā)人員[8] 的說法有很多。我不相信。我希望發(fā)生的事情,以及我目前所看到的,是 AI 提高了優(yōu)秀工程師的生產(chǎn)力。但它不能取代判斷力、溝通技巧或?qū)κ裁磳I(yè)務(wù)重要性的理解。事實上,這些技能正變得越來越重要。鍵盤工作可能會減少,但思考呢?那仍然完全取決于我們。
這 10 個見解只是正在進行的對話的快照。我們的工作方式正在迅速變化,但我們的思考方式、協(xié)作方式以及我們定義“編寫代碼”的含義的方式也在迅速變化。AI 很強大,但開發(fā)的未來仍然取決于人類的創(chuàng)造力、責(zé)任心和協(xié)作。
我們才剛剛開始了解 AI 可以為軟件開發(fā)做些什么。有時,它是一個出色的合作伙伴;有時,它需要堅定的手。但每一天,它都在改變我們工作的形態(tài)。我希望通過分享這些故事,我們將繼續(xù)推動對話向前發(fā)展——不僅僅是關(guān)于 AI 可以做什么,而是關(guān)于我們希望未來的工作是什么樣的。
引用鏈接
[1] 10 Insights from Integrating AI into My Coding Workflow:10-insights-from-integrating-ai-into-my-coding-workflow
[2]將 AI 集成到我的日常工作流程中:https://thenewstack.io/ai-agents-are-finally-starting-to-revolutionize-the-software-development-lifecycle/
[3]DataStax:https://www.datastax.com/?utm_content=inline+mention
[4]重塑我們與代碼庫交互的方式:https://thenewstack.io/keeping-up-with-ai-the-painful-new-mandate-for-software-engineers/
[5]測試過程:https://thenewstack.io/ai-testing-more-coverage-fewer-bugs-new-risks/
[6]Windsurf:https://thenewstack.io/windsurf-an-agentic-ide-that-thinks-and-codes-with-you/
[7]Cursor:https://thenewstack.io/using-cursor-ai-as-part-of-your-development-workflow/
[8]AI 取代開發(fā)人員:https://thenewstack.io/ai-will-steal-developer-jobs-but-not-how-you-think/


































