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