談談精益(下篇)——看板系統(tǒng)

此文是《談談精益(上篇)——Lean Manufacturing》的續(xù)篇。

先說說精益軟件開發(fā)

制造業(yè)的成功,已經證明了精益思想的強大。非常自然地,軟件行業(yè)的從業(yè)者,也希望能夠汲取精益的理念,來消除軟件開發(fā)中存在的浪費,從而能夠成功的交付客戶價值,獲得更高的軟件成功率。這其中的先驅者,當屬Mary and Tom Poppendieck夫婦。他們出了一本書,名字就是《Lean Software Development》,內容則是如何將精益思想落地于軟件行業(yè)中,來影響現(xiàn)有軟件開發(fā)行業(yè)的形勢。

這里,我們參考制造業(yè)的DOTWIMP,來思考對應軟件行業(yè)的DOTWIMP。希望通過這些原則,來具體指導如何精益地做軟件開發(fā)——消除浪費(Eliminate Waste)

Defect (Defect)

軟件行業(yè)中的缺陷,是一個非常普遍的概念。代碼或者系統(tǒng)中任何與預期不符的情況,都可以稱為缺陷。很明顯,缺陷是一種不為客戶帶來價值,反而會造成巨大浪費的事物。發(fā)現(xiàn)缺陷,會造成QA的工作量,修復缺陷,會帶來開發(fā)的重復工作。根據(jù)Lean的原則,我們需要從根本上去除缺陷的產生,而不是事后花費成本修補。并且,當我們捕捉到一個未覆蓋的缺陷時,我們需要發(fā)現(xiàn)缺陷背后的根本原因,從而保證這個缺陷不會再次出現(xiàn),不會引入重復的浪費。

單元測試和集成測試,就是保證代碼從一開始不引入缺陷的實踐之一。誠然,自測試代碼中的測試部分,本身確實對于客戶來說,沒有價值,也是一種浪費。但是,這種開發(fā)級別引入的浪費,是為了避免后期更大的浪費出現(xiàn)。在軟件開發(fā)的開發(fā)部署流程中,一個缺陷越晚被發(fā)現(xiàn),定位并修復的成本會越高,也就意味著浪費會更大。

Extra features (Over-production)

作為開發(fā),總是抑制不住沖動,希望軟件不僅能夠滿足當下的需求,當未來有新的需求出現(xiàn)時,也能成功應對。但是,額外的需求功能,也是一種浪費,因為它沒有對客戶產生價值,但仍需要開發(fā)人員花費成本維護和測試。

埃里克萊斯是《精益創(chuàng)業(yè)》一書的作者,書中說到:

最大的浪費是構建沒人在乎的東西。

做一個能賣出去的產品,而不是賣一個做出來的產品。

Handoff 交接 (Transportation)

任何曾工作在瀑布軟件開發(fā)方式下的人都對“交接”這個詞印象深刻。BA在寫好一個很大的需求文檔之后,交接給架構師;架構師在做好設計并完成設計文檔之后,交接給開發(fā)團隊;開發(fā)寫完代碼之后,交接給QA團隊。在每次交接的過程中,知識不可能全部傳下去,會丟失相當一部分。這樣,開發(fā)人員腦子中的需求,和BA的理解可能大相徑庭。

這就是為什么敏捷團隊和SCRUM都倡導全功能團隊:團隊中應包含各個角色,BA、DEV、QA、PM、UX。這樣避免了交接帶來的浪費,促進了不同角色之間知識的充分分享。

Delay (Wait)

項目進行中任何拖延,都是一種浪費。比如當團隊某成員提出一個問題,而能夠回答這個問題的人并不能輕易的被找到的時候,這時候Delay產生了,從而浪費也產生了。

Partially completed work (Inventory)

從BA開始準備一個Story的需求描述,到最后達到能夠達到上線的狀態(tài),中間過程中的Story都被看做是未完成的工作。除非上線,否則不論Story處于任何狀態(tài),都沒有為客戶產生價值。未完成的工作,還有可能推遲了發(fā)現(xiàn)問題的時間。

Task Switching (Motion)

沒人什么事情比讓一個人同時做多件事,更能降低一個人的效率的了。當開發(fā)人員同時做好幾個Story的時候,頻繁的切換上下文,會造成額外的消耗,但并不增加任何價值。提高效率的最好辦法,就是集中精力解決一個問題,然后再解決下一個問題。

Unneeded processes (Processes)

你有沒有曾經遭遇過這樣的經歷,為了對生產環(huán)境做出一點微小的環(huán)境改變,但需要經歷一個漫長的審批過程,等待好幾個人的簽字?很多公司都有這樣冗長的機制,并且經歷過的人都知道,為了完成一點點的改變,過程是多么的痛苦。這種不必要的流程,沒有為客戶增加過多的價值,但是卻引入了相當大的浪費。

什么是看板方法

看板方法是用于管理軟件開發(fā)流程的新技術。看板方法源自豐田的“及時生產”(JIT=just-in-time)系統(tǒng)(在前文中我對JIT解釋如下:Just-In-Time努力將生產過程中每一步的庫存量盡量降到最低,最好為0。換句話說,這意味著只需要在合適的時間、合適的地點,提供適量的原材料。去除庫存帶來很多好處:不僅可以節(jié)省成本,還去除了商品被廢棄或者損壞,久置的可能性。)

一個軟件開發(fā)的流程可以看作是一段自來水管道,特性需求從一端進入,經過開發(fā)的軟件從另一端涌現(xiàn)出來。

在管道內部,存在著各種各樣的工序,我們先假設一個最為簡單的階段性流程:

分析需求->開發(fā)代碼->測試軟件運行正常

在管道中的瓶頸會限制工作的流動。管道的整體吞吐量被限制為瓶頸的吞吐量。用我們的開發(fā)管道為例:如果測試人員每周只能測試5個特性,而開發(fā)人員和分析人員每周能夠生產10個特性,整個管道的吞吐量就只有每周5個特性 ,因為測試人員扮演了瓶頸角色。如果分析人員和開發(fā)人員不知道測試人員是瓶頸,那么測試人員的待辦工作就會越堆積越多。

影響就是前置時間增加。并且,就如同庫存一樣:位于管道中的工作會套牢投入的資金、產生與市場的距離、庫存中的產品(交付特性)會隨著時間逐漸失去價值。

看板系統(tǒng)

如果我們知道哪里有瓶頸,我們就能夠重新部署資源來解除它。我們怎樣才能知道在已知流程中哪里是瓶頸呢?當我們知道了瓶頸后會采取哪些措施呢?

《看板方法》一書中對看板系統(tǒng)的定義是這樣的:

看板(或卡片)的數(shù)量,等價于系統(tǒng)設置(核定)的流通能力。一張卡片與一個工作項關聯(lián)。每張卡片都充當一種信號機制。只有獲得一張自由卡片后,才可以開始新的工作項。這張卡片與該工作項關聯(lián)在一起,跟隨工作項在整個系統(tǒng)中一起流轉。當自由卡片沒有剩余時,就不能開始額外的工作。任何新到達的工作項必須在隊列中等待,直到可以獲得新的自由卡片。有了自由卡片,隊列中的新工作項就又可以啟動。

看板方法背后有兩條基礎性的原則:

僅當有可用產能時才通過信號卡傳遞機制來拉動工作的流動

只有系統(tǒng)具備了處理的能力才能拉入新工作項,而不是基于需求將工作項推入系統(tǒng)中。

另外一條是:

限制在制品的數(shù)量

恰當?shù)脑O置能力閾值,拉動系統(tǒng)就不會出現(xiàn)過載現(xiàn)象。

思考——如何設置WIP

根據(jù)某些研究和經驗觀察,每個知識工作者同時在2個工作項上工作是最優(yōu)的。同時考慮影響因素很多,比如說一些突發(fā)的情況,或者說團隊的成熟度情況,通常來說,我們將在制品限額設為每個人或者每個結對2個工作項。

在選擇WIP數(shù)值上,并沒有什么魔法公式。這個數(shù)值是通過試驗觀察不斷調整的,我們可以先選擇一個數(shù)值,然后觀察這個數(shù)值是否能很好地工作。WIP數(shù)值本身不是最重要的,在價值流中添加WIP限制帶來一種積極的壓力:這種積極的壓力迫使大家去面對軟件交付過程中的存在問題,并思考如何改進。

舉個例子

下面的看板展示了這樣一種情況:開發(fā)人員(Dev)和業(yè)務分析師(BA)正被阻止開展任何新工作(因為QA堆積的待辦工作項已經超過了限制的在制品數(shù)量),這種情況會持續(xù)直到測試人員(QA)空出了一個卡片位置并將下一個工作項拉到測試步驟中。

這時Dev和BA會開始尋找能夠幫助測試人員減輕負擔的方法。例如,BA可以幫忙測試,Dev開始進行自動化測試等等。

一旦QA完成了一個特性的測試,就會將卡片移走,并且在Testing->Ongoing列中空閑出一個卡片位置。

Testing->Ongoing列中空出來的位置可以用Development->Done列中的一個卡片補充進來。這時Development->Ongoing列就會空閑出一個卡片位置,下一張卡片就可以從Analysis列中拉進來。

前置時間(Lead Time)是指在當前迭代完成的用戶故事中,從需求進入IPM至需求交付的耗時,Lead Time通常用作改善流動的重要衡量標準——減少Lead Time就是減少等待的時間,加速價值的流動。

寫在最后:

看板是一種方法,它能夠為我們提供:

可視化的工作流,展示工作項的進度視圖

平衡需求能力,識別瓶頸

看板代表了精益的思維范式:每個團隊的情況不同,每個看板也會不一樣。尊重他人,持續(xù)改善的思想是一樣的,我們重視通過不斷地思考,頻繁且可靠地交付高質量軟件,幫助團隊在能力和組織成熟度方面得到不斷地提升。

相關閱讀:

談談精益(上篇) - Lean Manufacturing

談談敏捷 - Agile Methodology

本文作者萬學凡,ThoughtWorks首席咨詢師,武漢。作者保留本文一切權利,未經許可請勿轉載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,734評論 25 708
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,213評論 2 126
  • -----轉載----- 1、問:你在測試中發(fā)現(xiàn)了一個bug,但是開發(fā)經理認為這不是一個bug,你應該怎樣解決? ...
    花開沉浮閱讀 7,424評論 4 88
  • 習慣了睡前聽電臺的一段故事或者一首歌曲,今天聽了石進的《夜的鋼琴曲》系列,我聽不懂卻又被旋律感動,凝望著這鄉(xiāng)村孤...
    雙林木兮閱讀 513評論 0 0
  • 額,先落腳這里吧。簡書第一篇。 作為一個半吊子iOS dev,捂臉。 上周,想把swift認真學一下,記得14年那...
    程程程程程子閱讀 785評論 0 0