如何從敏捷到精益地修復(fù)bug與解決問(wèn)題
關(guān)于精益的定義有許多,但其中最令我感到鼓舞的是精益企業(yè)研究所主席John Shooke在它的著作《管理精益》中所描述的一段話:精益通過(guò)提高員工的水平來(lái)保證產(chǎn)品開發(fā)。在這個(gè)定義的基礎(chǔ)上,這篇論文接下來(lái)解釋了精益是怎樣提高人員的水平的:方法就是解決問(wèn)題。這一定義揭示了以下管理實(shí)踐的美妙之處:仔細(xì)設(shè)計(jì)你的工作,讓你能夠清晰地看見(jiàn)所發(fā)生的問(wèn)題(以及同時(shí)出現(xiàn)的學(xué)習(xí)機(jī)會(huì)),并在問(wèn)題出現(xiàn)后以科學(xué)的方式解決。
在與使用敏捷方法進(jìn)行軟件開發(fā)的團(tuán)隊(duì)共同工作時(shí),我曾經(jīng)有過(guò)一些誤解:起初時(shí),我混淆了bug和問(wèn)題的概念,并且確信敏捷過(guò)程就是精益,因?yàn)樗軌蚴筨ug變得可見(jiàn)。在最后的幾個(gè)月里,在我頭腦中的概念開始漸漸清晰起來(lái),回想起當(dāng)初的情景,我開始相信,我所在的敏捷團(tuán)隊(duì)產(chǎn)生的bug,與精益系統(tǒng)產(chǎn)生的學(xué)習(xí)機(jī)會(huì)并不是一回事:后者表明在我的團(tuán)隊(duì)中確實(shí)存在著質(zhì)量問(wèn)題,而在其它許多團(tuán)隊(duì)身上我也看到了同樣的問(wèn)題。
寫這篇文章的目的,是為了描述我對(duì)bug與質(zhì)量問(wèn)題這一點(diǎn)上的思考方式是怎樣逐漸變化的。這對(duì)于讀者更好地理解造成bug產(chǎn)生的質(zhì)量問(wèn)題,并相應(yīng)地提高績(jī)效能夠起到一些啟示作用。并通過(guò)一些真實(shí)的故事描述來(lái)看清楚真正的問(wèn)題所在。(先聲明一點(diǎn):我們并不假設(shè)所有的敏捷團(tuán)隊(duì)都對(duì)此問(wèn)題抱有類似的誤解)
什么是bug?
在軟件工業(yè)中,一個(gè)bug可以代表任何形式的系統(tǒng)錯(cuò)誤(NullPointerException、Http 404錯(cuò)誤代碼或是藍(lán)屏……)、功能性錯(cuò)誤(在我單擊B的時(shí)候,系統(tǒng)本應(yīng)執(zhí)行Z,卻最終執(zhí)行了Y)、性能問(wèn)題以及配置錯(cuò)誤等等。
在精益的術(shù)語(yǔ)中,一個(gè)bug必須能夠按照下一節(jié)提到的定義進(jìn)行清晰的表達(dá),才能說(shuō)它是一個(gè)問(wèn)題。請(qǐng)相信我,我所見(jiàn)過(guò)的(和自己產(chǎn)生的)bug中,95%以上都不像是某種問(wèn)題。性能問(wèn)題或許是個(gè)常見(jiàn)的例外情況,但有趣的是,它們都
而在精益團(tuán)隊(duì)中,一個(gè)bug并不代表一個(gè)問(wèn)題,xXXX。我所見(jiàn)過(guò)的95%以上的bug表面上并不像真正的問(wèn)題——性能問(wèn)題或許是個(gè)常見(jiàn)的例外情況,但有趣的是,它們也是績(jī)效的一部分,不是嗎?
什么是問(wèn)題?
讓我們?cè)谶@里做一個(gè)標(biāo)準(zhǔn)的定義吧。在《豐田模式:精益模式的實(shí)踐》(Toyota Way Field book)這本書中,Jeffrey Liker定義了一個(gè)問(wèn)題所需的四個(gè)方面的信息:
當(dāng)前的實(shí)際績(jī)效
預(yù)期的績(jī)效(標(biāo)準(zhǔn)績(jī)效或目標(biāo)績(jī)效)
以當(dāng)前績(jī)效和目標(biāo)績(jī)效之差所體現(xiàn)的問(wèn)題嚴(yán)重程度
問(wèn)題的范圍和特點(diǎn)
正如Brenée Brown在TED所做的一次關(guān)于漏洞的演講中所說(shuō)的一樣,如果你不能評(píng)估某個(gè)漏洞,那么它就不存在。從更實(shí)用的角度來(lái)說(shuō),如果你不能解釋在績(jī)效差距上的問(wèn)題所在,那么很可能是由于你并沒(méi)有花足夠的時(shí)間去思考它。
在開始著手解決一個(gè)問(wèn)題之前,重要的一點(diǎn)是要清晰地表達(dá)它,花一定時(shí)間去理解它(按照精益專家Michael Ballé的說(shuō)法:要善待它),并且克制住直奔解決方案的沖動(dòng)。我們都聽說(shuō)過(guò)愛(ài)因斯坦的名言:“如果我只有一小時(shí)的時(shí)間去解決一個(gè)問(wèn)題,我會(huì)首先用55分鐘去思考問(wèn)題,最后用5分鐘去思考解決方案。”沒(méi)有人說(shuō)這是件容易的事。
在軟件開發(fā)敏捷團(tuán)隊(duì)的情境中,績(jī)效指標(biāo)或許是一張燃盡圖(表示工作量與延遲)、bug數(shù)量、系統(tǒng)響應(yīng)時(shí)間(質(zhì)量)、客戶對(duì)已提交的用戶故事的評(píng)價(jià)(以總分10分來(lái)表示客戶滿意度),以及每個(gè)Sprint提交的用戶故事(或用戶故事總點(diǎn)數(shù))數(shù)量(生產(chǎn)力)。
按照這些指標(biāo),可以有以下這些問(wèn)題存在:
質(zhì)量:這個(gè)頁(yè)面的響應(yīng)時(shí)間目標(biāo)是在500ms以內(nèi),而在5000個(gè)并發(fā)用戶的情況下,我們測(cè)量到的結(jié)果是1500ms。
質(zhì)量:在Sprint結(jié)束時(shí)仍未解決的bug數(shù)量(2個(gè),而不是0個(gè))
工作量/延遲:我們預(yù)計(jì)這個(gè)用戶故事需要3天時(shí)間完成,而實(shí)際上用了8天才完成
生產(chǎn)力:在Sprint結(jié)束時(shí),整個(gè)團(tuán)隊(duì)共提交了5個(gè)完成的用戶故事,而之前的計(jì)劃是完成7個(gè)。
客戶滿意度:我們希望每個(gè)用戶故事都能夠得到8分以上(滿分10分),而在上個(gè)Sprint結(jié)束后,有兩個(gè)用戶故事的客戶滿意度低于這個(gè)分?jǐn)?shù)(6.5分和7分)。
怎樣從bug中分析問(wèn)題所在?
Bug的出現(xiàn)往往是系統(tǒng)中產(chǎn)生了更常見(jiàn)問(wèn)題的一種癥狀,而對(duì)于精益團(tuán)隊(duì)來(lái)說(shuō),將這些癥狀與真正的問(wèn)題相關(guān)聯(lián)起來(lái)是至關(guān)重要的。可以這么說(shuō),正如米開朗基羅從大理石碎片中發(fā)現(xiàn)它的美麗,并最終打造成迷人的雕像一樣,精益團(tuán)隊(duì)的任務(wù)(例如某些團(tuán)隊(duì)會(huì)將持續(xù)改進(jìn)作為他們每日工作內(nèi)容的一部分)就是發(fā)揮他們的洞察力,從大量的bug中發(fā)現(xiàn)問(wèn)題,并將其抽取出來(lái)。實(shí)現(xiàn)這一點(diǎn)需要進(jìn)行細(xì)致地分析,并將這些原始的問(wèn)題轉(zhuǎn)化為學(xué)習(xí)的機(jī)會(huì)。
我發(fā)現(xiàn)了一種著手進(jìn)行這種分析的良好方式,就是將所有bug分門別類,并且理解每個(gè)bug類別的權(quán)重。大多數(shù)情況下,某個(gè)bug類別就體現(xiàn)了造成某個(gè)現(xiàn)有問(wèn)題的原因,或者它本身就是一個(gè)問(wèn)題。這種關(guān)聯(lián)性可以幫助你以正確的順序處理這些問(wèn)題,并首先從對(duì)整個(gè)操作績(jī)效影響最大的問(wèn)題開始解決。如果你仍然不確定應(yīng)該從何處著手,那么優(yōu)先解決質(zhì)量問(wèn)題是比較保險(xiǎn)的做法。
posted on 2014-05-21 10:06 順其自然EVO 閱讀(207) 評(píng)論(0) 編輯 收藏