GenAI在軟件開發中的風險與回報
作為一名有20年編碼經驗的老兵和一家服務軟件開發公司的首席執行官,我對早期預測認為GenAI最終會使大多數軟件開發技能變得過時有著本能的懷疑。
雖然我仍然有些懷疑,但我在日常開發工作中使用GenAI的經歷促使我開始更開放地思考我認為可能的事情。AI將以一些非常基本的方式改變軟件開發,既有好處也有壞處。讓我們先從積極面開始談起。
結束重復性工作
開發者花費了大量時間在諸如語法和標點符號等細節上。這些大部分可以(也應該)消失。他們將不再翻閱手冊或拼湊代碼交換中的片段,而是描述一個期望的結果并獲得格式完美的代碼作為回應。大型語言模型(LLMs)還可以檢查現有代碼以發現打字錯誤、標點錯誤和其他讓開發者煩惱的細節。
重新定義框架
像Spring、Express.js和Django這樣的軟件框架通過抽象掉軟件開發的平凡方面,設置一致的指導方針并為常見功能提供預寫代碼,帶來了巨大的生產力提升。生成式AI將通過創建樣板代碼、自動化重復任務和建議代碼優化來增強它們的價值。AI還可以幫助將框架組件定制化到特定項目。
全能型開發者的崛起
許多開發者的專長是他們在特定語言上的專業知識。當機器可以吐出任何語言的代碼時,Python或Ruby的熟練程度就不那么重要了。類似地,像測試和代碼優化這樣的專門后端技能將迅速轉移到生成式AI模型上。最珍貴的技能將是機器不擅長的,如構建引人入勝的用戶界面、將用戶需求轉化為規格和發明新的方式來支持客戶。軟件“詩人”,或者那些構想代碼能實現什么的人,將成為焦點。
測試的革命
生成式AI是為軟件測試而生的。開發者編寫代碼,而機器人可以創建任意多的測試腳本。最近的IDC調查發現,生成式AI最被廣泛期待的兩大好處是軟件質量保證和安全測試。這將顛覆DevOps實踐中的持續集成/部署,并使許多測試專家尋找新的工作方向。
加強版的公民開發
當前的低代碼/無代碼開發工具已經很不錯了,生成式AI將使它們更上一層樓。盡管低/無代碼具有自動化的優雅性,但它仍然需要人們在白板上拼湊工作流程,然后再提交給軟件。將來,他們可以給模型一個手繪草圖,描述期望的工作流程,并在幾秒內得到必要的代碼。
AI并不是萬能的
盡管充滿希望,生成式AI不應被視為靈丹妙藥。考慮這些潛在的缺點。
過度測試的風險
因為模型可以快速生成測試,我們可能最終會有比需要的更多的測試。過度測試是軟件開發中的一個常見問題,特別是在以團隊生成的測試數量來衡量績效的組織中。進行過多的重復
或不必要的測試會減緩項目進度,并在管道更上游產生瓶頸。當AI能夠推薦何時移除測試時,我們將看到開發者的巨大解放——這種生成式AI的前景讓我對未來感到興奮。
技能退化
有句話常被錯誤地歸功于比爾·蓋茨:“我總是選擇一個懶惰的人來做一項艱難的工作,因為他會找到一種簡單的方法去做。”雖然這句話的出處不明,但情感是有效的。懶惰的人找到了避免艱苦工作的捷徑。生成式AI對懶惰的開發者來說是一種誘惑。它可能導致產生臃腫、效率低下和性能不佳的代碼。它可能扼殺使偉大的開發者如此有價值的創新。記住,生成式AI編寫代碼是基于現有的模式和數據。這可能限制了開發者的創新潛力,他們可能不會考慮更多超出常規的解決方案。
信任赤字
生成式AI的好壞取決于用來訓練模型的數據質量。質量差的數據、訓練的捷徑和糟糕的提示工程可能導致AI生成的代碼不符合質量標準、存在缺陷或無法完成任務。這可能導致組織對生成式AI的質量失去信心,并錯過其許多好處。
現在的關鍵問題:AI會讓軟件開發者過時嗎?
盡管一些引人注目的評論家這樣建議,但歷史上沒有這樣的先例。從高級語言到面向對象到框架的技術進步不斷提高了開發者的生產力,但需求只增不減。生成式AI可能會對低端基礎編碼技能的市場產生影響,但更大的影響將是將整個行業提升到價值鏈中做得不是很好的事情:創新。記住,生成式AI模型是基于已知的內容訓練的,而不是可能的內容。我不指望機器很快就能設計出革命性的用戶界面或構想出一個Uber。
然而,開發者在他們的職業生涯中不會再看到這樣的變革。與其像我最初那樣對抗機器,不如順應潮流。消除構建軟件的大部分繁瑣工作的前景應該讓每個人都感到興奮。某些功能可能消失的風險應該成為行動的動力。將業務需求轉化為優雅且高性能的軟件的高質量開發者將始終有很高的需求。使提升你的技能成為你的使命。