譯者 | 劉雨瑤
審校 | 孫淑娟 梁策
在過(guò)去的 30 年中,軟件開(kāi)發(fā)取得了很大進(jìn)展。曾經(jīng)人們?cè)谧约旱挠?jì)算機(jī)上管理軟件開(kāi)發(fā)生命周期 (SDLC),在自己的桌面編寫代碼、調(diào)試代碼、構(gòu)建代碼并發(fā)布代碼。源代碼存儲(chǔ)在文件服務(wù)器上,并在每天結(jié)束時(shí)保存一個(gè)壓縮文件來(lái)管理。如果你完全使用具有中央服務(wù)器的代碼版本控制軟件(CVS) 或版本控制系統(tǒng)(SVN),會(huì)使分支和代碼合并成為真正的挑戰(zhàn)。發(fā)布軟件意味著將“黃金”軟盤發(fā)送給制造商,制造商將軟件實(shí)際運(yùn)送到商店和目錄供應(yīng)商。
今天這個(gè)過(guò)程更容易也更復(fù)雜。大多數(shù)新軟件都是通過(guò)瀏覽器交付的。遠(yuǎn)程開(kāi)發(fā)團(tuán)隊(duì)使用復(fù)雜的中央代碼存儲(chǔ)庫(kù)管理大型代碼庫(kù)。他們通過(guò)問(wèn)題跟蹤和溝通工具協(xié)作,并使用專門為此需求而設(shè)計(jì)的工具進(jìn)行持續(xù)集成和持續(xù)部署。軟件即服務(wù)(SaaS,software as a service)交付模型允許團(tuán)隊(duì)隨時(shí)發(fā)布新功能。
這個(gè)過(guò)程需要大量的軟件工具。可能有些人會(huì)說(shuō),有張舒服的辦公椅和寬屏顯示器也能改善開(kāi)發(fā)流程,但在這里我們主要討論軟件工具。
那么現(xiàn)代軟件開(kāi)發(fā)需要哪些軟件工具呢?下文列出了5個(gè)必要工具。
集成開(kāi)發(fā)環(huán)境(IDE)
編寫代碼的難度與日俱增,開(kāi)發(fā)人員需要一個(gè)能夠跟上發(fā)展的工具。好的 IDE允許代碼編輯、語(yǔ)法高亮、代碼補(bǔ)全、源代碼控制管理、編譯和調(diào)試,此外還能提供某種形式的擴(kuò)展應(yīng)用程序編程接口(API,Application Programming Interface),讓任何人都可以增強(qiáng)編輯器的功能。
如果沒(méi)有非常特殊的需求,我建議使用Visual Studio Code(VS Code),因?yàn)樗悄壳白盍餍?、最?qiáng)大、最開(kāi)放和最高效的IDE。VS Code由微軟構(gòu)建和維護(hù)并且開(kāi)源,它幾乎可以處理任何扔給它的編程語(yǔ)言,并且有數(shù)千個(gè)有用的擴(kuò)展,因此非常受歡迎。VS Code是到目前為止的首選工具,有超過(guò) 2000 萬(wàn)開(kāi)發(fā)人員在使用它。添加人工智能自動(dòng)寫代碼插件(GitHub Copilot,GitHub 基于人工智能的編程輔助),為開(kāi)發(fā)人員使用它提供了更多動(dòng)力。
通訊工具
新冠疫情改變了開(kāi)發(fā)團(tuán)隊(duì)合作的方式,突然間,開(kāi)發(fā)團(tuán)隊(duì)人員都在家里工作。當(dāng)他們無(wú)法見(jiàn)面溝通時(shí),就需要一種新的交流方式。聊天群組(Slack)加多人手機(jī)云視頻會(huì)議軟件(Zoom)成為了必要,并延續(xù)到現(xiàn)在。
Slack因?yàn)閼?yīng)用廣泛擁有龐大的插件庫(kù)和集成庫(kù),可以讓你在到處搜索前就做到很多想不到的事情。Zoom則是各種團(tuán)隊(duì)和會(huì)議在事實(shí)上的視頻會(huì)議工具。Slack和Zoom集成在一起可以讓一切變得既簡(jiǎn)單又強(qiáng)大。我非常推薦這種協(xié)作方式,因?yàn)檫@兩種工具受眾很廣,使你更容易與整個(gè)組織的員工、客戶和供應(yīng)商進(jìn)行溝通,而不僅限于開(kāi)發(fā)團(tuán)隊(duì)。
另外我也推薦Microsoft Teams,它是將聊天和視頻會(huì)議結(jié)合在一個(gè)應(yīng)用程序。
源代碼版本控制
分布式版本控制系統(tǒng)(Mercurial) 曾經(jīng)有一段時(shí)間是這里的佼佼者,但源代碼控制工具的最后贏家顯然是Git。如果不使用Git就顯得有些落伍了。
Git 是一個(gè)分布式的版本控制系統(tǒng),但正確使用它需要一個(gè)集中的存儲(chǔ)庫(kù),而GitHub顯然是該領(lǐng)域的領(lǐng)導(dǎo)者。GitHub 是我的選擇,因?yàn)樗^(guò)常見(jiàn),且其不僅僅是一個(gè)代碼存儲(chǔ)庫(kù)。目前,GitHub 是一個(gè)面向開(kāi)源軟件項(xiàng)目領(lǐng)先的托管平臺(tái)。每家公司都應(yīng)該多少在 GitHub 上有些自我展示。
GitHub的一些附加功能包括問(wèn)題跟蹤、代碼審查以及構(gòu)建和部署過(guò)程。GitHub 甚至以其基于Visual Studio Code的Codespaces功能引領(lǐng)瀏覽器中的IDE。
源代碼控制方面次之的是GitLab,它以開(kāi)源版本提供,幾乎在所有方面都緊隨 GitHub。
功能標(biāo)志
我必須承認(rèn),一年前我甚至不知道功能標(biāo)志(feature flags)是什么?,F(xiàn)在,隨著SaaS解決方案允許通過(guò)單擊鼠標(biāo)打開(kāi)和關(guān)閉功能,它們的使用正在增長(zhǎng)。你可以通過(guò)功能標(biāo)志以任何喜歡的方式來(lái)控制功能——按公司、按客戶級(jí)別或按用戶。這使你可以做到一些事情,例如部署一個(gè)測(cè)試版或在一小部分客戶群上測(cè)試“金絲雀”部署方式,了解新功能如何在生產(chǎn)中落地。
用于功能管理的SaaS平臺(tái)LaunchDarkly是佼佼者,它可以讓你對(duì)應(yīng)用程序及其功能的部署方式進(jìn)行強(qiáng)大的控制。技術(shù)領(lǐng)先又還在繼續(xù)擴(kuò)展其功能集的公司很難不去選擇。
持續(xù)集成/持續(xù)部署(CI/CD)工具
多年來(lái)我一直在做持續(xù)集成。但是持續(xù)部署更新、更具挑戰(zhàn)性,甚至有點(diǎn)可怕。CI/CD需要構(gòu)建軟件、運(yùn)行測(cè)試,將工件放在正確的位置,配置云資源,將應(yīng)用程序部署到多個(gè)位置,以及任何數(shù)量的不同活動(dòng)。這些活動(dòng)從代碼上傳的那一刻起就盡可能快地進(jìn)入了獲取代碼的過(guò)程。
許多團(tuán)隊(duì)正試圖將從代碼上傳到部署的時(shí)間,從幾天縮短到十五分鐘。你沒(méi)有看錯(cuò),這就是可怕的部分——如此迅速地將某些東西投入生產(chǎn)意味著你需要準(zhǔn)備好快速做出反應(yīng)。從好的方面來(lái)說(shuō),如果出現(xiàn)問(wèn)題,較短的部署時(shí)間可以提供即時(shí)反饋,使開(kāi)發(fā)人員能夠?qū)⒆罱牡纳舷挛睦斡浽谛模⒃阱e(cuò)誤發(fā)生時(shí)更快速、更輕松地修復(fù)錯(cuò)誤。
正確執(zhí)行CI/CD需要強(qiáng)大的工具包。幸運(yùn)的是,有CircleCI可以做到這一切,它與大量的框架和系統(tǒng)連接以快速構(gòu)建和部署應(yīng)用程序。我喜歡CircleCI的完整功能集、速度和合規(guī)性。
此外,開(kāi)源CI/CD工具Jenkins也是一個(gè)值得推薦的工具。
IDE、溝通工具、源代碼控制、功能標(biāo)志和CI/CD是進(jìn)行現(xiàn)代軟件開(kāi)發(fā)最基本的五種工具。這些工具互相協(xié)同,以最大限度地減少編碼和將代碼投入生產(chǎn)的用時(shí)。此外,它們也都是可以基于云,讓你不必?fù)?dān)心工作之外的其他事情。無(wú)論是在基于云的IDE中進(jìn)行編碼,還是使用強(qiáng)大的CI/CD工具在幾分鐘內(nèi)進(jìn)行部署,這些工具都將為軟件開(kāi)發(fā)過(guò)程鋪平道路。
譯者介紹
劉雨瑤,51CTO社區(qū)編輯,驅(qū)動(dòng)開(kāi)發(fā)工程師。關(guān)注電容屏相關(guān)領(lǐng)域,包括效果算法以及集成電路設(shè)計(jì),最近在學(xué)習(xí)驅(qū)動(dòng)等方面的知識(shí)。
原文標(biāo)題:??5 developer tools to rule your SDLC??,作者:Nick Hodges