持續交付 不僅僅是技術

2021-09-17 04:05:35 字數 3570 閱讀 9073

在實施持續交付的時候,很容易陷入到技術方面。對發布流程中的每一步進行客觀地觀察和度量之後,我們會發現其中一些阻礙發布的非技術因素,成為流程中的瓶頸。因此,我們需要確保溝通方式有效,同時所有成員能夠真正地協作。

和許多組織一樣,我們也正走在持續交付的路上。這個過程中有許多任務作要做,這都是些眾所周知的工作,例如構建自動化測試和部署管道。然而,我們發現還有一些使發布流程沒有那麼順暢的其他因素。只是當時還不知道產生這些問題的確切原因。

我開始觀察我們的發布流程,並做了記錄。客觀地觀察了發布流程中的每個階段,讓我能夠度量發布流程。例如,流程中的每個階段耗時以及它們的實現方式是自動的還是手動的,不同角色的 人員數量,和在什麼時間點我們會發現阻塞發布的問題。一旦有了足夠的資料,我們就可以開始分析和尋找瓶頸,這些瓶頸將成為最急需解決的問題。

在觀察時務必確保是客觀的,不能讓主觀判斷和偏見掩蓋實際發生或未發生的事情。客觀觀察是一項值得鍛鍊的技巧,它是gemba和實驗的基礎,在嘗試改進我們的流程和系統時非常有價值。

原因非常簡單:我們的發布流程不夠順暢和平滑,也沒能達到期望的頻率,這都影響到了我們的交付能力。雖然當時我的角色是在跨職能團隊擔任探索式測試人員(exploratory tester),但我一直對改進我們的系統很感興趣。因此參與到改進我們的發布流程是乙個很自然的步驟。

和技術專家一起共事的好處是他們尊重資料和事實,並且都非常熱衷於讓事情變得更好。因為我收集了大量資料,反映了實際的問題,因此我們能夠專注於解決實際的問題,而不是基於各種假設。例如,資料顯示實際部署到準生產(staging)環境的套件數量遠小於預期,因此我們需要解決部署到該環境時遇到的問題,以降低部署難度。

哪些功能點真的很重要而需要發布呢,討論它是非常困難的事情。當我們在選擇本週待發布版本的最後一分鐘,每次總會有「最緊急的」變更被加進來,並且提交的團隊都能為這些變更提出一堆必須發布的理由。當時我們有差不多8個團隊,因此這對我們來說是個大問題。這種在發布前延遲選擇待發布版本帶來的連鎖反應,既一些需求需要很匆忙的上線,有時候會影響發布質量。本質上來說,這個問題的根源來自於每週只能發布一次的限制,除非我們能夠做出改變,否則每週仍然會遇到這樣的壓力。

我開始問類似這樣的問題:「為什麼這個需求必須在這個版本中發布?」,「如果不發布這個需求會有什麼問題?」或者「這個需求能等到下個發布週期發布嗎?」。類似這樣的話題很難聊下去,因為當我問出這些問題的時候,對團隊來說我已經成為阻礙他們變更的障礙。事實上,當我們在試圖提高發布頻率的時候和對方說變更得等到下週才能發布是有悖常理的。這時候的核心要務是確保發布穩定。

通過對上述問題的討論,我們意識到一些變更一點都不緊急,因此不用匆忙上線。這樣做帶來的整體效果是發布更加順暢,修復線上bug的補丁更少了。顯然對我們的壓力也更小了,讓我們能夠專注於提高發布頻率。

改變習慣非常難。習慣是人們下意識的行為,因此必須努力停止舊習慣,並使用新習慣取而代之。公布我們發布環節資料並突出其中的問題,能夠增加這些問題的可接受程度和修復意願。

我們嘗試了一些方法來幫助養成好習慣。例如,由於發布環節參與人之間的主要溝通方式是電子郵件,使得我們會有小時級別的延遲。對於傳送者來說,當郵件發出,訊息傳達出去,任務就完成了。但是,在接收者閱讀並理解郵件內容之前,事實上並沒有溝通任何訊息。如果接收者在開會,或者一天只檢視一到兩次郵件(這是乙個好習慣!),那麼當他們看見郵件的時候已經過去幾個小時了。引用我的朋友rob lambert(@rob_lambert)的話,「溝通內容需要到達聽眾的耳朵裡」。

為了改變使用郵件這個習慣,我們引入了一段時間物理交接。我們買了一塊好萊塢場記板(clacker board),在上面寫上待發布版本號,然後像接力棒一樣逐個交接。如果我接到了這個場記板,那麼我知道現在整個發布流程都在等待我的工作。實際在做的就是應該要做的事情會讓人很有成就感。同時這個方式也讓參與者感受到了發布是手頭最重要的事情。

使用場記板還有乙個目的:讓參與者面對面的交流,增進相互了解,並逐漸有團隊感。這個過程很花哨,也很搞笑。但是它完成了使命,它讓我們消除了因為溝通不暢導致的流程阻塞,讓所有人像乙個團隊那樣工作,並幫助我們養成了更好的溝通習慣。

當我剛開始以改進發布流程的視角來觀察它的時候,我並不知道toyota improvement kata。幸運的是我和非常有經驗的敏捷專家、精益和系統思想家一起共事,因此我很快就學習了它。事實證明,我工作的整個過程都是符合toyota kata的,包括觀察、收集資料和分析,最終找到下一步實驗的重點。

toyota kata是關於運用科學的思維方式來理解我們的問題,對接下來會發生事件的思考和基於現在已經發生的事件來調整後續步驟。它主要有四個步驟:

制定方向、挑戰和目標。對於我們來說就是按需發布。這不意味著我們在每分鐘都有發布,而是我們能夠以平滑流暢的方式按照自己的節奏發布。

了解當前狀態和條件。這就是我們收集和分析資料的**。我們有乙個電子**形式的價值流圖(value stream map)。

建立下乙個目標條件,既我們的第乙個里程碑。通常從當前條件直接到最終目標跳躍太大,否則我們早就完成了。為了取得進展,確定乙個更容易實現的中間目標是有幫助的。對於我們來說,這個目標是發布週期從4.5天降低到2天。

使用improvement kata的方式進行思考,幫助我們確定下一步我們想要做出的改變,最終讓我們改變了現有習慣,或者將一些人工步驟自動化。例如,前文提到的使用場記板來改善溝通,就源於improvement kata設計的實驗。

另乙個基於improvement kata做出改變的例子,是在測試階段將綠色構建套件自動化。這個步驟看上去本來就應該自動執行(事實上也是這樣),但當時的情況是,我們認為綠色構建總是失敗,會耽誤部署到預發布環境,因此被作為乙個手動流程。收集的客觀資料展示了當前狀態(步驟二),實際情況是我們基本上沒有部署過綠色構建套件!由於是乙個手動流程,它經常因為人為遺忘或者被其他事情分心而忽略。將該步驟自動化部署成為了下乙個行動(步驟四)。

最明顯的收益是縮短了發布週期。原先的發布週期是4.5天,因此我們一周只能發布一次。在進行了一些嘗試,和將一些交付流水線自動化之後,我們將整個週期縮短了一半,如果加把勁我們可以在1天內發布。

其他一些重要收益包括:

以下是我學到的一些內容:

擁有展示當前模式和趨勢的資料很重要。因為它們能夠真實的表露問題,並顯示我們做出的改進亦或視情況不做改變。

在試圖說服管理層給專案投入時間和資源時,客觀資料收集和分析非常有用。這些圖表非常強大!

雖然持續交付的工作主要集中在技術和管道自動化方面,但人的因素對發布週期也會產生很大的影響。一定要找到瓶頸所在。

雖然開放式辦公室和參與到發布流程中的同事交流比較方便,但並不意味著他們有著良好地溝通和協作。

乙個人的好點子是有限的!向同事尋求幫助,讓他們參與進來(感謝gemma lewington提出的好萊塢場記板主意)。

sylvia macdonald職業生涯開始時是一名開發工程師,然後成為了軟體測試工程師,現在是newvoicemedia的工程經理。她深入研究了如零售客戶服務和蒙特梭利教育(montessori education)等其他領域。她熱衷於提高質量,幫助團隊了解業務敏捷,並通過發現問題並幫助消除問題來改善工作流程。macdonald主持並組織了reading tester gathering meetup小組。想要了解關於作者的更多情況,可以檢視她的linkedin、@sylvia_macd和一些會議演講。

檢視英文原文:continuous delivery - it』s not all about tech!

持續交付 不僅僅是技術

在實施持續交付的時候,很容易陷入到技術方面。對發布流程中的每一步進行客觀地觀察和度量之後,我們會發現其中一些阻礙發布的非技術因素,成為流程中的瓶頸。因此,我們需要確保溝通方式有效,同時所有成員能夠真正地協作。和許多組織一樣,我們也正走在持續交付的路上。這個過程中有許多任務作要做,這都是些眾所周知的工...

持續交付 不僅僅是技術

在實施持續交付的時候,很容易陷入到技術方面。對發布流程中的每一步進行客觀地觀察和度量之後,我們會發現其中一些阻礙發布的非技術因素,成為流程中的瓶頸。因此,我們需要確保溝通方式有效,同時所有成員能夠真正地協作。和許多組織一樣,我們也正走在持續交付的路上。這個過程中有許多任務作要做,這都是些眾所周知的工...

持續交付 不僅僅是技術

在實施持續交付的時候,很容易陷入到技術方面。對發布流程中的每一步進行客觀地觀察和度量之後,我們會發現其中一些阻礙發布的非技術因素,成為流程中的瓶頸。因此,我們需要確保溝通方式有效,同時所有成員能夠真正地協作。和許多組織一樣,我們也正走在持續交付的路上。這個過程中有許多任務作要做,這都是些眾所周知的工...