編程的“Devin AI 時代”,軟件開發者的喜與憂 原創
作者 | Keith Pitt
編譯 | 伊風
出品 | 51CTO技術棧(微信號:blog51cto)
這篇文章的作者基思-皮特(Keith Pitt),是一家軟件開發公司Buildkite的創始人兼CEO。2013年,他和另一位軟件工程師蒂姆-盧卡斯(Tim Lucas)創立了該公司,并致力于為技術行業提供持續集成和持續交付(CI/CD)平臺,最近剛獲得了由OneVentures 和 AirTree 共同領投的 2100 萬美元 B 輪融資。
作為一名擁有20年編程經驗的老手,以及作為一家服務于軟件開發者的公司的首席執行官,基思-皮特(Keith Pitt)對早期關于生成式人工智能、AI編程工具最終會使大多數軟件開發技能過時的預測持有本能的懷疑態度。
他在文章中說:“雖然我仍然有些懷疑,但我在日常開發工作中與生成式AI的互動經歷促使我開闊了視野,開始思考我認為可能的事情。AI將以一些相當基本的方式改變軟件開發,既有積極的一面,也有消極的一面。”
一、積極一面:AI讓開發工作化繁為簡
1.結束單調乏味的工作
開發者在語法和標點等細節上花費了過多的時間,這些工作可以(也應該)消失。開發者不再需要翻閱手冊或從代碼交換中拼湊代碼片段,而是通過描述一個期望的結果,得到完美格式化的代碼答案。大型語言模型(LLMs)還可以檢查現有代碼,找出打字錯誤、標點錯誤和其他讓開發者頭疼的細節。
2.重塑框架開發流程
在使用像Spring、Express.js和Django等軟件框架開發時,AI編程工具通過抽象軟件開發中通用的部分、設定一致的指導方針以及提供常見功能的預寫代碼,可以極大地提高生產力。生成式AI將通過創建樣板代碼、自動化重復任務和建議代碼優化來體現它們的工具價值。
AI還可以幫助定制特定項目的框架組件。
3.“通才”開發者將崛起
許多開發者的專長在于他們對某種特定編程語言的精通。當AI能夠用任何語言生成代碼時,精通Python或Ruby就不再那么重要了。同樣,像測試和代碼優化這樣的專業后端技能相關的任務將迅速轉移給生成式AI模型完成。
最寶貴的技能將是AI不擅長的,比如構建引人入勝的用戶界面、將用戶需求轉化為文檔說明以及發明支持客戶的新方法。軟件“詩人”,或者說那些構想出代碼可以實現的偉大創意的人,將會成為焦點。
4.軟件測試的革命
生成式AI天生就適合軟件測試。開發者編寫代碼,而AI可以創建你想要的任意數量的測試腳本。最近的一項IDC調查發現,軟件質量保證和安全測試是人們最期待的AI編程的優勢,遠遠超過其他選項。這將顛覆DevOps的持續集成/部署實踐,并將許多測試專家推向尋找新的工作領域。
5.全民開發者時代
當前的低代碼/無代碼開發工具已經很不錯了,而生成式AI將會把它們推至新的高度。盡管低代碼/無代碼工具自動化程度高,但它仍然需要人們在白板上拼湊出一個工作流程,然后再將其轉化為軟件。
在未來,他們將能夠給模型一個手繪的工作流程草圖,并在幾秒鐘內得到必要的代碼。
二、消極一面:代碼污染,技術降級
盡管AI充滿了前景,但它不應該被視為萬能的。
1.過度測試的風險
因為模型可以快速生成測試,我們可能會進行比我們需要的更多的測試。過度測試是軟件開發中的一個常見問題,特別是在那些以團隊生成的測試數量來衡量績效的組織中。運行太多重復或不必要的測試會拖慢項目進度,并在后續流程中造成瓶頸。
不過,當AI能夠推薦何時移除測試時,我們將看到開發者的巨大解放——這種生成性AI的愿景讓我對未來充滿期待。
2.開發技能退化
“我總是選擇一個懶人去做一項艱苦的工作,因為他會找到一種簡單的方法來完成它,”這句話經常被錯誤地被認為是比爾·蓋茨說的。雖然這句話的出處不清楚,但這句話本身有一定道理:懶人總在尋找避免艱苦工作的捷徑,而AI正提供了絕佳的解決方式。
生成式AI會讓懶惰開發者們上癮,它可能導致創建臃腫、低效和性能差的代碼。更可怕的是AI編程工具可能扼殺優秀開發者引以為傲的創新。因為生成式AI是基于現有模式和數據編寫代碼的,這可能進一步限制那些不愿走出“舒適區”的開發者以及他們的創新潛力。
3.AI編程工具表現不佳
生成式AI的好壞取決于用于訓練模型的數據。
質量差的數據、訓練捷徑和糟糕的提示工程可能導致AI生成的代碼不符合質量標準、存在錯誤或無法完成工作。這可能導致組織對AI編程工具的質量失去信任,并錯過其潛在的好處。
三、最值得提出的問題:AI取代軟件開發者嗎?
盡管一些想引起注意力的專家已經提出過類似的觀點,但歷史上沒有先例支持這樣的結論。技術進步——從高級語言到面向對象再到框架——已經穩步提高了開發者的生產力,但需求只增不減。
生成性AI可能會削弱低端基礎編碼技能的市場,但更大的影響將是推動整個行業上升到價值鏈的更高層次,去做LLMs目前不擅長的事情:創新。
要記得,生成性AI模型是基于已知的東西進行訓練的,而不是未知的、等待被創造的東西。我不指望機器很快設計出一個革命性的用戶界面或想出一個Uber。
然而,開發者在他們的職業生涯中可能很難遇到這樣生產力爆發的風口。與其像我年輕時那樣想要對抗機器,開發者應該順勢而為、乘風破浪。AI編程將人們從許多乏味工作中解脫,這應該讓每個人感到興奮。某些工作任務可能會消失的風險,應該轉化為學習行動的激勵——能將業務需求轉化為優雅和高性能軟件的高質量開發者將永遠備受青睞。
本文轉載自??51CTO技術棧??,作者:伊風
