?猜想生成式 AI 對軟件工程的影響
作者 | 馮英睿
隨著AI技術(shù)的進步,尤其是OpenAI的GPT-4等大型語言模型的出現(xiàn),生成式AI正不斷改變我們對軟件工程的認識。本文試圖從多個角度分析生成式AI對軟件工程可能帶來的影響,包括我們對軟件本身的理解、對軟件卓越的定義、重新定義軟件工程能力以及團隊組成和文化等方面。
軟件由代碼和模型共同組成
Software = Codes + Models
我們發(fā)現(xiàn)大多數(shù)人在談到AI輔助研發(fā)軟件的時候,主要是指由代碼編譯的軟件,但軟件在今天早已不再僅由代碼編譯而成,而是由代碼與AI模型共同組成的。當我們談論研發(fā)提效的時候,也應該將AI工程提效加入進來一起考慮,而今天在基礎(chǔ)模型之上通過微調(diào)的方式讓開發(fā)AI模型的速度大幅提升。
同時由于AI涌現(xiàn)出來的能力,將在體驗創(chuàng)新和系統(tǒng)集成上帶來巨大的變化。從Microsoft365通過Copilot提升體驗,以及ChatGPT與Walframe的集成這兩個案例來看,隨著AI能力的進一步增強,未來將由AI把系統(tǒng)或平臺的各項能力進行整合,這也將進一步減少代碼在軟件中的比例。
所以在AI 2.0時代,我們需要更新對軟件的理解。AI模型在軟件中扮演越來越重要的角色,我們應該將軟件視為由代碼、數(shù)據(jù)和模型共同組成的系統(tǒng)。這意味著我們需要關(guān)注更大范圍的變化:
- 軟件代碼開發(fā)效率提升
- AI模型開發(fā)效率提升
- 代碼在整個軟件中的占比會下降
軟件代碼的可讀性要求降低?
Codes = Human Codes + Generated Codes
在毫無疑問AI可以為軟件生成正確代碼的今天,很多人都在問:對卓越代碼的要求,是否適用于所有的代碼呢?我們對于軟件卓越的認識也需要發(fā)生改變,如果軟件卓越的追求是旨在降低成本、范圍、時間并提高軟件的價值和質(zhì)量,那么有兩個很有趣的觀點:
- 在滿足質(zhì)量和功能要求的前提下,是否由更多AI生成代碼構(gòu)建的軟件因成本更低所以更卓越
- 對于AI生成代碼的質(zhì)量要求明顯和人類編寫的代碼不同
首先從成本角度來看,更多代碼由AI生成不僅僅意味著研發(fā)成本的下降。同時也意味著問題的定義和分解都更加清晰,架構(gòu)和設計更加簡潔,否則AI很難自動生成可工作的代碼。
而如果某些功能和組件的代碼可以由AI重新生成,那么由AI生成代碼的可讀性也許不再值得特別關(guān)注。針對這一部分的代碼,用于生成代碼的注釋和測試才是更重要的。而生成的代碼可以在當模型升級時,通過生成的更好的代碼來替代,讓軟件獲得某種自我進化的能力。對于人類編寫的代碼而言,代碼的可讀性仍然非常重要。
重新定義軟件工程能力
Generated Codes = Correct Codes + Wrong Codes
生成式AI也要求我們重新思考如何評估軟件工程的能力。如果更卓越的軟件需要更多生成的代碼,那么是否可以認為:能夠生成更多正確代碼的人或團隊比別人更有能力?因為生成的代碼必然包括正確的代碼和錯誤的代碼。優(yōu)秀的軟件架構(gòu)師能夠找到更多生成正確代碼的方法。而為了更多的生成正確的代碼,通過降低AI學習的復雜性能有效提升生成內(nèi)容的質(zhì)量。這是因為:
- 需要AI直接生成的代碼越多越容易出錯。這是因為需要生成越多的內(nèi)容,就意味著中間關(guān)鍵節(jié)點沒有打開,導致過程中有更高的概率使得AI不按照預期生成正確的結(jié)果
- 需要AI學習更多知識和了解更多上下文就越容易出錯。以自然語言數(shù)據(jù)分析為例,AI生成SQL和AI生成Pandas DataFrame操作代碼的難度是完全不同的,因為Pandas操作數(shù)據(jù)集的時候,不需要了解數(shù)據(jù)庫中如何去join數(shù)據(jù),也不需要學會不同類型數(shù)據(jù)庫的特有語法和指令
所以優(yōu)秀架構(gòu)師和團隊在標準化設計、領(lǐng)域特定語言(DSL)設計和微服務拆分等工作將變得越來越重要,因為這些工作能顯著降低AI學習的復雜性。
另外值得關(guān)注的是,因為生成式AI模型還可以通過知識庫、模型微調(diào)等手段來提升能力,這使得知識工程或數(shù)據(jù)工程將成為軟件工程的一部分,這也將是未來軟件工程領(lǐng)域內(nèi)一個非常有意思的領(lǐng)域。
非開發(fā)者也可以生產(chǎn)代碼
Correct Codes can be generated by BA + QA or Dev
隨著AI的代碼生成能力不斷提升的同時,如果團隊的工程師開發(fā)出了優(yōu)秀的架構(gòu)和框架,使業(yè)務分析師(BA)和質(zhì)量保證工程師(QA)能夠直接交付許多功能,那團隊的人員組成比例必然會發(fā)生變化。這也將會帶來很多問題:
- 這是否意味著BA和QA的比例將會增加?以軟件工程師為主體的團隊結(jié)構(gòu)的變化是否會導致工程師文化的稀釋?
- 優(yōu)秀軟件工程師的成長路徑是怎么樣的?如果基本的工作都可以由其他角色完成,那初級開發(fā)人員的入門挑戰(zhàn)是否會提升難度?
- 因為QA和開發(fā)人員(Dev)之間工作內(nèi)容的重疊,其差異將越來越模糊,QA與開發(fā)人員之間的區(qū)別又是什么?
很多問題都沒有確定的答案,但值得大家關(guān)注。總之,生成式AI對軟件工程產(chǎn)生了深遠的影響。我們需要更新對軟件本身的理解、重新定義軟件卓越的范圍、重新思考如何評估軟件工程能力,并關(guān)注團隊文化的影響。在這個過程中,軟件架構(gòu)和設計能力以及數(shù)據(jù)工程能力變得更為重要。我們應該積極應對這些變化,以更好地適應AI 2.0時代的軟件工程發(fā)展。