[翻譯]2011年Jolt大獎最佳圖書——《持續交付》

何逸勤發表於2011-10-26

Andrew Binstock

原文連結

過去20年間,我們一直在甄別軟體開發工具中各個類別的最佳產品。圖書無疑是最多候選者的類別,今年也不例外。在2010年7月1日至2011年6月30日出版的所有圖書中,出版商、書店和讀者共選出了51本候選圖書。

候選圖書實在太多了,所以Jolt大獎的評審團決定先將範圍縮小到15本值得推薦的入圍圖書,然後第二輪選擇出最優秀的6本,並排定得獎位次。年度的最佳圖書獲得Jolt優勝獎,其次的兩本獲得Jolt效率獎,剩下的三本就是Jolt入圍獎。對這6本書的位次抉擇,以及另外9本書的取捨,讓大部分評委都覺得相當難辦。很多最終沒有獲獎的圖書都是好書,是值得關注的。我們會另外討論。

以前,我像前面那樣提到入圍圖書難分軒輊時,通常指的是所有的獲獎圖書。不過,今年的情況有點特別,Jolt優勝獎的得主是一騎絕塵的。總而言之,這一結果證實了我最初對這本書的評價,當時我就把它稱為“2010年最重要的技術書”。以下對獲獎圖書的介紹中,我就直接引用了原來的評論了。

(介紹評委成員,略。)

綜合這麼多經驗豐富的評委意見,我們非常有信心,Jolt大獎得主代表了今年圖書的最高成就。

(幾句客套話,略。)

下面,我們一一介紹獲獎圖書。

第一名:Jolt優勝獎

《持續交付:釋出可靠軟體的系統方法》(人民郵電出版社,2011年10月)

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, by Jez Humble and David Farley

在Jolt大獎的評選工作中,我評審了大量的圖書。但是,我已經太長時間沒有讀到這種能夠顛覆產業規則的圖書了。

本書有個基本前提:我們需要在此前持續整合的基礎上再進一步,設計不僅僅是構建和測試的活動的更完整週期。確切地說,這個新方向要求:對每一次簽入,都在所有平臺上進行構建和測試,併為所有平臺建立和部署最終的可釋出版本。這個方法的好處是開發機構在任意給定時刻都擁有:1)對部署問題的即時反饋;2)可部署的可執行檔案;3)在所有平臺上的構建、測試和部署的完整自動化流程。

在為數眾多的活動中進行持續整合,這個簡單概念會產生深遠的影響,而每一個影響都將使你的流程變得更好。最重要的影響是必須自動化以編碼開始的整條流水線,作者強調的確實是每一步。大家對自動化頗有微詞的一個共同點是部署。不過,Humble和Farley說得很清楚,你就必須“揹負著痛苦而前行”,並修補流程,以便它能夠自動化。(如果不清楚怎樣完善和自動化部署,那就考慮一下虛擬化。是否可以在虛擬機器上模擬當前的系統,然後漸進式地簡化軟體的部署,以達到自動化?很好,你已經開始上手了。)

不過,部署的機制只不過是你面臨的挑戰中最不起眼的一個。(這裡順便說一句,本書的書名有點誤導:其實部署只是本書內容的一部分。)你還需要在即將交付的每一個平臺上構建、執行並測試軟體。如果不得不為不同平臺改變配置並重置數值的話,你是沒有可能做得到這一點的。然而,你不必像摩西那樣,在沙漠中痛苦地躑躅了40年都無法跨越約旦河,作者在書中已經給你指明一條路徑了。關鍵在於使用單一的程式碼庫,並將依賴於平臺的資料都轉移到配置檔案中。這不是很容易就做到的,但作者給出了足夠多的好建議。

測試是本書深入討論的另一個主題。在持續交付的環境下,測試就不僅僅是執行單元測試和迴歸套件了,而是執行所有的測試:單元、整合、UAT(User Acceptance Test,使用者驗收測試),等等。如何有效地將它們自動化,可能是本書的篇幅最多的一個分支。即便你不接受持續交付的概念,這部分的內容都絕對已經值回書價了。它以一種嶄新的方式擴充了我們的思路,這是Digg和Reddit上成千上萬關於敏捷測試的文章所從未涉獵的。我們很快就會看到,使用者將可以完成更多的自動化,從慘兮兮的半手動現狀轉變為完整、持續自動化的順暢流程。

本書令我印象深刻的是,作者不斷地挑戰艱難的問題。這些問題絲毫沒有讓作者氣餒,他們根本不打算將這些問題一帶而過。作者憑藉自己廣博的經驗,以獨到的角度細緻地探討了這些艱深的主題。

關於過程這一主題,我實在是從未讀到過比這本更好的書籍。我相信,《持續交付》這本書未來將會重新定義敏捷過程和持續整合。其影響力之於過程領域,將不啻於1999年Martin Fowler的《重構》之於程式碼領域。

並列第二名:Jolt效率獎

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages, by Bruce A. Tate

Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites, by Matthew A. Russell

並列第四名:Jolt入圍獎

The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part 1, by Donald E. Knuth

The Joy of Clojure: Thinking the Clojure Way, by Michael Fogus and Chris Houser

Domain-Specific Languages, by Martin Fowler with Rebecca Parsons

相關閱讀:

圖靈訪談系列之二:喬樑談持續交付

持續交付成熟度模型 V1.2

相關文章