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