AI時(shí)代,對軟件開發(fā)未來的思考
來源:湖北國菱計(jì)算機(jī)科技有限公司-湖北國聯(lián)計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開發(fā)-政府網(wǎng)站建設(shè)公司
時(shí)間:2025-03-03
大型語言模型(LLMs)在創(chuàng)意界引起了巨大的轟動,因?yàn)樗鼈兡軌蛏蓤D像、文本和代碼。最初,結(jié)果非常搞笑,畫的是手亂的人,產(chǎn)生了錯(cuò)誤的事實(shí)和代碼的幻覺。但事情正在緩慢而穩(wěn)步地好轉(zhuǎn)。在這些模型出現(xiàn)之前,反對自動化這些任務(wù)的主要論點(diǎn)是機(jī)器不能創(chuàng)造性地思考?,F(xiàn)在這個(gè)論點(diǎn)一天比一天弱。我們該何去何從?
試圖思考一些模糊的問題,比如預(yù)測未來,其缺點(diǎn)是你的想法會變得混亂,很難清晰地思考。因此,我們需要提出框架和類比供我們依靠。
框架:軟件開發(fā)能力水平
軟件開發(fā)不僅僅是編寫代碼。人們對程序員的印象是一個(gè)人坐在黑暗的房間里看著電腦,瘋狂地輸入代碼。雖然整天編碼聽起來很有吸引力,但大部分軟件開發(fā)時(shí)間都花在了與其他人溝通或其他管理工作上,而不僅僅是編寫代碼:
1. 收集業(yè)務(wù)用戶的需求
2. 優(yōu)化這些需求,以便將它們建模為代碼
3. 與設(shè)計(jì)師和產(chǎn)品經(jīng)理等其他團(tuán)隊(duì)成員交談,以可視化解決方案并提出攻擊計(jì)劃
4. 與其他開發(fā)人員合作提出技術(shù)設(shè)計(jì)并對其進(jìn)行改進(jìn)
5. 設(shè)置基礎(chǔ)架構(gòu)、配置、樣板等。
6. 實(shí)際編寫一些代碼
7. 調(diào)試、嘗試?yán)斫馄渌说拇a、編寫文檔等。
8. 部署到生產(chǎn)環(huán)境
9. 消防生產(chǎn)問題
10. ...還有更多任務(wù)
因此,說“人工智能將取代開發(fā)人員”這樣的話需要“人工智能”能夠勝任上述所有任務(wù),而不僅僅是編寫代碼。 因此,說“人工智能將取代開發(fā)人員”這樣的話需要“人工智能”能夠勝任上述所有任務(wù),而不僅僅是編寫代碼。
但是從上面的列表來看,其中一些任務(wù)似乎將來也可以自動化,但目前還不能。我們?nèi)绾螛?gòu)建這個(gè)想法?自動駕駛汽車的世界提出了一種對自動化水平進(jìn)行分類的方法。它具有離散的級別,從無自動化到部分自動化再到完全自動化。我發(fā)現(xiàn)這非常有用,原因有很多:
1. 它清楚地描述了當(dāng)前技術(shù)的能力
2. 它阻止了我們非黑即白地思考——這不是關(guān)于人類司機(jī)與人工智能司機(jī)的競爭,人工智能完全取代了人類司機(jī),有可能存在灰色地帶,人類司機(jī)在緊急制動、車道居中等方面得到人工智能的協(xié)助。
這種分類對人工智能驅(qū)動的軟件開發(fā)來說是什么樣子的?
1. 最低層將是我們以前擁有的- 沒有人工智能參與工作。當(dāng)然,我們還有其他類型的自動化,如編譯器、構(gòu)建過程等,但這些不是人工智能,這些是人類編寫的確定性自動化。
2. 下一個(gè)層次就是我們現(xiàn)在所擁有的——開發(fā)人員使用 ChatGPT 或 GitHub Copilot 來幫助他們。他們用它來編寫測試、樣板代碼、重構(gòu)、理解代碼/錯(cuò)誤等。這就像通過聊天與其他開發(fā)人員交談,您可以提出問題并從中獲得一些幫助,但他們無法訪問您的計(jì)算機(jī),因此他們無法創(chuàng)建文件、運(yùn)行生成命令或部署到生產(chǎn)環(huán)境。
3. 最高級別就像將項(xiàng)目的一部分或整個(gè)項(xiàng)目委托給開發(fā)人員。這些“人工智能編碼員”將接受需求,編寫代碼,修復(fù)錯(cuò)誤并將最終產(chǎn)品部署到生產(chǎn)環(huán)境中。我以為距離這種情況發(fā)生還有幾個(gè)月的時(shí)間,但 Devin 演示被證明是錯(cuò)誤的——盡管它現(xiàn)在只能執(zhí)行簡單的開發(fā)任務(wù),但將來有可能有所改進(jìn)。
除了人工智能模型的能力之外,我們還應(yīng)該考慮解決方案的準(zhǔn)確性。最初,這些模型容易產(chǎn)生幻覺,或者您需要以特定方式提示它們以獲得您想要的東西。這增加了采用的摩擦,大多數(shù)人在這一點(diǎn)上放棄了人工智能助手。但這也在改進(jìn),較新的模型不需要那種程度的提示工程。此外,模型應(yīng)該能夠通過瀏覽網(wǎng)頁來“學(xué)習(xí)”,而不是依賴它們的訓(xùn)練數(shù)據(jù)。隨著新版本的庫和編程語言的引入,這一點(diǎn)很重要。
框架:外包軟件開發(fā)
現(xiàn)在我們已經(jīng)建立了能力,這些能力將如何影響團(tuán)隊(duì)或組織結(jié)構(gòu)?公司以多種方式進(jìn)行軟件開發(fā):
1. 完全內(nèi)部
2. 主要是內(nèi)部的,供應(yīng)商很少
3. 主要是內(nèi)部很少的供應(yīng)商
4. 完全供應(yīng)商
在某種程度上,我們可以將AI 編碼人員視為外包軟件供應(yīng)商/顧問。有些公司經(jīng)常使用它們,有些則不經(jīng)常使用。無論組成如何,我相信讓內(nèi)部團(tuán)隊(duì)監(jiān)督他們的工作總是很重要的。這是為了確保供應(yīng)商的輸出與組織的長期目標(biāo)保持一致。當(dāng)然,你可以通過合同來解決這個(gè)問題,但它們通常只適用于特定的供應(yīng)商或項(xiàng)目,你不能使用這種方法強(qiáng)制執(zhí)行長期目標(biāo)。最好至少有一個(gè)小型的內(nèi)部團(tuán)隊(duì)來指導(dǎo)供應(yīng)商。同樣,即使 AI 編碼員可以像 EC2 實(shí)例一樣出租,擁有一個(gè)內(nèi)部軟件開發(fā)人員團(tuán)隊(duì)來監(jiān)督他們的工作也是有益的。
框架:軟件開發(fā)正在對復(fù)雜性進(jìn)行建模
如果我們談?wù)摰氖墙鉀Q業(yè)務(wù)問題,讓我們花點(diǎn)時(shí)間談?wù)劮块g里的大象- Excel。眾所周知,全世界都在 Excel 上運(yùn)行,超過 10 億人使用它。它為想要組織數(shù)據(jù)、執(zhí)行數(shù)據(jù)分析或自動化某些流程的業(yè)務(wù)用戶提供了非常低的進(jìn)入門檻。但是,我們不能將 Excel 用于復(fù)雜的業(yè)務(wù)工作流,因?yàn)樗鼪]有精細(xì)訪問控制、與不受支持的系統(tǒng)集成的能力、可測試性、可重用性或僅供應(yīng)商鎖定等功能。對于Power Automate等“低代碼”解決方案也是如此。
回到最初的問題,業(yè)務(wù)用戶是否能夠在沒有軟件開發(fā)人員幫助的情況下使用AI 編碼人員創(chuàng)建這些復(fù)雜的工作流程? 在沒有軟件開發(fā)人員幫助的情況下,業(yè)務(wù)用戶是否能夠使用 AI 編碼工具創(chuàng)建這些復(fù)雜的工作流程?
如果你仔細(xì)想想,Excel和低代碼工具已經(jīng)存在了幾十年,那么為什么軟件開發(fā)這個(gè)職業(yè)仍然存在呢?它可以追溯到將軟件開發(fā)視為編寫代碼。對于復(fù)雜的問題,我們需要能夠有效管理這些復(fù)雜性并將業(yè)務(wù)問題從現(xiàn)實(shí)世界領(lǐng)域轉(zhuǎn)化為數(shù)字模型的人。
換句話說,如果你能夠在沒有土木工程師幫助的情況下YouTube教程中建造一個(gè)木棚,并不意味著你可以/應(yīng)該為10層的建筑做同樣的事情。如果你去學(xué)習(xí)如何正確地做到這一點(diǎn),那么你就會慢慢成為一名土木工程師!這只是一個(gè)問題,你是否愿意花時(shí)間正確地學(xué)習(xí)這個(gè),或者聘請一個(gè)有經(jīng)驗(yàn)的工程師為你做這件事。
因此,無論這些人使用的是Excel 還是最新的 AI 編碼器,如果他們正在對復(fù)雜的邏輯進(jìn)行建模,在我看來,他們?nèi)匀皇擒浖_發(fā)人員!他們只是使用不同的工具來表達(dá)業(yè)務(wù)需求 - 電子表格公式、代碼和提示。
框架:餡餅的大小
圍繞這個(gè)話題的大多數(shù)焦慮都假設(shè)軟件開發(fā)市場的規(guī)模保持不變——人工智能程序員將慢慢從人類手中奪走“市場份額”。 、
從上一節(jié)中,我們知道“解決業(yè)務(wù)問題”的市場規(guī)模遠(yuǎn)比軟件開發(fā)大得多。因此,沒有理由相信軟件開發(fā)會很快消失。
框架:正式業(yè)務(wù)邏輯定義
業(yè)務(wù)邏輯必須始終以明確的格式定義。這就是為什么編程語言,即使它們使用“if”、“switch”等英語單詞,也非常講究這些單詞的含義,如果你用錯(cuò)了單詞,它們將不起作用。如果您考慮一下,Excel 公式或低代碼流也是如此。 將來,即使人工智能程序員可以從會話英語中給出的指令中生成軟件產(chǎn)品,我相信后端生成的業(yè)務(wù)邏輯仍然會有一個(gè)潛在的正式定義。它可能看起來與我們今天使用的語言和框架有很大不同,但業(yè)務(wù)邏輯的正式定義聽起來很像“代碼”。
在人工智能編碼人員能夠開始以確定性的方式從會話英語中生成這些業(yè)務(wù)邏輯之前,仍然需要能夠理解它在后端生成的代碼并在必要時(shí)進(jìn)行更改的人。這些人將是軟件開發(fā)人員。
結(jié)論
總而言之,我相信在可預(yù)見的未來,軟件開發(fā)人員仍然會有一個(gè)市場,盡管工作的性質(zhì)會發(fā)生變化,我們將使用的工具可能與我們現(xiàn)在擁有的工具大不相同。