作者 Kenji Hiranabe 譯者 苑永凱 發(fā)布于 2008年2月19日 上午3時(shí)0分 摘要看板1是豐田生產(chǎn)方式(Toyota Production System,TPS)中用來(lái)支持非集中“拉動(dòng)式”生產(chǎn)控制(non-centralized "pull" production control)而使用的卡片。作為精益生產(chǎn)的工具,它現(xiàn)在已經(jīng)應(yīng)用于世界各地的制造企業(yè)之中。如今在敏捷軟件開(kāi)發(fā)中,項(xiàng)目的可視化(例如在墻壁上放置任務(wù)卡片就是常見(jiàn)的實(shí)踐)往往被叫做“軟件看板”,或者“任務(wù)看板”。我們甚至可以看到一些產(chǎn)品維護(hù)團(tuán)隊(duì)在類(lèi)似瀑布過(guò)程模型中使用看板系統(tǒng)。那么,看板到底是什么呢?為什么它會(huì)被用于軟件開(kāi)發(fā)環(huán)境之中呢? 在本文中,我首先解釋一下在精益生產(chǎn)中,尤其是TPS中的看板是什么樣子的,來(lái)理解下這個(gè)成熟行業(yè)中的實(shí)踐和法則,并圈定可以應(yīng)用于軟件開(kāi)發(fā)的概念。其次,我將環(huán)顧我們的軟件開(kāi)發(fā)項(xiàng)目并指出看板應(yīng)用的例子。然后,我會(huì)分析生產(chǎn)環(huán)境中的看板系統(tǒng)與軟件開(kāi)發(fā)中的看板系統(tǒng)有何異同,并嘗試提出觀(guān)點(diǎn)來(lái)有效地在軟件開(kāi)發(fā)中應(yīng)用看板系統(tǒng),其中還介紹了新近在kanbandev2討論列表中萌芽的“KSSE——持續(xù)工程的看板系統(tǒng)(Kanban System for Sustaining Engineering)”運(yùn)動(dòng)。最后,我給出TPS的一個(gè)全景視圖,也就是看板這種工具的原始背景,軟件開(kāi)發(fā)仍可從中有所借鑒。 TPS中的看板在“拉動(dòng)式”生產(chǎn)系統(tǒng)中,看板是指示移動(dòng)或者制造零部件的信號(hào)裝置(通常是放在透明塑料封套中的卡片),它是在豐田生產(chǎn)系統(tǒng)(TPS)中發(fā)明和發(fā)展起來(lái)的。在介紹軟件開(kāi)發(fā)中的看板之前,我來(lái)詳細(xì)的介紹下看板最初的用法,也就是TPS中的看板。看板的目的是通過(guò)確保只有當(dāng)下游工序需要時(shí)上游工序才生產(chǎn)零部件,進(jìn)而最大限度地減少工序(process)之間的在制品(Work-In-Process,WIP)或者庫(kù)存。“拉動(dòng)式”是指下游工人從他們的上游工序中領(lǐng)取或者“拉”出所需要的零部件。 圖1 看板和拉動(dòng)式生產(chǎn) 圖1是看板系統(tǒng)的抽象模型。圖中以?xún)蓚€(gè)工序,上游工序和下游工序?yàn)槔?,其中上游工序?yàn)橄掠喂ば蚬?yīng)零部件。為了給最終用戶(hù)提供產(chǎn)品,這一工序需要生產(chǎn)零部件并將其流向下游,但是不能生產(chǎn)太多,因?yàn)樯a(chǎn)過(guò)剩被認(rèn)為是最糟糕的浪費(fèi)。為了避免生產(chǎn)過(guò)剩,上游工序不是將成品零部件“推”給下游工序,反而是下游工序主動(dòng)地從上游工序中拉出(拿)零部件。零部件存放的地方叫做“倉(cāng)庫(kù)”(或者“超市3”——Taiichi Ohno首次提出看板的思想,是在他參觀(guān)了某個(gè)美國(guó)超市之后,在那里不是由商店售貨員而是由顧客自己去獲取他們想要的東西)。倉(cāng)庫(kù)位于上游工序,作為在制品的“緩沖區(qū)”或者“隊(duì)列”。當(dāng)一名來(lái)自下游工序的工人——叫做“物料管理員”——來(lái)到倉(cāng)庫(kù)并拿到新近完成的零部件,同時(shí)他也反饋一個(gè)生產(chǎn)信號(hào)——也就是,下游從上游中獲取東西并在同時(shí)通過(guò)看板卡將信息推給上游。這是必須的,因?yàn)闆](méi)有來(lái)自下游工序的信號(hào)上游工序決不會(huì)生產(chǎn)零部件。 那么在圖1中有兩種類(lèi)型的看板一同工作:
如圖1所示,領(lǐng)取看板循環(huán)于兩道工序之間,而生產(chǎn)看板循環(huán)于工序內(nèi)部,并且兩者在倉(cāng)庫(kù)內(nèi)發(fā)生交換。讓我們稍微仔細(xì)的了解下這個(gè)交換細(xì)節(jié)。圖2顯示了在倉(cāng)庫(kù)中是如何進(jìn)行“看板交換”。
你可以看到倉(cāng)庫(kù)是由一個(gè)單獨(dú)的線(xiàn)程控制的、位于兩個(gè)工序之間的隊(duì)列(queue),它通過(guò)看板來(lái)交換物品和信息??窗蹇ㄉ厦鎸?xiě)明了像零部件號(hào)碼、名稱(chēng)、數(shù)量、托盤(pán)類(lèi)型、倉(cāng)庫(kù)位置這樣的信息,這樣物料管理員拿到卡片就知道去做什么了。 對(duì)于看板的運(yùn)轉(zhuǎn)有著嚴(yán)格的規(guī)定——被稱(chēng)作“看板六準(zhǔn)則”:
正如我們所了解到的,倉(cāng)庫(kù)用作零部件的隊(duì)列,托盤(pán)用作零部件的載體,而看板卡用作客戶(hù)之所需的信息載體。通過(guò)維持“連續(xù)流通(continuous flow)”(消除等待帶來(lái)的浪費(fèi))和“最小化在制品(minizing WIP)”(消除生產(chǎn)過(guò)剩帶來(lái)的浪費(fèi))之間的平衡,它們共同形成了“拉動(dòng)式”系統(tǒng)。在超市中也是用同樣的機(jī)制來(lái)把從采購(gòu)到銷(xiāo)售之間的流程中的在制品維持在“適當(dāng)”數(shù)量,做好這一步是提高商店盈利率的關(guān)鍵。 目前為止,我已經(jīng)講述了看板是如何在制造業(yè)中工作的。注意以上是對(duì)真實(shí)看板系統(tǒng)的簡(jiǎn)化模型。這里沒(méi)有明確提及的另一件事是看板形象地向每一個(gè)工人展示了信息和產(chǎn)品的流程,并激勵(lì)在現(xiàn)場(chǎng)5(Gemba,指工作場(chǎng)所)的改善4(Kaizen,指工序改進(jìn))。改善源于對(duì)現(xiàn)場(chǎng)中發(fā)生事件的關(guān)注。通過(guò)看板,每個(gè)工人(不是管理人員)都可以看到生產(chǎn)流程,進(jìn)而有機(jī)會(huì)發(fā)現(xiàn)其中的浪費(fèi),并建議改進(jìn)他們所在的工序。看板的特性根據(jù)前一節(jié)的詳細(xì)介紹,這里列出了從TPS最初的看板概念中總結(jié)的特性和作用。
圖3為以上9個(gè)特性之間的相互影響,它顯示了如何將這些組成一個(gè)因果效應(yīng)網(wǎng)絡(luò)。你從中可以看到看板的兩種含義,一是“在維持連續(xù)流通的同時(shí)限制在制品數(shù)量”,而另一種是“改善”。 圖3 看板的特性和作用 圖表右側(cè)說(shuō)明了如何在維持連續(xù)流通的同時(shí),最大限度地減少在制品。如果倉(cāng)庫(kù)中的在制品太少的話(huà),下游工序不得不等待所需的零部件準(zhǔn)備就緒,但是在制品還應(yīng)該保證最小化以防止生產(chǎn)過(guò)剩。這樣看來(lái)這兩個(gè)目標(biāo)是相矛盾的,而看板正被看作是解決這個(gè)難題的策略。看板附著于零部件,并且可以被收集和重用,因此看板的數(shù)量是固定的。而且看板還可以直觀(guān)地指示下游工序僅當(dāng)需要時(shí)才獲取零部件。這里有兩種限定在制品數(shù)量的機(jī)制。 第一個(gè)機(jī)制“附著的看板”工作機(jī)制同“能量守恒定律”類(lèi)似。一旦根據(jù)產(chǎn)品市場(chǎng)銷(xiāo)售的速度和當(dāng)前工序的內(nèi)在變化規(guī)律確定了看板的數(shù)量,那么不管零部件的流入和流出如何,在制品的數(shù)量都被限制為看板數(shù)量的一定比例。在任何時(shí)候,看板(相當(dāng)于系統(tǒng)中的“能量”)的最大數(shù)量都與在制品的上限保持守恒。在圖4中,你可以看到“系統(tǒng)”指的是上游工序和下游工序之間的庫(kù)存,也就是“倉(cāng)庫(kù)”中的在制品。圖4 限定在制品數(shù)量的看板機(jī)制 第二個(gè)機(jī)制——“拉動(dòng)式”——通過(guò)依據(jù)下游消耗速度來(lái)確定上游工序的生產(chǎn)速度,這種機(jī)制也限制了在制品的數(shù)量。第一個(gè)機(jī)制僅僅涉及到在制品的數(shù)量,而第二個(gè)則涉及到流程——流程的方向和速度。“方向”——僅由下游工序來(lái)驅(qū)動(dòng)生產(chǎn)。 回到圖3:圖表左側(cè)說(shuō)明了如何促使工作自導(dǎo)向并促進(jìn)改善。通過(guò)查看張貼在面板上的看板卡,每個(gè)人都可以了解到發(fā)生了什么事,以及工序運(yùn)轉(zhuǎn)的健康狀態(tài)。改善起始于對(duì)現(xiàn)場(chǎng)(Gemba)工作流的觀(guān)測(cè)。放置于面板之上的看板卡直觀(guān)地幫助工作在沒(méi)有中央控制管理之下自導(dǎo)向。為了支持改善,這種自治的工序向外提供其性能數(shù)據(jù),并將管理重點(diǎn)從對(duì)具體工作的指派或者調(diào)度上轉(zhuǎn)移到改善活動(dòng)。 圖3中的箭頭最終都指向了三個(gè)結(jié)果,如其所示,看板的終極目標(biāo)可以表示為“限制在制品數(shù)量”、“連續(xù)流通”和“改善”??窗逑到y(tǒng)在維持“連續(xù)流通”的同時(shí)“限制在制品數(shù)量”。它緩沖由普通變因引起的變化情況,并暴露特殊變因引起的變化情況,以備改善。 軟件開(kāi)發(fā)中的看板現(xiàn)在,讓我們將視線(xiàn)回到我們自己的工作領(lǐng)域——軟件開(kāi)發(fā)。在敏捷軟件開(kāi)發(fā)中,通過(guò)在項(xiàng)目工作場(chǎng)所的墻上張貼卡片來(lái)呈現(xiàn)和分享項(xiàng)目狀態(tài)已經(jīng)成為一種常見(jiàn)的實(shí)踐。我已經(jīng)在我的上一篇InfoQ文章《用“看板圖”實(shí)現(xiàn)敏捷項(xiàng)目的可視化》[Hiranabe07]給出了很多例子。特別是,貼在墻上用來(lái)展示當(dāng)前項(xiàng)目狀態(tài)的任務(wù)卡片有時(shí)也被稱(chēng)作“任務(wù)看板”或者“軟件看板”[Poppendieck03]。圖5是Change Vision公司的JUDE6開(kāi)發(fā)團(tuán)隊(duì)所用的任務(wù)看板。 圖5 敏捷看板 在面板上,工程任務(wù)用卡片(即時(shí)貼)來(lái)代表,并通過(guò)把卡片貼在在面板中的不同區(qū)域來(lái)象征任務(wù)的狀態(tài),這些區(qū)域被標(biāo)注為“ToDo”、“Doing”和“Done”(標(biāo)注的名稱(chēng)可能因地而異,比如“進(jìn)行中(In Progress)”、“已測(cè)試(Tested)”、“已驗(yàn)收(Accepted)”、“停滯中(Blocking)”等等。)。這樣的看板面板有利于可視化地通知任務(wù)并限制在制品(處理中的任務(wù))數(shù)量。不過(guò)在這里并沒(méi)有出現(xiàn)“工序”(上游或者下游),新出現(xiàn)的概念是“迭代”。對(duì)于每一次迭代,通過(guò)分解用戶(hù)故事識(shí)別出任務(wù),并且將其張貼在面板的ToDo區(qū)域中。 這是一個(gè)拉動(dòng)式系統(tǒng)嗎?在制造業(yè)中,零部件由上游工序傳遞至下游工序。而在圖5所示的敏捷開(kāi)發(fā)中,并沒(méi)有看到“移交物”。一個(gè)看板卡片對(duì)應(yīng)一個(gè)任務(wù),上面寫(xiě)明了如下信息:任務(wù)編號(hào)、任務(wù)名稱(chēng)、估計(jì)時(shí)間以及任務(wù)領(lǐng)取人的名字。任務(wù)有狀態(tài),可以是“ToDo”、“Doing”或者“Done”,狀態(tài)信息被分享給整個(gè)團(tuán)隊(duì)。敏捷開(kāi)發(fā)重視在一起工作,并趨向于減少團(tuán)隊(duì)內(nèi)部的移交物。我稱(chēng)此為“敏捷看板”。 圖6是另一個(gè)看板面板實(shí)例,由Yamaha Motor Solution有限公司7所采用。 圖6 持續(xù)看板(Sustaining Kanban) 在這里,看板系統(tǒng)被用于帶有流程的傳統(tǒng)瀑布開(kāi)發(fā)模型。項(xiàng)目被分解成“設(shè)計(jì)”、“開(kāi)發(fā)”、“驗(yàn)證”等連續(xù)的工序,而看板卡就在這些工序之間移動(dòng)。每張卡片代表需要修改或者添加的系統(tǒng)需求,也代表給下游工序的移交物。注意這不是一個(gè)標(biāo)準(zhǔn)的瀑布流程——標(biāo)準(zhǔn)瀑布流程中所有的需求在同一時(shí)間內(nèi)完成“設(shè)計(jì)”,而“開(kāi)發(fā)”和“驗(yàn)證”則在另一時(shí)間,這將使得所有的卡片作為一個(gè)整體進(jìn)行移動(dòng)。與標(biāo)準(zhǔn)的瀑布流程不同的是,這個(gè)項(xiàng)目中的卡片是一個(gè)接一個(gè)地移動(dòng),就像制造業(yè)中的單件流(one-piece-flow)一樣。這里表現(xiàn)的是產(chǎn)品生命周期里穩(wěn)定的“持續(xù)(sustaining)”階段,處在帶有流程的瀑布狀態(tài)轉(zhuǎn)換模型的管理之下。在這里,你可以清楚地看到“工作流程”的概念,而不同于敏捷中的“迭代”概念。它比敏捷看板看起來(lái)更像工廠(chǎng)中的看板,而且通過(guò)制定規(guī)則只允許下游工序移動(dòng)卡片8,可以使其成為拉動(dòng)式系統(tǒng)。我稱(chēng)其為“持續(xù)看板”,這與稍后章節(jié)中討論的David Anderson的“持續(xù)工程的看板系統(tǒng)”是類(lèi)似的。 圖7顯示的是另外一個(gè)例子——在整個(gè)產(chǎn)品開(kāi)發(fā)流程的價(jià)值流中使用看板的思想實(shí)驗(yàn)(thought experiment)[Poppendieck 07]。 圖7 精益+敏捷看板 假設(shè)在一個(gè)產(chǎn)品開(kāi)發(fā)流中有客戶(hù)團(tuán)隊(duì)、產(chǎn)品所有人、開(kāi)發(fā)團(tuán)隊(duì)和QA團(tuán)隊(duì),他們使用隊(duì)列傳遞移交物來(lái)協(xié)調(diào)工作,以使得團(tuán)隊(duì)之間能異步工作,并維持工作速度。每一個(gè)“DONE”空間是一個(gè)隊(duì)列,其工作方式就像制造工廠(chǎng)中的“倉(cāng)庫(kù)”那樣,并且看起來(lái)非常像TPS看板系統(tǒng)。同時(shí),它看起來(lái)就像每條工序內(nèi)同步地使用敏捷看板,而在貫穿各個(gè)工序的整個(gè)價(jià)值流上異步地使用持續(xù)看板。我認(rèn)為看板系統(tǒng)可以擴(kuò)展至覆蓋整個(gè)價(jià)值流,在這種情況下,它是價(jià)值流的一個(gè)活生生的視覺(jué)表現(xiàn)。 在這里例子中,通過(guò)設(shè)定每一個(gè)區(qū)域的大小可以限制在制品的數(shù)量。而為了使其變成拉動(dòng)式系統(tǒng),還需要一種機(jī)制來(lái)使下游工序以某種信號(hào)通知上游工序開(kāi)始工作。其中一種方法是制定一個(gè)規(guī)則只允許下游移動(dòng)DONE區(qū)域中的卡片來(lái)通知上游。另一種方法是定期召開(kāi)“迭代會(huì)議”,來(lái)同步團(tuán)隊(duì)和團(tuán)隊(duì)之間傳遞(通訊)的信息。這兩種通訊方式可能對(duì)應(yīng)于我們?cè)诘谝徽鹿?jié)中討論的零部件領(lǐng)取的兩種信號(hào),即領(lǐng)取看板的數(shù)量(a)和時(shí)間間隔(b)的可視信號(hào)。一次迭代中的一組用戶(hù)故事對(duì)應(yīng)于迭代中托盤(pán)里的零部件,而零部件的數(shù)量對(duì)應(yīng)于迭代中的項(xiàng)目“生產(chǎn)率”(昨日天氣[Beck00])。我叫它為“精益+敏捷看板”,如下一個(gè)例子展示的那樣它可以與“敏捷看板”相結(jié)合。 圖8中是一個(gè)小型的“便攜式”看板系統(tǒng),這是我在CENTRAL COMPUTER SERVICES有限公司的某個(gè)項(xiàng)目里發(fā)現(xiàn)的。在這個(gè)項(xiàng)目中,團(tuán)隊(duì)被分為了幾個(gè)小型子團(tuán)隊(duì)(通常是一對(duì)人)。整個(gè)團(tuán)隊(duì)有一個(gè)與圖7概念相似的工作流,還有圖8所示的小型敏捷看板面板(ToDo、Doing、DONE)。 當(dāng)一個(gè)子團(tuán)隊(duì)選取了一個(gè)用戶(hù)故事,他們將其分解到任務(wù)并張貼在便攜式看板面板上。在這種情況下,看板系統(tǒng)由兩個(gè)層面組成,在項(xiàng)目層面一張卡片代表一個(gè)用戶(hù)故事,而在團(tuán)隊(duì)(或者結(jié)對(duì))層面一張卡片代表一個(gè)任務(wù)。 他們很喜歡這個(gè)便攜式小型看板系統(tǒng),并命名為“看板nano”。 圖8 便攜式敏捷看板(“看板nano”) 如你所見(jiàn),將看板的概念應(yīng)用于軟件開(kāi)發(fā)有許多方式。“敏捷看板”用來(lái)在團(tuán)隊(duì)中分享信息并使工作自導(dǎo)向,但它不支持流程。“持續(xù)看板”是另一種類(lèi)型的看板,能夠讓小批量的維護(hù)工作在幾個(gè)狀態(tài)之間流轉(zhuǎn)。這種結(jié)合便是“精益+敏捷看板”,使用“持續(xù)看板”貫穿價(jià)值流,同時(shí)在子流(sub-stream)中使用“敏捷看板”。 注意,圖5中的“敏捷看板”(在當(dāng)今敏捷項(xiàng)目中隨處可見(jiàn))僅僅可以看到價(jià)值流中的一個(gè)子流。當(dāng)你考慮從客戶(hù)到客戶(hù)的完整價(jià)值流,經(jīng)常由處于同一流中的某個(gè)團(tuán)隊(duì)遞交給你需求,而另一個(gè)團(tuán)隊(duì)則交付你的工作結(jié)果給客戶(hù)。這篇文章的目的之一,就是要設(shè)法讓看板的應(yīng)用超越“敏捷看板”,擴(kuò)大看板在價(jià)值流中的應(yīng)用范圍。 生產(chǎn)與開(kāi)發(fā)軟件開(kāi)發(fā)是不同于生產(chǎn)活動(dòng)或者制造活動(dòng)的。軟件工程師每次創(chuàng)造的產(chǎn)物都是不同的,而制造業(yè)總是周而復(fù)始的生產(chǎn)相同的東西。所以直接將兩者等同起來(lái)是危險(xiǎn)的??墒?,讓我們研究一下如何在軟件開(kāi)發(fā)看板中找到TPS看板中的特性。表1顯示了我們?cè)谡鹿?jié)1中總結(jié)的看板特性在我們已經(jīng)提及的兩種軟件看板中是否仍然有效。
圖6中的“持續(xù)看板”不僅可以限制在制品的數(shù)量,還可以以“單件(one-piece)”和“拉動(dòng)式”的方式控制流程,而不需要召開(kāi)迭代會(huì)議。在這種方法中,它的關(guān)注點(diǎn)是“限制在制品的數(shù)量”、“連續(xù)流通”和“拉動(dòng)式”,同時(shí)允許團(tuán)隊(duì)(或者管理人員)借其改進(jìn)工序。 回顧一下圖3,我將看板的特性和作用分成圖9所示的兩個(gè)關(guān)鍵區(qū)域,以便上面提到的兩類(lèi)軟件看板概念的用途各得其所。圖10顯示了生產(chǎn)和開(kāi)發(fā)的頻譜圖。生產(chǎn)是成功幾率很高(高于99%)的工序,而開(kāi)發(fā)的成功幾率要低。當(dāng)成功幾率在50%左右的時(shí)候敏捷是理想的開(kāi)發(fā)方法,而當(dāng)成功幾率超過(guò)90%的時(shí)候瀑布式則是理想的開(kāi)發(fā)方式(依據(jù)Shannon理論,一個(gè)具有50%成功幾率的項(xiàng)目是最有價(jià)值的項(xiàng)目)。通常隨著開(kāi)發(fā)進(jìn)入到支持維護(hù)狀態(tài),修改缺陷和添加新功能的成功幾率逐步提高。 看板系統(tǒng)的“工序控制焦點(diǎn)(Process Control Focus)”適合在“高于90%”的成功率下工作,而“工序改進(jìn)焦點(diǎn)(Process Improvement Focus)”既適合在50%成功率也適合在90%成功率下工作。 值得注意的是,敏捷方法在產(chǎn)品維護(hù)狀態(tài)(sustaining mode )下仍能工作良好,同樣看板的“工序改進(jìn)焦點(diǎn)”特性也在維護(hù)狀態(tài)下工作良好。 圖9 看板的特性和作用(2) 圖10 使用看板的方法頻譜 KSSE——持續(xù)工程的看板系統(tǒng)接下來(lái),我介紹最近出現(xiàn)的一種軟件開(kāi)發(fā)精益應(yīng)用。Agile2007會(huì)議時(shí),我參加了David Anderson主持的關(guān)于軟件看板的一個(gè)會(huì)中會(huì)(Conference-Within-A-Conference,CWAC)。他在Corbis.com管理著一個(gè)“維護(hù)狀態(tài)(maintenance mode)”類(lèi)型的看板系統(tǒng),并發(fā)表了一篇相關(guān)論文——持續(xù)工程的看板系統(tǒng)[Anderson 07]。他的方法首先關(guān)注于看板的“限制在制品數(shù)量”特性——就像在圖4所示的抽象圖表那樣——也關(guān)注“自導(dǎo)向”特性以使得團(tuán)隊(duì)自組織,減少自上而下的(top-down)管理。然后,通過(guò)看板觀(guān)察流程,找出整個(gè)工序流中的駐點(diǎn)(stagnation point)并調(diào)整人力資源,也就是在工序間調(diào)動(dòng)成員。這意味著他的方法,像圖3表現(xiàn)的那樣,涵蓋了看板特性中從“限制在制品數(shù)量”、“自導(dǎo)向”到“改善”。 會(huì)議之后,Anderson啟動(dòng)了一個(gè)看板開(kāi)發(fā)郵件列表2,這里已經(jīng)成為將看板應(yīng)用于軟件開(kāi)發(fā)的一個(gè)新興知識(shí)創(chuàng)新討論社區(qū),名為“KSSE”——持續(xù)工程的看板系統(tǒng),讀作Kiss-ee ;-)。Aaron Sanders還著手創(chuàng)建關(guān)于看板的知識(shí)體系,并已經(jīng)開(kāi)始構(gòu)建KSSE詞匯表。 KSSE對(duì)于通過(guò)隊(duì)列在工序間傳遞移交物、連續(xù)相接的多個(gè)工序運(yùn)作良好。請(qǐng)注意KSSE不一定需要納入“迭代”的概念。使用KSSE的方式,我看到了另一種縮放(scaling)敏捷的可能性方式并且好過(guò)“scrum of scrums”。[Ladas07] 創(chuàng)造價(jià)值流當(dāng)通過(guò)看板從敏捷放大到精益時(shí),一張看板卡應(yīng)該代表什么東西呢? 在敏捷看板系統(tǒng)中,一個(gè)卡片是一個(gè)從“用戶(hù)故事”中分解出來(lái)的“任務(wù)”。在開(kāi)發(fā)團(tuán)隊(duì)中,它作為工作的一個(gè)基本單元執(zhí)行,因?yàn)閳F(tuán)隊(duì)中每個(gè)人都能明白它的意思。但是,在看板系統(tǒng)中它貫穿了價(jià)值流中的多個(gè)工序(多個(gè)團(tuán)隊(duì)),在其中流轉(zhuǎn)之物應(yīng)該帶有客戶(hù)認(rèn)可的價(jià)值。既然這樣,看板卡片就不是對(duì)應(yīng)于“工作(work)”而是對(duì)應(yīng)于“功能(feature)”,并且它不是WBS(任務(wù)分解結(jié)構(gòu),work breakdown structure)的組成部分,而是FBS(功能分解結(jié)構(gòu),feature breakdown structure)的組成部分。因此團(tuán)隊(duì)中的每個(gè)人,甚至是客戶(hù),都能夠理解看板的含義和流轉(zhuǎn)之物的價(jià)值。Jim Highsmith 在《敏捷項(xiàng)目管理(Agile Project Management)》[Highsmith04]書(shū)中所概述的原理也將FBS定位高于WBS。 “用戶(hù)故事”,“Backlog事項(xiàng)”或者“用例”都被抽象為“MMF”(最小可市場(chǎng)化功能,minimum marketable features),用來(lái)明確地聲明流轉(zhuǎn)之物具有客戶(hù)價(jià)值。于是精益開(kāi)發(fā)就可以說(shuō)成“使得MMF快速流過(guò)整個(gè)價(jià)值流。”圖5中“敏捷看板”的例子是一個(gè)工作的分解,它在團(tuán)隊(duì)內(nèi)部工作良好。圖6中“持續(xù)看板”的例子是一個(gè)功能的分解并且一張卡片代表一個(gè)MMF。圖7中“精益+敏捷看板”的例子與圖8一起展示了上級(jí)功能分解和下級(jí)工作分解的結(jié)合。 一旦建立起工作流程,五個(gè)“精益思想”[Womack1996]的核心概念就可直接應(yīng)用于整個(gè)工序。精益工序的管理可以簡(jiǎn)單地遵循以下原則。
TPS全景視圖以下內(nèi)容相當(dāng)于附錄,我在這一部分分享從TPS中學(xué)到,并發(fā)現(xiàn)可以適用于軟件開(kāi)發(fā)的知識(shí)。Mary和Tom Poppendieck已經(jīng)發(fā)現(xiàn)有效的軟件開(kāi)發(fā)方式和精益或者TPS方法有著很多的相同點(diǎn)——不是在實(shí)踐層面,而是在原理層面上[Poppendieck03, 07]。讓我們從更高的角度回過(guò)頭來(lái)再看下TPS中的看板。 讀者很容易假定看板是整個(gè)TPS的中心,但其實(shí)并不是。圖11展示了TPS的概念結(jié)構(gòu),有時(shí)也叫做“TPS之屋(TPS House)”。它有好幾種版本,圖11是基于Toshiko Narusawa和John Shook的版本[Narusawa06]。在TPS中,看板僅僅是“拉動(dòng)式系統(tǒng)”實(shí)現(xiàn)準(zhǔn)時(shí)制(Just-In-Time9)的一種方法。準(zhǔn)時(shí)制可以解釋為“僅在需要的時(shí)候生產(chǎn)和交付所需要的東西,并且僅完成需要的數(shù)量”。它直接瞄準(zhǔn)的是客戶(hù)的需要:“盡快以最低的價(jià)格提供最高質(zhì)量的產(chǎn)品。”注意,準(zhǔn)時(shí)制是TPS的兩大支柱之一,另一個(gè)是Jidoka10(譯注:寫(xiě)作“自動(dòng)化/自?xún)P化”,但其含義與對(duì)應(yīng)于A(yíng)utomation的中文的“自動(dòng)化”不同,詳見(jiàn)注釋?zhuān)?。制造業(yè)中的“Jidoka”即自動(dòng)停機(jī)(Autonomation)與軟件開(kāi)發(fā)中的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)類(lèi)似。Mary和Tom Poppendieck把Jidoka解釋為“停止流水線(xiàn)文化(Stop the Line Culture)”。豐田工廠(chǎng)的工人真正地可以停止流水線(xiàn)而不是把次品推到下一個(gè)工序——它不僅是一種規(guī)定,也是豐田公司的一種文化,它的萌芽可以追溯到(豐田集團(tuán)創(chuàng)始人)豐田佐吉時(shí)期。 圖11 TPS概念結(jié)構(gòu) 準(zhǔn)時(shí)制由以下三部分元素構(gòu)成,“節(jié)拍時(shí)間(Takt time)”、“連續(xù)流通”和“拉動(dòng)式系統(tǒng)”。
也應(yīng)該注意到兩個(gè)支柱依賴(lài)于改善和人。豐田一年生產(chǎn)近千萬(wàn)輛汽車(chē),同時(shí),他們通過(guò)在現(xiàn)場(chǎng)(也就是車(chē)間)中近1百萬(wàn)次的改善來(lái)完善他們的工序。形象化地表示出團(tuán)隊(duì)正在做些什么,總是改善的出發(fā)點(diǎn)。 結(jié)論文中,我分析了看板在制造業(yè)的實(shí)施,接著列出了看板的特性??窗逑到y(tǒng)用以達(dá)到以下目標(biāo):
“敏捷看板”專(zhuān)注于#2,而“持續(xù)看板”專(zhuān)注于#1。我提出將兩者結(jié)合,來(lái)拓展可視化和“拉動(dòng)式系統(tǒng)”到整個(gè)價(jià)值流,以使得整個(gè)生產(chǎn)精益化。 感謝Tom Poppendieck與Mary對(duì)本文進(jìn)行了通篇審校,并給出了許多見(jiàn)解和建議,在此我表示非常感謝。感謝Yamaha Motor Solution有限公司總裁Yasuharu Terai以及Ryuichi Sato允許本文中使用其看板系統(tǒng)的圖片。另外David Anderson也參與了本文的審校工作并且提出了一個(gè)更好的看板抽象層次來(lái)推進(jìn)KSSE的發(fā)展。KSSE概念最初來(lái)源于Kanbandev Yahoo團(tuán)隊(duì)的討論。最后感謝Deborah Hartmann的最后校訂工作,使得我的表達(dá)更清晰。 關(guān)于作者Kenji HIRANABE是日本Change Vision公司的CEO。他是JUDE(一個(gè)集成了ERD、DFD和Mind Map的UML編輯器)和TRICHORD 11(一個(gè)集成了Burndown圖表和Parking Lots圖的敏捷項(xiàng)目管理看板系統(tǒng))的創(chuàng)始人。他還把《Lean Software Development》、《XP Installed》、《Agile Project Management》以及其他XP/Agile書(shū)籍翻譯成日文。Kenji把軟件開(kāi)發(fā)看作是一種溝通游戲,并一直在尋求提高軟件開(kāi)發(fā)的生產(chǎn)效率、合作程度以及樂(lè)趣的途徑。 參考文獻(xiàn)TPS
1關(guān)于看板的更多信息http://en./wiki/Kanban 2關(guān)于kanbandev的更多信息http://finance.groups.yahoo.com/group/kanbandev 3關(guān)于Taiichi Ohno的更多信息http://en./wiki/Taiichi_Ohno 4關(guān)于改善的更多信息http://en./wiki/Kaizen 5關(guān)于現(xiàn)場(chǎng)的更多信息http://en./wiki/Gemba 6JUDE是一個(gè)集成了UML、ERD、DFD和Mind Map的可視化軟件編輯器。點(diǎn)擊http://jude./了解更多信息。 7Yamaha Motors有硬件產(chǎn)品生產(chǎn)線(xiàn),因此他們的軟件團(tuán)隊(duì)有很好的條件從工廠(chǎng)中學(xué)習(xí)精益思想。在我參觀(guān)他們公司的時(shí)候,看到了許多用于軟件項(xiàng)目可視化的“XFDs”(極限反饋裝置,extreme feedback devices),這與他們工廠(chǎng)中的可視化管理系統(tǒng)——“行燈(Andon)”是類(lèi)似的。 8雖然無(wú)關(guān)緊要,但知道那些紅盒子(工序)表示是由中國(guó)外包生產(chǎn)的也很有趣。 9關(guān)于準(zhǔn)時(shí)制的更多信息http://www./en/vision/production_system/just.html 10關(guān)于Jidoka的更多信息http://www./en/vision/production_system/jidoka.html 11關(guān)于TRICHORD的更多信息http://trichord./ |
|