CodeOps:使用LLM和模塊化編碼加快開(kāi)發(fā)進(jìn)程
譯文譯者 | 布加迪
審校 | 重樓
2009年,DevOps(開(kāi)發(fā)運(yùn)維)作為一種運(yùn)維模型而出現(xiàn),適用于想要充分發(fā)揮敏捷軟件開(kāi)發(fā)方法潛力的團(tuán)隊(duì)。它使這些團(tuán)隊(duì)能夠盡快地構(gòu)建和部署,為快速、迭代的開(kāi)發(fā)建立一種新的范式。
隨之而來(lái)的是全球軟件開(kāi)發(fā)的爆炸式增長(zhǎng),DevSecOps、MLOps、AIOps、DataOps、CloudOps和GitOps等相關(guān)框架層出不窮。任何工程職能或核心開(kāi)發(fā)技術(shù)都有相應(yīng)的運(yùn)維框架和市場(chǎng)類別來(lái)加以優(yōu)化。
既然市面上有這么多的解決方案,為何企業(yè)仍難以將大量的“-Ops”策略轉(zhuǎn)化為令人滿意的速度和創(chuàng)新結(jié)果呢?隨著組織不斷適應(yīng)不同的代碼來(lái)源(專有代碼、開(kāi)源代碼和大語(yǔ)言模型即LLM生成的代碼等),它們如何使這些模型適應(yīng)不同來(lái)源的代碼?
CodeOps(代碼運(yùn)維)應(yīng)運(yùn)而生,這種新興方法使用完全擁有和可重用的代碼快速構(gòu)建軟件產(chǎn)品。它利用生成式AI和模塊化編碼概念來(lái)加快開(kāi)發(fā)過(guò)程,加強(qiáng)創(chuàng)新,并最終推動(dòng)更快的數(shù)字產(chǎn)品開(kāi)發(fā)。
CodeOps的工作機(jī)理
與敏捷方法一樣,CodeOps旨在支持并加速企業(yè)內(nèi)部的軟件開(kāi)發(fā)。然而,它不是針對(duì)敏捷性進(jìn)行優(yōu)化,而是針對(duì)重用進(jìn)行優(yōu)化——重用規(guī)范、設(shè)計(jì)、架構(gòu)、數(shù)據(jù)模型、集成以及代碼本身。
長(zhǎng)期以來(lái),重用現(xiàn)有代碼一直是工程師們的一種自然做法。當(dāng)應(yīng)用程序在規(guī)劃階段看起來(lái)相似時(shí),你可以立即識(shí)別出一種合用的架構(gòu),并通過(guò)自動(dòng)組裝其核心部分來(lái)快速啟動(dòng)代碼庫(kù)。優(yōu)秀的開(kāi)發(fā)人員知道這一點(diǎn),偶然會(huì)重用他們自己開(kāi)發(fā)的或在開(kāi)源代碼庫(kù)中找到的代碼組件。
然而,開(kāi)發(fā)人員層面重用帶來(lái)的影響完全依賴團(tuán)隊(duì)的成熟程度,通常沒(méi)有流程或工具來(lái)確保它在整個(gè)組織中有效地?cái)U(kuò)展以提供好處。只有通過(guò)系統(tǒng)性重用才能發(fā)揮這種潛力,即認(rèn)證模塊集中提供,并且易于發(fā)現(xiàn),用在參與應(yīng)用程序開(kāi)發(fā)的諸團(tuán)隊(duì)中。
因此,希望利用CodeOps概念的組織應(yīng)該為范式轉(zhuǎn)變做好準(zhǔn)備。系統(tǒng)性的代碼重用是開(kāi)發(fā)流程邁出的革命性一步。它需要創(chuàng)建一個(gè)集中式存儲(chǔ)庫(kù)來(lái)容納認(rèn)證的模塊,這些模塊經(jīng)過(guò)了必要的審查和廣泛的測(cè)試,以確保功能和安全。目的是創(chuàng)建一大批模塊,可以無(wú)縫地部署到不同的項(xiàng)目和團(tuán)隊(duì)中。
利用生成式AI確保投資回報(bào)最大化
CodeOps也很容易適應(yīng)人機(jī)混合開(kāi)發(fā)領(lǐng)域的新趨勢(shì)。如今,大多數(shù)團(tuán)隊(duì)都了解生成式AI的潛力,可以充當(dāng)伺機(jī)集成的智能助手。然而,他們不確定如何規(guī)劃和跟蹤對(duì)業(yè)務(wù)結(jié)果的影響,并確保這方面的影響最大化。
通過(guò)重構(gòu)團(tuán)隊(duì)構(gòu)建軟件的方式,CodeOps為了解生成式AI的投資回報(bào)提供了一個(gè)框架。它確定大語(yǔ)言模型使用的優(yōu)先級(jí)如下所示:
1. 根據(jù)項(xiàng)目規(guī)范對(duì)現(xiàn)有模塊進(jìn)行組合。
2. 創(chuàng)建與戰(zhàn)略性模塊路線圖一致的新模塊。
3. 為非模塊化用例生成自定義代碼。
在模塊組合方面,大語(yǔ)言模型已經(jīng)達(dá)到或超過(guò)了人類的表現(xiàn)。模塊組合是指這項(xiàng)任務(wù):對(duì)照自定義的產(chǎn)品描述或詳細(xì)規(guī)范,對(duì)已存儲(chǔ)的模塊目錄進(jìn)行模式匹配。這種方法可以顯著地減少傳統(tǒng)軟件開(kāi)發(fā)生命周期的“規(guī)劃和調(diào)校”階段,因此為不懂技術(shù)的利益相關(guān)者節(jié)省了時(shí)間,并縮短了總體開(kāi)發(fā)時(shí)間。
大語(yǔ)言模型還非常適合根據(jù)自定義參數(shù)創(chuàng)建新模塊。如果提示足夠清晰,或者有足夠的組織現(xiàn)有代碼的訓(xùn)練集,它們就能夠?qū)F(tuán)隊(duì)現(xiàn)有的代碼標(biāo)準(zhǔn)推而廣之,從而生成新的、可重用的規(guī)范和代碼模塊。采用系統(tǒng)性代碼重用的組織因此可以根據(jù)內(nèi)部代碼標(biāo)準(zhǔn),快速填充其模塊目錄,與通過(guò)手動(dòng)創(chuàng)建模塊相比,可以在極短的時(shí)間內(nèi)大幅提高生產(chǎn)力。
最后,CodeOps很容易整合由不同開(kāi)發(fā)人員生成的“Copilot”風(fēng)格的AI代碼。然而在CodeOps領(lǐng)域,這種用法局限于定制開(kāi)發(fā)的最后一英里,這是初始模塊組合未能涵蓋的。這減少了團(tuán)隊(duì)今天面臨的投資回報(bào)模糊性:一些開(kāi)發(fā)人員頻繁使用AI,一些卻很少使用AI,但有了CodeOps,你可以確定AI在代碼庫(kù)的哪些部分有望為團(tuán)隊(duì)提升生產(chǎn)力,然后相應(yīng)地進(jìn)行優(yōu)化。
實(shí)戰(zhàn)中的CodeOps
說(shuō)到重用代碼模塊,有兩個(gè)主要的參數(shù)需要考慮:覆蓋率和可重用性。覆蓋率指典型應(yīng)用程序中多少部分是由特定類型的模塊組成的,而可重用性指特定類型的模塊在不同項(xiàng)目中可使用的可能性。
以下是理解覆蓋率和可重用性的幾個(gè)一般規(guī)則:
模塊層 | 示例 | 占典型應(yīng)用程序 的百分比(覆蓋率) | 可重用性 |
基礎(chǔ)設(shè)施 定義和部署 | CI/CD管道 | 5% | 高 |
連接到遠(yuǎn)程 服務(wù) | 身份驗(yàn)證 | 20% | 高 |
與基礎(chǔ)服務(wù) 相關(guān)的應(yīng)用 程序邏輯 | 身份驗(yàn)證 邏輯 | 20% | 高 |
樣式 | 樂(lè)高資產(chǎn) | 5% | 高 |
數(shù)據(jù)庫(kù)模型 | 用戶表 | 10% | 中 |
屏幕布局 | 活動(dòng)源UI | 15% | 中 |
與差異化功 能相關(guān)的應(yīng) 用程序邏輯 | 產(chǎn)品推薦 算法 | 25% | 低 |
值得一提的是,應(yīng)用程序中最大一部分代碼并不總是重用性最強(qiáng)的。這種區(qū)別可以幫助團(tuán)隊(duì)理解在致力于模塊開(kāi)發(fā)時(shí)如何做出正確的取舍。在CodeOps方法中,模塊的構(gòu)建應(yīng)該首先根據(jù)可重用性而不是覆蓋率來(lái)確定優(yōu)先級(jí),以確保實(shí)現(xiàn)的價(jià)值最大化。
為了理解CodeOps如何影響某個(gè)項(xiàng)目,不妨考慮采用CodeOps和不采用CodeOps的示例性的個(gè)人理財(cái)應(yīng)用程序開(kāi)發(fā)時(shí)間表:
不采用系統(tǒng)性重用
- 項(xiàng)目工期:28周
- 項(xiàng)目細(xì)分:
- 需求分析:2周
- 設(shè)計(jì):2周
- 編碼:
- 身份驗(yàn)證流程:3周
- 支付處理集成:4周
- 數(shù)據(jù)驗(yàn)證功能:2周
- 報(bào)告功能:3周
- 額外的自定義功能:6周
- 測(cè)試和調(diào)試:4周
- 部署:2周
采用系統(tǒng)性重用(CodeOps方法)
項(xiàng)目工期:16周
項(xiàng)目細(xì)分:
- 需求分析:1周(重用的規(guī)范)
- 設(shè)計(jì):1周(重用的設(shè)計(jì))
- 編碼:
- 身份驗(yàn)證模塊(重用):1周(集成和定制)
- 支付處理模塊(重用):1周(集成和定制)
- 數(shù)據(jù)驗(yàn)證模塊(重用):1周(集成和定制)
- 報(bào)告模塊(重用):1周(集成和定制)
- 額外的自定義功能:5周(AI Copilot輔助))
- 測(cè)試和調(diào)試:3周(由于重用的認(rèn)證模塊,代碼錯(cuò)誤和不一致有所減少)
- 部署:2周
值得注意的是CodeOps的整個(gè)周期影響。它在整個(gè)過(guò)程中的多個(gè)節(jié)點(diǎn)為多個(gè)團(tuán)隊(duì)提升了生產(chǎn)力,不需要這些團(tuán)隊(duì)大幅改動(dòng)工作流程。
系統(tǒng)性代碼重用的好處
實(shí)施系統(tǒng)性代碼重用帶來(lái)了幾個(gè)明顯的業(yè)務(wù)優(yōu)勢(shì),包括如下:
- 增強(qiáng)靈活性:通過(guò)允許開(kāi)發(fā)團(tuán)隊(duì)使用組織的代碼訪問(wèn)預(yù)認(rèn)證模塊的存儲(chǔ)庫(kù),他們可以定制代碼,并創(chuàng)建完全符合獨(dú)特業(yè)務(wù)需求的應(yīng)用程序。
- 保證一致性:系統(tǒng)性代碼重用確保了應(yīng)用程序之間具有一致性。多個(gè)團(tuán)隊(duì)使用相同的認(rèn)證模塊可以最大限度地減少不一致性,并降低遇到錯(cuò)誤、安全漏洞或兼容問(wèn)題的風(fēng)險(xiǎn)。
- 加快學(xué)習(xí):有了系統(tǒng)性代碼重用,開(kāi)發(fā)人員可以從團(tuán)隊(duì)成員和同事所做的工作中學(xué)習(xí)和完善。這創(chuàng)建了一個(gè)組織知識(shí)庫(kù),縮短了新團(tuán)隊(duì)成員的學(xué)習(xí)過(guò)程,并且在組織內(nèi)打造一種倡導(dǎo)協(xié)作和創(chuàng)新的文化。
- 降低風(fēng)險(xiǎn):經(jīng)過(guò)嚴(yán)格測(cè)試和認(rèn)證的代碼模塊是成熟可靠的,降低了開(kāi)發(fā)和測(cè)試過(guò)程中或發(fā)布后出現(xiàn)關(guān)鍵安全或合規(guī)問(wèn)題的可能性。
- 致力于創(chuàng)新:通過(guò)將開(kāi)發(fā)團(tuán)隊(duì)從不斷處理重復(fù)性的任務(wù)中解放出來(lái),系統(tǒng)性代碼重用鼓勵(lì)他們將精力投入到令人興奮的創(chuàng)新上。他們可以分配更多的時(shí)間和資源,以構(gòu)建獨(dú)特和有價(jià)值的功能,而且結(jié)果更易于預(yù)測(cè),同時(shí)縮短產(chǎn)品上市時(shí)間,以生成新的收入或節(jié)省成本。
一種更好的構(gòu)建方式
最終,擁抱系統(tǒng)性代碼可重用性的CodeOps方法通過(guò)顯著加快交付速度、提升生產(chǎn)力以及在競(jìng)爭(zhēng)激烈的技術(shù)環(huán)境中促進(jìn)創(chuàng)新和協(xié)作,徹底改變了自定義應(yīng)用程序開(kāi)發(fā)。新產(chǎn)品的構(gòu)建和創(chuàng)新是技術(shù)界有趣的部分,這意味著利用CodeOps的組織不僅可以創(chuàng)造較之競(jìng)爭(zhēng)對(duì)手的優(yōu)勢(shì),還可以提升內(nèi)部團(tuán)隊(duì)的生產(chǎn)力和士氣。
原文標(biāo)題:CodeOps: Using LLMs and modular coding to accelerate development,作者:Anand Kulkarni