推薦序一
《敏捷開發(fā)的藝術(shù)》第一版發(fā)行于2009年,一經(jīng)發(fā)行便成為了眾多軟件從業(yè)者在工作、生活中隨手可及的瑰寶。作為軟件從業(yè)者的我們,都曾為這本書著迷。當華章的編輯老師推薦我們編譯這本書第二版的時候,我們欣然答應。
可以確信的是,《敏捷開發(fā)的藝術(shù)》第二版依舊精彩,它將現(xiàn)代軟件交付濃縮到一本簡短、可讀并且有趣的書中。對于剛接觸迭代交付的人來說,它針對敏捷實踐提出了精彩的概述;對于迷失在過度工程化的“大規(guī)模敏捷”流程中的團隊來說,它提供了逃離此“地獄”的好主意。我們在翻譯的過程中也融入了很多我們的見解和實踐,我們相信這本書會繼續(xù)幫助數(shù)以百萬計的開發(fā)者改善軟件交付方式。
如何深入思考敏捷思想在現(xiàn)代數(shù)字化時代所扮演的角色?
2000年初,敏捷剛進入中國的時候,國內(nèi)的軟件從業(yè)者對敏捷還是懵懂的狀態(tài)。十多年來,大家對敏捷的理解日益加深,都意識到傳統(tǒng)開發(fā)模式帶來的問題,不斷剖析著瀑布模型的適應局限以及給業(yè)務(wù)、IT部門帶來的痛點。研發(fā)團隊越來越重視對業(yè)務(wù)的響應速度。大多數(shù)企業(yè)的研發(fā)團隊已經(jīng)理解實施敏捷的益處,很自然地接受并開始踐行敏捷:
引入敏捷的管理實踐,比如需求管理、用戶故事、進行迭代管理、制定發(fā)布計劃
引入敏捷的工程實踐,比如結(jié)對編程、代碼管理、自動化測試、持續(xù)集成、持續(xù)發(fā)布等
引入相應的團隊工具,比如看板、線上協(xié)作、知識管理與協(xié)同、事務(wù)跟蹤等
然而時至今日,在與很多企業(yè)的CIO、CTO、以及IT部門的各級主管交流時,我依然可以看到:大多數(shù)企業(yè)IT部門的職能還停留在“業(yè)務(wù)支持”的程度,是為業(yè)務(wù)部門提供IT系統(tǒng)支持的組織。這也造成了傳統(tǒng)企業(yè)中IT部門的員工,更多的是承擔甲方項目經(jīng)理的角色。IT部門的員工在業(yè)務(wù)或?qū)I(yè)能力上很難得到持續(xù)的積累和沉淀,整個研發(fā)團隊的生產(chǎn)力和創(chuàng)新氛圍也受到影響。與此同時,IT部門面前有成百上千個需要用?昂的成本進?支持和維護的遺留系統(tǒng),盡管他們愿意響應快速變化的市場需求,但在項目周期與成本壓力面前,卻又顯得力不從心。
《敏捷開發(fā)的藝術(shù)》猶如一本圣經(jīng),將敏捷軟件開發(fā)的理論與實踐娓娓道來,切實地幫助我們分析并解決上述問題。在今天,敏捷思想在業(yè)內(nèi)廣受尊重,客戶也常常期望我們助其變得敏捷。 目前的挑戰(zhàn)是軟件世界被“偽”敏捷所淹沒,許多公司認為完成 Scrum/SAFe,數(shù)字化工作就結(jié)束了。殊不知我們現(xiàn)在所說的敏捷,早已不限于敏捷研發(fā)和敏捷項目管理。
事實上,敏捷的概念已經(jīng)擴散到組織的每個領(lǐng)域,而數(shù)字化時代需要的是打造敏捷的組織實踐。我們認為,“數(shù)字變革”是這一變化的重要推動力。人們意識到軟件已經(jīng)成為商業(yè)活動的重要部分,技術(shù)再只作為成本削減的工具。更為重要的是,業(yè)務(wù)與科技之間的整體關(guān)系將被重新定向——敏捷思想是業(yè)務(wù)數(shù)字重定向的核心,在數(shù)字化轉(zhuǎn)型中起到重要作用。在此基礎(chǔ)上,咨詢顧問通過建立統(tǒng)一的流程、打造共享的技術(shù)平臺、建立創(chuàng)新型的組織文化來不斷推進業(yè)務(wù)與IT的深度融合。
數(shù)字化轉(zhuǎn)型有一個非常重要的目的,就是讓客戶和最終的生產(chǎn)者距離更近,提升效率,進而降低客戶和企業(yè)內(nèi)部交易成本。轉(zhuǎn)型的關(guān)鍵在于拉通客戶端的需求和企業(yè)內(nèi)部生產(chǎn)運營,這就需要企業(yè)內(nèi)部各個部門的快速協(xié)作與靈活變通,這些工作是最難的。作為數(shù)字化轉(zhuǎn)型顧問和大型研發(fā)團隊的領(lǐng)導者,我很慶幸看到本書的問世,書中的很多實踐、工具、流程以及敏捷開發(fā)的藝術(shù)正在幫助我們推進數(shù)字化轉(zhuǎn)型。
建議大家靜下心來,閱讀這樣一本好書。祝閱讀愉快!
萬學凡 凱捷中國副總裁,數(shù)字化團隊負責人
推薦序二
本書書名包含「藝術(shù)」一詞,但實際上更是一本詳盡的手冊,它闡述了敏捷研發(fā)的各個方面:從文化、管理、團隊合作到開發(fā)和設(shè)計的原則與質(zhì)量,以及持續(xù)集成等內(nèi)容,全面地講明了要在敏捷開發(fā)中取得成功,我們需要關(guān)注的核心問題。?
作為知乎的CTO,我一直在追尋卓越的軟件開發(fā)實踐,本書讓我看到了知乎實踐在書中的映射。它如同一盞明燈,照亮了我們前行的道路,使我們更加堅信自己前進的方向。作者在本書中深入淺出地探討了敏捷開發(fā)的核心理念,強調(diào)了文化與價值觀的重要性。他們指出,敏捷開發(fā)不僅僅是一套流程,更是一種思維方式和團隊的共同理念——文化才是真正支撐和推動敏捷開發(fā)的根基。在我們的實踐中,這種文化變革同樣至關(guān)重要,只有當每一位團隊成員都以相同的敏捷精神對待工作,才能真正發(fā)揮敏捷方法的威力。?
書中對敏捷團隊合作的描述也令我深感共鳴。團隊是軟件開發(fā)的核心,而敏捷團隊則更加高效和靈活。作者強調(diào)了協(xié)作、自組織和跨功能的重要性,這也與我們在知乎的實踐緊密貼合。唯有于此,在追求創(chuàng)新和持續(xù)發(fā)展的過程中,每個團隊成員的才華和貢獻才能得到最大程度的尊重和發(fā)揮。當然,書中所論及的不僅僅是團隊合作,作者更是剖析了敏捷開發(fā)的各個環(huán)節(jié),每個章節(jié)都體現(xiàn)了大師們對于軟件研發(fā)的精湛理解。這些原則和實踐對于保障軟件的高質(zhì)量和穩(wěn)定性至關(guān)重要,也正是我們這些軟件從業(yè)者一直追求的目標。 在本書中,我找到了很多知乎團隊所需要的啟示和指引,每一頁都散發(fā)著智慧與洞見,每一章都激勵著我們更加努力地追求卓越。這是一本我們值得擁有的書籍,我相信它也將成為將敏捷組織作為前行目標的團隊必備指南。?
這本書第一版在十多年前就已發(fā)行,粉絲眾多。很多在那個年代還很超前的理念,在今天已經(jīng)成為了行業(yè)里普遍認同的最佳實踐。隨著大模型等新興AI 技術(shù)的演變,我們也正在思考如何將先進的技術(shù)引入到我們的敏捷實踐中,期待看到作者和譯者在未來的著作中有更多對于這些方向的實踐和思考。讓我們一起努力。
知乎CTO兼面壁智能CEO 李大海
推薦序三
開發(fā)軟件產(chǎn)品是為了解決業(yè)務(wù)問題,特別是復雜的業(yè)務(wù)問題。我們?yōu)槭裁葱枰艚??因為世界變化太快,無論是外部的市場環(huán)境、消費者習慣、行業(yè)競爭,還是企業(yè)自己的業(yè)務(wù)、戰(zhàn)略、組織、流程,隨時隨地都在發(fā)生著變化,這就造成了業(yè)務(wù)問題的不穩(wěn)定、不確定、復雜和模糊。要解決復雜多變的業(yè)務(wù)問題,需要基于對業(yè)務(wù)和用戶的深刻洞察,快速測試與驗證假設(shè),持續(xù)不斷地迭代解決方案,這正是敏捷。
企業(yè)管理追求確定性,特別是財務(wù)相關(guān)流程,比如營收預測和預算管理。因此,許多企業(yè)管理者習慣于使用瀑布式的項目管理來開發(fā)軟件產(chǎn)品。這種長期的瀑布式項目管理是基于確定性的,認為業(yè)務(wù)需求和方案設(shè)計在項目計劃階段就可以確認清楚,在項目執(zhí)行階段只需要精確管理建設(shè)過程,就像蓋房子一樣,由此就可以保證成功。然而現(xiàn)實情況卻并非如此,僅在項目建設(shè)階段,許多業(yè)務(wù)需求就已經(jīng)發(fā)生了顯著變化;項目組則往往會極力去管控這些變更,希望按照原定計劃上線。在經(jīng)歷了千辛萬苦后,項目終于成功上線了,然而仍然無法解決原本希望解決的業(yè)務(wù)問題——沒有能夠創(chuàng)造業(yè)務(wù)價值,項目實際上是失敗的。
企業(yè)要想從傳統(tǒng)的管理模式轉(zhuǎn)變?yōu)槊艚?,需要一場變革,涉及到組織、流程、人員和工具等方方面面,充滿了各種挑戰(zhàn)。本書為我們提供了全面的幫助——這本敏捷工具書面向的讀者包括企業(yè)管理者、敏捷團隊成員以及所有與敏捷團隊合作的同仁。作為企業(yè)管理者,可以了解敏捷理念和運作方式,以及如何引入敏捷或者改善公司現(xiàn)有的敏捷實踐;作為敏捷團隊成員,可以學習如何持續(xù)改善團隊合作、流程和工程實踐,持續(xù)提升交付質(zhì)量與創(chuàng)造價值。因為本書涵蓋的話題十分廣泛,作者無法盡述所有方面,讀者可以關(guān)注書中的延伸閱讀,對感興趣的主題進一步學習;與此同時,譯者在每一章節(jié)都加入了導讀,其中的專業(yè)見解和洞察也讓本書更具價值。
認知升級,知行合一需要持續(xù)地學習和新鮮思想的輸入。感謝這樣一本好書,祝所有思考者與踐行者好運。
王泳帥 寶潔大中華區(qū)信息技術(shù)部CTO
推薦序四
今天的軟件行業(yè)和十多年前相比發(fā)生了天翻地覆的變化,敏捷開發(fā)已是軟件領(lǐng)域中的主流,儼然成為現(xiàn)代系統(tǒng)開發(fā)和數(shù)字化轉(zhuǎn)型的核心。軟件行業(yè)的創(chuàng)新也從未停止,ChatGPT不僅替代人工用于軟件測試,提供運維支持,甚至還能直接編寫代碼。象牙塔里追求優(yōu)雅代碼的軟件工程師不斷思考著如何為項目和組織帶來更高的透明度,追求更合理的迭代過程和更快的反饋。
在我所處的團隊中,我們正在不斷學習和實踐敏捷開發(fā)的方法和工具。同時,我們意識到團隊需要將敏捷開發(fā)的理念和文化貫穿到整個組織中,這是一個知易行難的過程。我們重視團隊建設(shè)和人才培養(yǎng),致力于建設(shè)高效協(xié)作的團隊文化。此外,我們建立了敏捷的組織架構(gòu)和流程,通過技術(shù)打破傳統(tǒng)的職能壁壘,以實現(xiàn)團隊的快速響應。這需要我們具備持續(xù)學習和實踐的能力,不斷提高自身的敏捷性,積極探索和應用新技術(shù),不斷創(chuàng)新、優(yōu)化業(yè)務(wù)流程和產(chǎn)品服務(wù)以提升用戶滿意度。這是本書為我?guī)淼淖畲髥⑹尽?/p>
淺白中見深刻,不顯山露水卻又筆墨橫姿,這是本書的風格。要掌握敏捷,意味著超越我們所列出的實踐方法。敏捷開發(fā)與具體環(huán)境的關(guān)系十分緊密,不可能有一種方法完全適合所有的情況。敏捷開發(fā)也十分精妙,任何一本書都不可能教會你怎樣精通它,精通來自經(jīng)驗,也來自于對一種選擇所能引發(fā)的后果有直覺的理解。
本書在講述敏捷原理和實踐同時,提供了許多實際案例,幫助讀者理解如何在實際項目中應用敏捷方法。沒有任何過程是完美的。每一種方法都有一些潛在的需要改進的地方。我們的目標是消除位于團隊和項目成功之間的每一道障礙,并且當條件改變時隨時調(diào)整我們的方法以適應新的情況。這就是敏捷。
感謝譯者,為我們帶來了一本經(jīng)典好書。要掌握敏捷開發(fā)的藝術(shù),我們需要經(jīng)驗和感悟。經(jīng)驗能使我們看到敏捷方法如何起作用。感悟則能幫我們理解經(jīng)驗。經(jīng)驗和感悟,永無止境地連接在一起,這是通向精通之路。與各位共勉。
吉利汽車數(shù)字化中心CTO 鄭金偉
推薦語
軟件工程是一門在危機中誕生的學科。每一個軟件從業(yè)者,從程序員到架構(gòu)師,從運維人員到企業(yè)高管,都有著被各種deadline和bug所支配的焦慮經(jīng)歷。作為一種價值觀和開發(fā)者文化,敏捷以獨特的形式為軟件從業(yè)者開啟了一條在效率和質(zhì)量間取得平衡的途徑。與初版相比,本書第二版內(nèi)容上更加充實,不僅體現(xiàn)了近年來敏捷實踐的最新進展,而且其編排體例和行文風格也能幫助讀者快速定位自己感興趣的觀點和內(nèi)容。無論你希望掌握敏捷的藝術(shù),還是想成為一名熟悉敏捷工具的實用主義者,這本書都能讓你開卷有益。
華中科技大學軟件學院教授?沈剛?
敏捷開發(fā)誕生三十年以來,為什么變得越來越重要?因為無論是企業(yè)外部市場環(huán)境、行業(yè)競爭,還是內(nèi)部的戰(zhàn)略、組織,都充滿了越來越多的易變性、不確定性、復雜性和模糊性。需要以人為核心、迭代式、增量式的軟件開發(fā)方法,強調(diào)團隊的合作、溝通和技術(shù)能力,快速響應變化和需求,這是敏捷開發(fā)的本質(zhì)。
本書詳細介紹了敏捷方法的各個環(huán)節(jié),包括需求分析、計劃制定、開發(fā)流程、測試和部署等,讓讀者全面了解敏捷方法的理念、流程、工具和技術(shù);提供了許多實用工具和技巧,幫助讀者在實際項目中更好地應用敏捷方法,提高軟件開發(fā)的效率和質(zhì)量。此外,作者還深入探討了敏捷方法的哲學和思考方式,讓讀者更好地理解敏捷開發(fā)的本質(zhì)和核心理念。
本書不僅適合開發(fā)人員和項目經(jīng)理,也適合想要了解敏捷開發(fā)的企業(yè)領(lǐng)導和業(yè)務(wù)人員。通過閱讀本書,讀者可以更好地了解敏捷開發(fā)的理念和實踐,為企業(yè)的數(shù)字化轉(zhuǎn)型提供有力的支持。
小魚易連CEO、清華大學EMBA 王飛
在敏捷宣言誕生的二十年內(nèi),對于敏捷的愿景和方法,已經(jīng)有很多出版物作出了詮釋和解讀。但知易行難, 在我們的工程團隊與客戶轉(zhuǎn)型敏捷項目交付的過程中,對敏捷的理解和實踐總有不同的認識與交付結(jié)果。是流于形式的工具和流程,還是忠實敏捷的精神,回歸初心,重新關(guān)注宣言中的左項價值?項目實踐中,這些沖突會一直在技術(shù)理念與商業(yè)利益的博弈中反復拉鋸。
本書再版正是在這些沖突和流于形式的敏捷誤區(qū)的基礎(chǔ)之上,作者針對第一版落地方法的實踐幾乎都進行了重寫。認真、客觀地對敏捷在商業(yè)世界運行的多年經(jīng)驗進行了剖析和解讀,專注于價值本身。同時分析了規(guī)模化敏捷失敗的可能原因,以及與DevOps的結(jié)合應用,對敏捷方法在團隊中的運用做出了詳盡指導。作為團隊管理者,毋庸置疑,本書為我們提供了一本最佳指南。
凱捷咨詢云與人力資本管理服務(wù)線總經(jīng)理 徐飛
君子不器,敏捷同樣如此。從敏捷宣言發(fā)布以來的20多年時間,逐漸發(fā)展出來了很多流派、方法、實踐,敏捷不應該像一個器具那樣,只具有一種功能或只限于某種特定場景。在本書中,我們看到了敏捷本身與時俱進的變化,在演變的過程中不斷完成自我迭代,更加具有實操性、更加關(guān)注業(yè)務(wù)價值,所以也越來越多地應用于不同領(lǐng)域、不同行業(yè)并取得成功。本書完全可以作為一位軟件從業(yè)人員的案邊書籍,當我們在研發(fā)過程中自認為對很多方法融會貫通的時候,建議再翻看本書,一招一式拆解一遍。不忘初心,我們都會有新的思考和成長。
OPPO軟件IT部部長 裴哲
敏捷開發(fā)的藝術(shù),書如其名。無論是敏捷團隊的成員,還是工作在一線的管理者;無論是初識敏捷的新生,還是運用自如的老手,都值得一讀。敏捷的本質(zhì)是以客戶價值為核心,不斷擁抱變化以快速響應客戶需求。如何界定價值,應該擁抱什么頻率的變化, 以什么樣的速度響應客戶需求, 快速交付與質(zhì)量保證如何平衡? 踐行敏捷的我們或多或少會有類似的疑問。本書提供了豐富的最佳實踐指南, 定能為我們答疑解惑。祝開卷有益。
寶潔信息技術(shù)研發(fā)總監(jiān) 童熙
談起敏捷開發(fā),一百人眼中可能有一百種不盡相同的理解。做產(chǎn)研的同學如果說自己團隊的交付不是敏捷的,感覺會被當成不入流的異類,但真正投身敏捷的諸位所經(jīng)歷的變革過程和酸甜苦辣唯有自己知曉。正如本書十五年后再版,回歸初心,重申敏捷宣言和要解決的核心問題,提綱挈領(lǐng)的強調(diào)敏捷是一種投資以及敏捷本質(zhì)上帶來了組織價值交付方式的變革。
本書系統(tǒng)化地從團隊合作基礎(chǔ)開始,將我們都很“熟悉”的敏捷要素一一解讀,融入15年間無數(shù)團隊實踐敏捷的得失體驗。結(jié)構(gòu)化的敘述,擲地有聲的分享,讓我們受益匪淺。其中的規(guī)?;艚?,團隊建設(shè)等章節(jié)更是讓我感同身受。本書會給大家一個停下腳步,重新審視前行方向的契機。推薦閱讀,與各位共勉。
阿迪達斯中國數(shù)字化中心高級總監(jiān) 王博
距離本書第一版已超過十五年,對眾多敏捷開發(fā)的從業(yè)者而言,它都是不可不讀的經(jīng)典。本次再版,既是在前作經(jīng)典之上的延續(xù),也是通過全面重寫將這十幾年來軟件研發(fā)的發(fā)展歷程娓娓道來。我強烈推薦這本敏捷開發(fā)的經(jīng)典之作,建議我們都能沉下心來仔細研讀,從中找到自己心中一直不斷追尋的答案。
華為云應用平臺部首席解決方案架構(gòu)師 姚冬
本書的主要作者James Shore是敏捷開發(fā)早期的先驅(qū)者,開創(chuàng)了極限編程的先河;James與本書合作者之一的Diana Larsen共同創(chuàng)建了“敏捷流暢度模型”(Agile Fluency Model)。當我們翻開本書,受益于大師們鐫寫的經(jīng)典,在字里行間中我們能夠更深刻地理解敏捷實踐,感受在踐行企業(yè)敏捷轉(zhuǎn)型過程中的包容與思辨。感謝這樣一本好書,中國的敏捷實踐者,加油!
榮慶物流信息技術(shù)部總監(jiān) 劉永生
在軟件開發(fā)的世界里敏捷早已不是一個新鮮詞,但能夠?qū)⒚艚葑龊玫慕M織卻并不多。本書從敏捷的起源、理論入手、再結(jié)合實踐,深入淺出地探討了如何踐行敏捷,最大化組織與個人價值,從而推動整個企業(yè)的敏捷轉(zhuǎn)型。對于軟件從業(yè)者,本書亦是一本非常好工具手冊,我們可以像查閱字典一樣進行針對性地閱讀,為我們答疑解惑。
默沙東中國IT產(chǎn)品總監(jiān) 黃飛銘
數(shù)字化浪潮的推動下,所有企業(yè)都將從信息化進入到數(shù)字化,這必然導致軟件開發(fā)的規(guī)模和復雜度繼續(xù)提升,軟件研發(fā)面臨著“技術(shù)”以外的挑戰(zhàn)將會成倍增加。在疫情后每一個技術(shù)管理者都在尋找如何降本增效,保持團隊創(chuàng)新活力和效能的方案。我一直認為,敏捷軟件研發(fā)為眾多IT工作者提供了一種解決問題的優(yōu)雅之道,本書中作者和譯者深入淺出地解釋了敏捷的原理、實踐與案例,幫助讀者理解在實際項目中應用敏捷的思想與方法,幫助技術(shù)管理者在數(shù)字化轉(zhuǎn)型的今天推動整個企業(yè)的敏捷轉(zhuǎn)型。見賢思齊,我會向TGO鯤鵬學社的小伙伴們推薦本書,讓我們一起成長。
TGO北京董事會董事、清華大學EMBA 王磊
當我們正苦惱著該如何擁抱敏捷,并期待藉由敏捷之道來推動數(shù)字化轉(zhuǎn)型的時候,本書已將其寶貴的經(jīng)驗與扎實的工具組合集結(jié)成冊,從基礎(chǔ)入門到案例拆解、從思維啟蒙到追求卓越,以高效、深刻的方式引導著在VUCA時代生存的每一個團隊與企業(yè)。感謝譯者為我們帶來這樣一本實用又精彩的好書,也非常慶幸在追求敏捷的道路上有這樣一本好書相伴。打開它,讓我們一起敏捷吧!
金融業(yè)首席信息官 馮勝雄
我非常高興看到《敏捷開發(fā)的藝術(shù)》第二版的翻譯出版。相比第一版,過去的十多年里,敏捷開發(fā)在軟件領(lǐng)域得到了更多實踐,并取得了更大的發(fā)展。它不僅僅是一本關(guān)于敏捷開發(fā)的操作指南,更是一本帶領(lǐng)讀者探索軟件開發(fā)藝術(shù)的良師益友。
無論你是軟件開發(fā)新手還是資深從業(yè)者,這本書都將為你和你的團隊提供寶貴的知識和實踐經(jīng)驗。在此感謝譯者團隊,你們長期工作在中國敏捷開發(fā)實踐的第一線。正是這些常年實踐的積累,使你們能夠深刻理解敏捷開發(fā)的真諦,并用最好的方式將其呈現(xiàn)給廣大讀者,使這本書成為一本既實用又易讀的精美之作。
愿更多的讀者通過這本書學習到敏捷開發(fā)的方法,領(lǐng)略敏捷開發(fā)的藝術(shù),并在探尋敏捷之道的過程中有所收獲。
極客邦科技副總裁 & TGO鯤鵬會總經(jīng)理 楊攀
譯者序
關(guān)于本書
本書第一版在2008年出版,當時敏捷的思想才剛剛開始在軟件開發(fā)領(lǐng)域萌芽,許多人對敏捷的理解還停留在表面層次。如今,經(jīng)過十多年的發(fā)展,敏捷已經(jīng)成為了軟件行業(yè)的主流方法。然而,敏捷的實踐和理念仍在不斷演變,和眾多軟件從業(yè)者一樣,我們發(fā)現(xiàn)才剛剛開啟敏捷開發(fā)這扇大門,走進這座藝術(shù)的殿堂。我們想,這正是這本著作再版的原因。
第二版中,作者詹姆斯·肖爾(James Shore)充分運用過去十余年的新工具、技術(shù)和經(jīng)驗教訓,對第一版進行全面更新和升級。整合極限編程、Scrum、精益、DevOps等領(lǐng)域的最新理念,并結(jié)合其二十多年的敏捷實戰(zhàn)經(jīng)驗,為敏捷的采用、計劃、交付和管理提供有效建議。本次再版中,作者融入了大量精彩案例,并通過講述各種故事,為讀者提供全面、深入的敏捷實踐視角。這與我們所在團隊倡導的敏捷理念一致:敏捷不僅是一種開發(fā)方法,更是一種思維方式和價值觀。
本書共分為四個部分,旨在幫助讀者深入理解敏捷實踐,提升敏捷項目的價值和成功率。第一部分講述敏捷的本質(zhì)和追求真正的敏捷實踐,通過敏捷力的選擇、投資和擴展,引導組織實現(xiàn)敏捷轉(zhuǎn)型;第二部分關(guān)注價值導向的敏捷項目,圍繞團隊合作與持續(xù)改善,確保項目始終關(guān)注價值創(chuàng)造;第三部分詳述敏捷實踐中協(xié)同合作、開發(fā)、設(shè)計、DevOps和質(zhì)量的重要性,旨在提高軟件交付的可靠性和客戶滿意度;第四部分探討敏捷實踐在自主性、探索和展望未來方面的優(yōu)化,指導團隊更好地把握產(chǎn)品規(guī)劃、預算和實驗,以設(shè)計市場領(lǐng)先的軟件產(chǎn)品。
關(guān)于翻譯
作為凱捷數(shù)字化團隊的成員,我們非常榮幸翻譯并與您分享本書。與本書的原作者James Shore一樣,我們不僅是軟件開發(fā)者、敏捷教練,也積極參與社區(qū)的建設(shè)和推廣。我們在團隊中承擔不同的職責;我們一起探討軟件開發(fā)的各個方面,包括敏捷開發(fā)、測試驅(qū)動開發(fā)、重構(gòu)和持續(xù)集成等;我們堅信敏捷開發(fā)是一門藝術(shù),它正推動著整個行業(yè)的發(fā)展。
凱捷中國數(shù)字化團隊在端到端的產(chǎn)品與項目交付方面具有豐富實戰(zhàn)經(jīng)驗,我們與作者一樣都致力于敏捷實踐,在翻譯的過程中對于作者的觀點和提供的故事,我們感同身受。然而,在翻譯過程中我們也面臨挑戰(zhàn)和困難。首先,敏捷開發(fā)領(lǐng)域廣泛且復雜,涵蓋眾多知識和實踐。因此,我們在翻譯過程中需仔細研究和理解每個概念及實踐,并反思在團隊敏捷實戰(zhàn)中的應用,確保準確地翻譯成中文。其次,我們在翻譯過程中遇到了術(shù)語和概念的翻譯問題,需要深入研究和討論,以確保翻譯的準確性和一致性。盡管過程中遇到困難,但我們始終保持高度熱情和專注。
我們在每個章節(jié)的開始都加入了“譯者導讀”,這也是我們在閱讀本書時的總結(jié)和歸納。我們希望讀者在輕松的閱讀中,能和我們一樣從中悟出一些哲理。我們希望通過努力讓更多的讀者學習并分享書中的內(nèi)容,以幫助更多數(shù)字化從業(yè)者從中受益,這是我們不變的初心。
感謝
感謝所有參與本書審校的人員,他們是田楮夢、王艷春、呂征達、孫笑怡、朱偉章、陳蕾、杜佳宇、肖博懿、張立、張明鑫。肖博懿負責了“譯者導讀”部分的整體設(shè)計,她的專業(yè)領(lǐng)讀為本書帶來了更多價值。感謝所有人的辛勤工作與無私付出。敏捷開發(fā)的一個重要特點是強調(diào)團隊合作和持續(xù)交互。本書的翻譯也是遵循了這樣的合作模式,我們在一起緊密合作,不斷獲取反饋,并對譯文作出調(diào)整。這種持續(xù)的交互和反饋機制,幫助我們順利完成本書的翻譯。
敏捷開發(fā)是一種高效、靈活和可持續(xù)的軟件開發(fā)方法,它已經(jīng)成為了當今軟件開發(fā)中不可或缺的一部分;敏捷開發(fā)更是一門藝術(shù),為推動軟件開發(fā)行業(yè)的進步和發(fā)展做出了重要貢獻。希望各位喜歡我們?yōu)榇蠹揖臏蕚涞暮脮?。祝開卷有益。
凱捷中國數(shù)字化團隊 吳衍剛、宋俊毅,梁凌銳、姚文杰

譯者導讀
第一章 什么是敏捷
敏捷思想起源于20世紀90年代“軟件危機”時期。當時,一些輕量級的軟件開發(fā)方法引起了廣泛關(guān)注。然而,《敏捷宣言》的誕生改變了這一局面,它定義了敏捷的三個要素:名稱、價值和原則。
“敏捷開發(fā)方法是適應性的,而非預測性的;是面向人的,而非面向過程的。”這段話是對敏捷軟件開發(fā)本質(zhì)最好的解釋之一。
敏捷之所以成功,是因為其關(guān)注點在于確保進展清晰可見,同時允許利益相關(guān)者在開發(fā)過程中進行糾正。敏捷之所以如此有效,是因為其包含并遵循其五個核心概念:以人為本、交付價值、消除浪費、追求技術(shù)卓越、改進流程。且人們在采納敏捷理念的同時,能夠根據(jù)自身情況進行調(diào)整和持續(xù)改進。
然而,很多個人和組織會陷入對于敏捷的“貨物崇拜”陷阱之中,而這也可能導致敏捷的失敗。盡管人們渴望敏捷所帶來的好處,卻往往缺乏對其背后的理念的深刻理解。即便理解了,他們也可能不愿意投入。
第二章 如何做到敏捷
要將敏捷思想轉(zhuǎn)化成實際有效的敏捷團隊,關(guān)鍵在于大量的實踐。
通過大量的實踐,團隊可以將敏捷從理念的集合轉(zhuǎn)化為切實可行的工作方式,融入到團隊的日常實際操作中。在使用引入敏捷的過程中,掌握敏捷需要采用一系列特定的方法,而真正精通敏捷則需要經(jīng)歷這樣一種演進過程:遵循規(guī)則,打破規(guī)則,拋棄規(guī)則,最終能夠靈活地運用敏捷。
引入敏捷的首要步驟是選擇一個或多個團隊,確保敏捷方法適合這些團隊,在引入敏捷前的準備階段,需要做好準備工作,如選擇合適的敏捷教練、為團隊提供必要的資源,例如會議室,并協(xié)助團隊成員規(guī)劃好好第一周的工作。然后,逐步引入敏捷方法,對現(xiàn)有團隊運作方式進行改進。
在引入敏捷實踐時,如果無法一開始就全面實施敏捷,可以逐步將部分敏捷實踐融入現(xiàn)有流程中。一些成功的敏捷實踐包括每日計劃、迭代開發(fā)、回顧會議、快速反饋、持續(xù)集成、測試驅(qū)動開發(fā)等。
第三章 選擇適合你的敏捷
敏捷是否能幫助我們?nèi)〉贸晒Γ咳绾螌崿F(xiàn)成功?只有能回答這些問題,才能判斷敏捷是否適合團隊。此外,敏捷對不同團隊,甚至是同一公司內(nèi)的不同團隊,效果可能也會截然不同。這些差異來源于團隊所處的“區(qū)域”不同,導致流暢度不同。
敏捷流暢度模型將這一“區(qū)域”劃分為四個部分:
專注區(qū):關(guān)注與商業(yè)成果??缏毮艹蓡T共同合作,致力于發(fā)布最有價值的功能。
交付區(qū):專注于流暢交付,通過優(yōu)秀技術(shù)減少頻繁變更對代碼質(zhì)量的影響,減少變更中的浪費。
優(yōu)化區(qū):專注于業(yè)務(wù)探索和市場價值開發(fā),引入業(yè)務(wù)經(jīng)驗豐富的專家不斷優(yōu)化產(chǎn)品計劃,取得競爭優(yōu)勢。
加強區(qū):通過增強團隊洞察力,推動從單團隊敏捷向更大規(guī)模的組織敏捷的轉(zhuǎn)變。
有意識地進行選擇性的敏捷投資時,需要仔細權(quán)衡每個區(qū)域。每個區(qū)域都有成本與收益,但無論選擇哪個,都需全面學習其實踐,以確保后續(xù)區(qū)域的發(fā)展與實踐更為順利和有效。
第四章 投資于敏捷
對敏捷進行投資非常重要。有效地引入敏捷需要對團隊過往的限制進行改變,在組織結(jié)構(gòu)、系統(tǒng)和行為方面做出有意義的真正變革。這些投資領(lǐng)域廣泛,包括獲得發(fā)起人與利益相關(guān)者的認同、建立跨職能的全功能團隊、為團隊引入敏捷教練、接受可能在1-4個月內(nèi)出現(xiàn)業(yè)績下降、將權(quán)利下放至團隊層面、轉(zhuǎn)變項目治理方式等。
變革通常伴隨著破壞,新模式需要時間來學習,所以剛開始引入敏捷時團隊可能會放緩。根據(jù)經(jīng)驗,一開始的業(yè)績可能會下滑10%-20%。然而,一但團隊熟練掌握了敏捷技能,表現(xiàn)通常會超越以往。這一過程可能會引發(fā)團隊的挫敗感,成員們感到沮喪。此時,最有效的方法是聘請專業(yè)的敏捷教練來指導每個團隊,通過金錢換取時間,雖然不能完全避免產(chǎn)能下滑,但時間會減少,程度也不會太嚴重。
在此過程中,團隊需要從組織中獲得以下重要投資:
建立跨職能的全功能團隊
為團隊配備敏捷教練
分配工作給團隊而非個人
創(chuàng)建適合團隊的“團隊空間”
以有價值、非緊急且有學習機會的任務(wù)作為第一個目標
確保團隊控制開發(fā)、構(gòu)建、測試和發(fā)布過程
讓團隊對預算、計劃和結(jié)果負責
采用敏捷管理模式取代部分管理模式
消除阻礙敏捷的人力資源政策
第五章 投資于變化
敏捷方法將幫助你的團隊獲取更大的成功。你已經(jīng)知道哪些區(qū)域有最好的成本效益的權(quán)衡,并且已經(jīng)確定了公司需要進行投資。那么,下面的三個步驟將幫助你實現(xiàn)目標。
首先,需要認識到變革是具有破壞性的,引入敏捷也不例外。變革的破壞性程度取決于有受影響的團隊數(shù)量,以及對變革的管理程度。薩蒂爾變革模型可以有效的幫助你管理變革,它將變革分為了五個階段:舊的現(xiàn)狀、阻力、混亂、集成、新的現(xiàn)狀。這個模型同樣適用于引入敏捷方法的情況。
其次,對于大規(guī)模的變革,適當?shù)淖兏锕芾肀M管無法完全消除干擾,但可以在一定程度上減少干擾。同時,需要區(qū)分持續(xù)改進和變革性變化,以根據(jù)不同的流暢度區(qū)域采取不同方法。
最后,敏捷需要得到利益相關(guān)者的支持。如果缺乏管理層的支持,團隊的敏捷實踐和組織的非敏捷文化之間的不匹配將導致持續(xù)的摩擦。敏捷以人為本,因此進行敏捷嘗試需要獲得團隊的認可。同時,將利益相關(guān)者視為可信賴的合作伙伴,讓他們知道你期望他們能夠成功。
第六章 規(guī)?;艚?/h4>
在現(xiàn)實的工作中,組織通常都是大規(guī)模的,人數(shù)少則三五十人,多則數(shù)千人。這些成員分布在不同的產(chǎn)品中心,為共同的企業(yè)業(yè)務(wù)目標而做出貢獻。在規(guī)?;倪^程中,敏捷就變得尤為關(guān)鍵,體現(xiàn)在敏捷流暢度與產(chǎn)品協(xié)作兩個方面:
敏捷流暢度是規(guī)?;艚莸幕A(chǔ)。許多組織試圖擴大敏捷規(guī)模,卻未具備實現(xiàn)敏捷的能力。他們在規(guī)模化方面投入了大量時間和資源,但忽視了團隊流暢度和組織能力的投資。這樣的方法往往無法取得成功。為了實現(xiàn)組織的大規(guī)模敏捷,需要提升以下三方的能力:
建立支持敏捷團隊提升流暢度的組織能力;
提供解決規(guī)模化敏捷問題的教練能力;
實現(xiàn)安全穩(wěn)定的團隊擴展能力。
規(guī)?;a(chǎn)品協(xié)作。在規(guī)?;M織中,各團隊并非完全獨立工作,因此需要一種協(xié)調(diào)團隊工作的方法。這需要明確團隊之間的相互依賴關(guān)系,并解決可能存在的問題。通常有兩種基本策略:
縱向擴展,旨在增加能夠在沒有瓶頸情況下協(xié)同工作的團隊數(shù)量;
橫向擴展,通過隔離團隊的責任來消除瓶頸。
第七章 團隊合作
最優(yōu)秀的架構(gòu)、需求和設(shè)計來自于自組織團隊。跨職能、自組織團隊是敏捷組織的基礎(chǔ) 資源,也是敏捷的核心思想之一。
全功能、自組織團隊是敏捷的精髓。團隊中成員具備各種技能和角色,能夠共同協(xié)作完成任務(wù)。全功能團隊不僅包括編程技能,還涵蓋人際關(guān)系、藝術(shù)、技術(shù)等多方面的技能。團隊成員的多樣技能能夠持續(xù)提升團隊的工作效率。
敏捷團隊借助團隊空間進行直接溝通和寫作。團隊在團隊空間中緊密合作,包括領(lǐng)域?qū)<液同F(xiàn)場客戶。程序員可以與現(xiàn)場客戶交流,以確保理解任務(wù)要求。
構(gòu)建心理安全的團隊有助于提高整體效能。心理安全并不排出沖突,相反。它允許每個團隊成員自由表達自己的觀點,而不用擔心受到打擊和批評。
團隊是相互依賴的成員組成,他們合作實現(xiàn)共同目標。這種相互依賴性是團隊的特表,也是團隊成功的關(guān)鍵,區(qū)分優(yōu)秀團隊與糟糕團隊的重要指標。
保持充滿活力是最佳、最高效工作的關(guān)鍵。雖然專業(yè)人士在困難的環(huán)境中也能表現(xiàn)出色,但在精力充沛、積極主動的情況下,他們會將工作做得更好,更富有成效。
第八章 計劃
敏捷是適應性的,而非預測性的。敏捷與其他管理模式最顯著的區(qū)別之一便是其計劃方式。
敏捷計劃是一個博弈過程,盡管博弈聽起來有點像娛樂項目,但并非如此。計劃與博弈有助于制定最優(yōu)計劃,并提供大量信息。計劃與博弈的目標是將團隊集中在能提供最佳投資回報的工作上。
用戶故事是以客戶為中心的小顆粒度價值單元,是計劃與博弈活動中的關(guān)鍵要素。故事是一個提醒,提醒我們關(guān)注團隊需要完成的任務(wù)。在實際實踐中,故事可能寫在索引卡片上或是虛擬系統(tǒng)的卡片上,團隊成員可以拿起它們、移動它們,并探討如何把它們安排進計劃中。
計劃的目的是為了獲取成功。敏捷計劃基于價值增量,將工作切片成適當大小并分批發(fā)布。通過?盡早發(fā)布、持續(xù)發(fā)布等原則,交付速度大幅提升,實現(xiàn)高效增加價值。與其固定地“做這個,然后做那個”,不如制定可視化計劃,在行動中不斷調(diào)整。可視化計劃對此有所幫助,是團隊實現(xiàn)目標的關(guān)鍵。
在團隊工作的同時,通過并行和增量式方法處理客戶需求,避免設(shè)定一個固定的需求收集階段。這有助于化簡工作流程,確保團隊成員無需等待需求分析完成后才開始工作。同時,敏捷團隊中代表客戶、用戶和商業(yè)利益的成員負責選擇故事、設(shè)定優(yōu)先級,他們對掌控團隊工作價值承擔著重要責任。
第九章 所有權(quán)
敏捷團隊擁有自主權(quán),他們自行決定何事需要完成、如何分解,以及由團隊中的誰來承擔工作。這是基于敏捷的一個基本原則:最了解工作需求的人最有資格決定細節(jié),所有權(quán)不僅僅是控制權(quán),還包括責任。當團隊擁有工作的所有權(quán)時,他們也承擔完成工作的責任。以下是掌握工作并完成工作的一些實踐方法:
通過任務(wù)規(guī)劃,團隊將故事分解為任務(wù)并確定如何完成。
預測產(chǎn)能,以便在下一次迭代中決定可以完成的內(nèi)容。未完成計劃時,產(chǎn)能就會下降;有充裕的時間進行交付和優(yōu)化時,產(chǎn)能會增加。
采用柔性方法,提升能力,使團隊能夠做出可靠的短期承諾。
通過站會協(xié)助團隊成員協(xié)調(diào)工作,每日在固定的時間進行5-10分鐘的簡短會議,以實現(xiàn)團隊成員的同步。。
利用團隊的工作空間,類似于飛行員座艙,提供所需的信息來指導工作。
使用演示模型用于交流,目的是在任務(wù)計劃期間檢查故事,確定是否存在開發(fā)人員可能誤解的細節(jié)。
完整的故事不是一堆未經(jīng)整合和未經(jīng)測試的代碼,而是準備好且可以發(fā)布的狀態(tài)。
第十章 職責
在敏捷團隊自我管理工作和計劃的情況下,組織仍然需要確保團隊在正確的方向上進行工作。盡管敏捷團隊擁有資源、信息和人員,但他們需要向組織證明他們在適當?shù)念I(lǐng)域投入了時間和金錢,以及對組織成果負責。
盡管敏捷方法可能在軟件交付方面非常有效,但如果沒有獲得利益相關(guān)者和贊助者的支持,仍可能會遇到問題。利益相關(guān)者需要了解項目所需時間,規(guī)劃預算并與第三方協(xié)調(diào)。敏捷團隊需要預測何時發(fā)布,以建立信任和責任感。這種預測過程被稱為估算。
持續(xù)獲取反饋是敏捷團隊做好工作的關(guān)鍵。團隊通過演示展示團隊最近完成的工作,讓利益相關(guān)者自己嘗試使用軟件并提供反饋,這是一種獲取反饋的有效途徑。
敏捷的路線圖涵蓋了團隊共享進度和計劃信息的多種方式,具體取決于組織的治理方法。敏捷團隊的管理者不管理個人的工作,而是管理整個工作系統(tǒng)。他們?yōu)閳F隊的成功做好準備,引導建立高效的團隊環(huán)境,使每個成員能夠在沒有明確管理層干預的情況下做出正確的選擇。
第十一章 改進
反饋和適應是敏捷的核心,這句話同樣適用于團隊的敏捷方法本身。雖然你可能從現(xiàn)成的敏捷方法入手,但每個團隊都應制定符合自身情況的方法。就像在敏捷中的其他方面一樣,這種定制是通過迭代、反思和反饋來實現(xiàn)的,強化有效的方面,優(yōu)化無效的方面。其中,回顧、激發(fā)團隊動力以及消除障礙是三個有效的實踐。
回顧:團隊的回顧活動有多種類型,其中迭代回顧是最常見的一種。這實際上是一個非常簡單、有趣的團隊協(xié)作工作坊[。通過一些巧妙的設(shè)計,團隊成員都愿意分享他們過去這段時間收獲的經(jīng)驗和看法,坦誠地討論團隊存在的具體問題并給出建議,幫助團隊持續(xù)改進。
團隊動力:團隊不僅僅是一群人的集合。建立一個團隊通常需要樹立共同的目標愿景、一致的價值觀,以及規(guī)范一同工作方式的方法。這是一個專業(yè)且循序漸進的過程。我們在團隊中建立“共享領(lǐng)導力”并識別可能會對團隊健康產(chǎn)生深遠影響的“有害行為”。
消除障礙:“無?!笔巧畹某B(tài),每個人時刻都會遇到各式各樣、或大或小的障礙,對團隊而言更是如此。對這些障礙的“識別”“區(qū)分”“定義”是妥善應對的關(guān)鍵?!皥A圈和湯”這一形象有趣的思維方法可以幫助我們快速識別哪些障礙是團隊可以控制的,哪些是可以影響的,哪些是既不能控制也無法影響的,進而快速采取合適的應對策略。
第十二章 協(xié)作
敏捷團隊不僅要求團隊合作,交付團隊對于技術(shù)卓越和團隊協(xié)作也有著很高的標準。他們致力于共同工作,以保持高質(zhì)量的內(nèi)部產(chǎn)出,并交付優(yōu)先級最高的業(yè)務(wù)價值。以下這些實踐將有助于團隊進行協(xié)作。
代碼集體所有權(quán):讀過《鳳凰項目》的朋友都知道團隊的明星員工勞倫特實際上是團隊的瓶頸。“以團隊的代碼為榮”或者“對團隊的代碼負責”會給團隊省去很多不必要的摩擦。更重要的是,當你意識到你面對的困難自己難以應對時,請放心“下墜”,你的團隊會“接住你”。
結(jié)對編程:結(jié)對編程來自《極限編程》,是實現(xiàn)代碼集體所有權(quán)的實踐之一,編程是知識性工作,思考的時間遠多于敲鍵盤的時間,特別是有了人工智能的加持之后,這兩個活動的比值甚至會無窮大。
集體編程:和結(jié)對編程類似,只不過這種實踐更徹底一些。雖然不是所有的場景都適合,但就我們的實踐來看,在建立團隊標準和編碼共識的時候它是非常有效的。
統(tǒng)一語言:最初了解到“統(tǒng)一語言”的概念是在《領(lǐng)域驅(qū)動設(shè)計》。語言是人類最偉大的發(fā)明,作為一種粘合劑將不同背景、不同能力甚至不同文化的人粘合到一起。“統(tǒng)一語言”擁有類似的能力,軟件開發(fā)是一種多領(lǐng)域知識碰撞的創(chuàng)造過程,統(tǒng)一語言讓這些不同的知識載體可以實現(xiàn)良好協(xié)作。
第十三章 開發(fā)
軟件開發(fā)過程中,很少談及開發(fā)的具體細節(jié)。然而,團隊的開發(fā)方式?jīng)Q定了絕大部分時間投入的地方。以下這些實踐可以在提升開發(fā)速度的同時提高發(fā)質(zhì)量:
自動化的程度往往決定了團隊和個人的工作效率。通過場景畫方式,“零摩擦”向我們展示了自動化如何顯著提升了軟件研發(fā)準備階段帶來效率。而“持續(xù)集成”以自動化為基礎(chǔ),在團隊中建立起與之協(xié)作和工程實踐,有助于消除開發(fā)過程中由人為因素引起的信息混亂。
“測試驅(qū)動開發(fā)”對程序員而言是“穩(wěn)穩(wěn)的幸?!?,我們聽過對測試驅(qū)動開發(fā)最恰當?shù)慕庾x是“從一個成功”到“另一個成功”。
質(zhì)量與軟件交付和團隊中的每個人息息相關(guān),“快速、可靠測試”是質(zhì)量保證的基礎(chǔ),強調(diào)了需要工程師關(guān)注的測試策略與工具。
重構(gòu)是一項廣為人知的體系化的優(yōu)化代碼的實踐:“在不改變代碼外在行為的基礎(chǔ)上,對軟件內(nèi)部結(jié)構(gòu)進行調(diào)整,提高其可理解性,降低其修改成本?!?/p>
實驗方案,也稱為Spike,在工作場景中不需要翻譯,因為這個詞本身就是一個隱喻。它傳達了一些需要的精神和含義:原意是攀巖運動中在墻壁上釘釘子的活動,在敏捷實踐中指代小范圍的探索性實驗。
第十四章 設(shè)計
在軟件開發(fā)過程中,增量式設(shè)計、簡單設(shè)計和反思性設(shè)計是非常重要的設(shè)計方法。它們可以幫助開發(fā)人員創(chuàng)建高質(zhì)量、可維護、易于擴展和可靠的軟件。這些設(shè)計方法在軟件開發(fā)過程中具有非常重要的作用,可以幫助開發(fā)人員創(chuàng)建優(yōu)秀的軟件。
增量式設(shè)計是一種通過一系列小的改變,而不是一次性重構(gòu)整個代碼庫的方法。這種方法可以減少重構(gòu)所需的時間和風險,同時保持代碼庫的穩(wěn)定性和可維護性。通過增量式重構(gòu),每個改變都可測試且不會破壞代碼庫的其他部分,從而確保代碼的穩(wěn)定性和可維護性。
簡單設(shè)計原則是一種非常重要的設(shè)計方法。它強調(diào)保持代碼的簡潔性,避免過度設(shè)計和復雜性,同時確保代碼的可擴展性和可維護性。這種設(shè)計方法可以幫助開發(fā)人員創(chuàng)建簡單、可靠和易于維護的軟件。
反思性設(shè)計強調(diào)在設(shè)計過程中不斷地反思和改進。它包括識別代碼中的問題和缺陷,然后通過重構(gòu)來改進代碼。反思性設(shè)計的目標是通過不斷地反思和改進代碼設(shè)計來提高代碼質(zhì)量,同時提高開發(fā)效率和代碼可維護性。
第十五章 DevOps
DevOps通過打破開發(fā)、運維和安全之間的壁壘,使團隊能夠創(chuàng)建更安全、更可靠、更易于在生產(chǎn)環(huán)境中管理的軟件。以下是一些關(guān)鍵實踐:
面向運維構(gòu)建的目標是使應用程序更易于部署和維護。構(gòu)建過程應該創(chuàng)建一個可以在任何環(huán)境中運行的二進制文件,這個文件應該是獨立的、不依賴于任何特定的環(huán)境變量或配置。在構(gòu)建過程中應該使用安全的編譯器和庫,以防止代碼注入攻擊。使用容器化技術(shù)部署可以使應用程序更易于部署和管理。
特征標志是一種管理應用程序特性的方法,在需要添加或刪除功能時,只需要在代碼中添加或刪除一個特征標志。特征標志應該像代碼一樣受到版本控制的管理,同時應該使用配置管理工具來管理特征標志的狀態(tài)。
構(gòu)建和測試應該自動化,以減少人為錯誤;使用持續(xù)集成來確保代碼的一致性和可靠性;使用持續(xù)交付來確保應用程序的部署和維護。
第十六章 質(zhì)量
敏捷團隊對待質(zhì)量的視角不同,其視角下質(zhì)量不是測試出來的,它是建立出來的。這不僅包括代碼,還涵蓋了整個開發(fā)體系:團隊對待工作的態(tài)度,人們對錯誤的思考方式,甚至組織與團隊互動的方式。
為了進一步推進流暢交付,團隊需要進行敏捷實驗和分析。團隊采用構(gòu)建-度量-學習-實踐的方法,并探索如何建立自主團隊、學習新的方法和工具,以實現(xiàn)更高效的生產(chǎn)力。實現(xiàn)流暢交付對于提高生產(chǎn)力和減少缺陷至關(guān)重要,這是團隊追求的目標之一。
團隊需要與內(nèi)部和外部利益相關(guān)者合作,共同實現(xiàn)業(yè)務(wù)目標。團隊還需探討如何為客戶和市場創(chuàng)造新的商業(yè)機會。敏捷實驗和事件分析是團隊不斷推進流暢交付的關(guān)鍵。
通過事故分析,團隊能夠確定導致問題的根本原因并制定相應的解決方案。事故分析的步驟包括收集數(shù)據(jù)和證據(jù)、確定問題、找出根本原因、制定解決方案以及實施解決方案。在此過程中,團隊需要保持開放的心態(tài),盡可能多地收集信息和證據(jù),并積極探索根本原因及解決方案。
第十七章 自主性
敏捷團隊應該擁有自主性,自主性不僅僅意味著使團隊能夠獨立工作,還代表著團隊在財務(wù)和產(chǎn)品計劃方面擁有完全的決策權(quán)。
敏捷團隊通過發(fā)揮自主性來增強交付的流暢性。通過打通組織的上下游, 獲得了對限制條件的決策權(quán)和自主權(quán),從而實現(xiàn)更加順暢地交付。
敏捷團隊需要具備做出明智決策的能力,關(guān)注商業(yè)結(jié)果和價值,致力于為組織帶來有意義的變革,他們得到組織的信任,因此高層管理人員和經(jīng)理們能夠?qū)①Y金和任務(wù)交給團隊,然后退居幕后。這樣,團隊就可以自行解決如何實現(xiàn)任務(wù)的問題。
敏捷織團隊并不是沒有監(jiān)督,但這并不代表著他們可以為所欲為。他們?nèi)匀灰故舅麄兊墓ぷ?,并證明他們的宏觀決定是明智的。組織在團隊周圍設(shè)置了指導軌道,以確保團隊朝著正確的方向前進。團隊的目標設(shè)定了大致方向,而近期目標和成功的衡量指標,則由團隊與管理層和其他利益相關(guān)者合作制定。
對于敏捷團隊而言,資金成為了組織層級的另一個監(jiān)督機制。通常情況下,團隊在持續(xù)的”日常業(yè)務(wù) ”中運作,組織根據(jù)它對團隊的期望結(jié)果來分配資金。此外,團隊還可以通過向管理層解釋原因來獲得一次性的資金和資源。隨著團隊工作的進展,組織的預期價值是否得以驗證,這為調(diào)整團隊的目標提供了機會。如果團隊創(chuàng)造了超出預期的價值,可以增加資金,這將鼓勵團隊更加努力取得成功。而創(chuàng)造的價值低于預期,資金可以減少,或者團隊可以轉(zhuǎn)向一個更有價值的目標。
第十八章 探索
優(yōu)化團隊致力于自主地做出產(chǎn)品決定。在決定建立何種產(chǎn)品方面,任務(wù)是明確的:學習并發(fā)現(xiàn)客戶面臨的問題和痛點,以及產(chǎn)品概念是否解決這些的問題。
驗證性學習在發(fā)現(xiàn)客戶需求和市場機方面具有重要性,為了適應不斷變化的市場需求,靈活的計劃和增量至關(guān)重要。例如,驗證性學習必須基于真實客戶和成本數(shù)據(jù);學習和選擇是優(yōu)化團隊的重要價值,特別是在產(chǎn)品創(chuàng)新的早期階段;而選項思維和建立“安全”增量則是有效管理風險的手段。
保持適應性至關(guān)重要。通過 ”創(chuàng)造-度量-學習”的循環(huán),團隊會不斷累積新的知識。為了利用這些到的知識,團隊將調(diào)整計劃。因此,優(yōu)化團隊更傾向于將計劃范圍設(shè)定的較短,以便適應變化。他們將有價值的增量保持的很小,從而可以靈活調(diào)整反向而不浪費資源。
優(yōu)化團隊需要以客戶為中心,始終關(guān)注客戶需求和市場機會,通過驗證性學習及靈活的計劃和增量來實現(xiàn)產(chǎn)品創(chuàng)新和開發(fā)。這需要團隊成員持有開放的心態(tài),愿意不斷學習和適應市場需求的變化;同時,還需要建立有效的溝通機制,與客戶和利益相關(guān)者保持緊密聯(lián)系,不斷收集反饋和建議,并及時調(diào)整計劃和策略。只有這樣,優(yōu)化團隊才能在競爭激烈的市場中脫穎而出,創(chuàng)造有價值的產(chǎn)品,并取得商業(yè)成功。
第十九章 走向未來
敏捷開發(fā)是一個不斷學習、實驗和改進的過程,從“嘗試敏捷”到“投資敏捷”到“推廣敏捷”再到“實踐敏捷”。本書帶著大家一起經(jīng)歷了這次敏捷之旅,然后實踐只是一個起點。
一旦理解敏捷,就把它變成自己的實踐:盡情試驗替代方案,尋找新的想法。隨著這些實踐越來越得心應手,嘗試打破規(guī)則,看看會發(fā)生什么。你將會更加深入地理解這些規(guī)則存在的原因,以及它們的限制和邊界。
隨著時間的推移,流程和經(jīng)驗將不斷積累,慣例和原則將變得不再那么重要。當做正確的事情變成一種本能和直覺的習慣時,就是時候把規(guī)則和原則拋在腦后了。怎么稱呼它并不重要,當直覺帶來了偉大的軟件,為有價值的目標服務(wù),智慧激勵著新生代團隊,那是你已經(jīng)掌握了敏捷開發(fā)的藝術(shù)。