寫在前面
我們回想一下,在我們曾經工作過的項目中,有經歷過超過約定期限嗎?有經歷過超過預算嗎?所交付的軟件是否符合客戶的需要?有經歷過項目在做的功能中被取消掉嗎?如果答案是有,也不要太過驚慌,因為有千千萬萬的從事軟件行業的人們,在經歷和我們一樣的困擾。
Kent Beck曾經說過,程序員的職業病就是太過樂觀。這個玩笑的背后,映射出的現實則是,軟件行業一直以來令人吃驚的低成功率,盡管軟件行業也已經發展了幾十年的光陰。
而與之形成對比的是,以軟件為支撐的產品和專業型服務,每年都在急劇的發展和增長。敏捷軟件開發方法告訴我們如何提高軟件行業的成功率,同時,作為影響并顛覆了制造業將近50年的精益思想,也已經被應用在軟件行業中,并且已經為提高軟件行業的成功率帶來了巨大的積極影響。我們選擇去擁抱精益思想,就是想利用精益思想的強大力量,來幫助我們迎接在軟件開發過程中的挑戰,并且提高我們成功交付軟件的信心。
精益起源
精益來源于制造行業,具體的說,精益思想是人們在研究過豐田生產方法之后,從中抽象提取出的一系列方法論,從而能夠影響并在其他行業取得成功。
Henry Ford and the Model-T
Henry Ford是Ford汽車公司的創始人,他也可以算作是比較早的發展精益生產理念的人之一。Ford的主要貢獻在于在規模生產汽車的過程中,引入了裝備流水線,不同的零件和半成品會隨著流水線傳送帶進行傳送,這樣就減少了人員的移動,提高了工人的工作效率。同時,批量化的生產,也意味著原材料的批量運輸,這樣也可以節省成本。他用這種方法生產了著名的Model-T車型,并取得了很大的成功。
第一批Model-T面世于1908年10月1日,在1908年到1927年之間,Ford生產了一千五百萬量Model T車型。在Model-T之前,汽車是一件奢侈品。在1908年初,路上行駛的汽車數量不多于20萬輛。Ford通過堅持只生產一種車型來保證低價。到1914年,Ford的生產線可以達到每周生產幾千輛汽車。
然而到了1920年代,很多美國人已經不在滿足于呆板但廉價的汽車了。他們開始關注于不同的風格,速度或者能夠彰顯品位。隨著大眾口味的變化, Model-T的時代就此終結。1927年5月最后一輛Model-T汽車走出生產線。盡管如此,Model-T到現在為止,也能排進史上最暢銷車型的Top10的榜單。
Ford的生成方式是不靈活的。他的生產線只能一輛接一輛的生成同樣的東西,整個過程并不能輕易的對最終成品進行任何的微調和修改。并且,這種生成方式是一種“推”模型,生產計劃取決于Ford本身,而不是來自于客戶的需求量。這就導致大量未售出的汽車會占用大量的庫存資源,也就意味著大量的資金需要投入到庫存上來。
許多汽車制造商嘗試學習Ford的生產方式,但很快他們就意識到了這種不靈活性所帶來的問題。表現上看,為客戶早早的做好庫存準備,是一件好事。但其實它會帶來很多問題。除了庫存本身的費用以外,庫存中的大量代售汽車,也意味著將大量的現金封存起來。而且庫存中的汽車可能會被偷,或者被損壞,起碼也會在貨架上慢慢蒙塵。而最終有可能在不得已的情況下,大幅降價出售,或者直接報廢,造成巨大的經濟損失。
豐田生產系統 Toyota Production System
1945年,二戰后的日本經濟凋敝。豐田汽車創辦人豐田喜一郎,聲稱日本汽車必須在三年之內趕上美國,否則日本汽車產業就無法存活。雖然這個期望并沒有實現,但日本的汽車工業受此鼓舞,工程師大野耐一在此背景下創造并開始不斷完善豐田生產方式。
1950年代,豐田派出代表團赴美國學習先進的商業經驗。他們參觀了行業領袖Ford公司,卻并沒有很多印象深刻的地方,反而驚訝于他們龐大的庫存數量。然后在對一個超市的訪問中,那種只在客戶購買商品后,才會觸發商品的重新補貨的機制,讓他們難以忘懷。
這個極簡的機制啟發了大野耐一,創造了Just-In-Time的概念。Just-In-Time努力將生產過程中的每一步的庫存量盡量降到最低,最好為0。換句話說,這意味著只需要在合適的時間,合適的地點,提供適量的原材料。去除庫存帶來很多好處,不僅可以節省成本,還去除了商品被廢棄或者損壞,久置的可能性。
然而,沒有了庫存的現成商品,必須擁有精準的控制生成過程的能力,意味著當有需求的時候,各種不同的零配件都可以及時到位。但是一旦擁有了這種能力,就意味著可以響應客戶不同的訂單需求,帶來非常大的靈活性。JIDOKA是實現這種精準控制的原則之一。JODOKA的意思是有人參與的自動化。在正常狀況下,機器自動運轉生成,無需人員參與,當機器進入異常狀態時,會自動停止生產。工作人員會修復這個問題,并且嘗試找到問題產生的根本原因,制定一個對策,以防止同類型的問題再次發生。
豐田現在是全球第9大企業,銷量最大的汽車廠商,并持續盈利。到2016年7月,豐田在汽車生產和銷售數據上超越福特,并在廉價汽車上有更高利潤率。這是精益生產管理的巨大成功。
精益思想
20實際90年代初《改變世界的機器》一書的出版,標志著“精益(Lean)”的誕生。精益思想(Lean Thinking)高度歸納了精益生產中所包含的新的管理思維:以越來越少的投入——較少的人力、較少的設備、較短的時間和較小的場地創造出盡可能多的價值;同時也越來越接近用戶,提供他們確實要的東西。
對現有流程進行改進,消除浪費。
兩個核心:持續改進,尊重他人。
無論是敏捷,還是精益,都是一種思想。
敏捷:和客戶密切協作,盡早地迅速交付可用的軟件。敏捷主要關心的是圍繞軟件開發的具體開發實踐和項目管理,一般不太關心在其中進行軟件開發的商業環境。
精益:在對客戶有價值的上下文環境下消除浪費。精益采用比較寬泛的視角,偏好整體看待軟件開發和它的整個業務環境。
精益和敏捷是一脈相傳的,為了更突出一下價值理念。從源頭對比,如果更偏向外部拉動,更愿意冠名精益,如精益企業、精益需求管理等。強調快速響應的,更多稱為敏捷,如敏捷開發、敏捷團隊等。
價值 (Value)
定義價值:針對特定的產品或服務,由客戶來定義什么是有價值的。精確地定義價值是精益思想關鍵的第一步。
定義價值的類別:可分為“產生價值”,“不產生價值但有必要”和“不產生價值卻是浪費”三種。
思考:在產品生產過程中,質量檢測是否是有價值的?
價值流 (Value Stream)
識別價值流:篩選出必要的過程,將輸入轉變成輸出,以此來識別和消除浪費。確定每個產品的全部價值流是精益思想的第二步。
一旦我們了解了客戶希望的價值是什么,我們就可以嘗試繪制價值流圖。價值流圖首先將生成過程分為不同的階段和步驟,然后將每一個步驟進行歸類。我們的目標是盡量去除“不產生價值卻是浪費”的步驟。
七種典型的浪費
無論Ford引進流水線,還是大野耐一JIT機制去除庫存,共性都是去除過程中存在的浪費。TPS(豐田生產方式Toyota Production System)定義了7種不同種類的浪費:
1.Overproduction過度生產:過度生產意味著生產遠超過需要,或者意味著在需要產生之前就進行生產。通常從庫存的數量就可以看出是否存在過度生產。
2.Inventory庫存:庫存中通常存放的是大量半成品或者未能銷售的成品。超過限度的庫存不僅吞占大量資料,而且延遲了發現潛在問題的時間。
3.Transportation運輸,移動:Transportation是指在生成過程中,不必要的運輸或者移動,包括物料,或者人等。
4.Motion運動,動作:運動是指在生成過程中,人或者設備不必要的多余動作。
5.Wait等待:人或者物料在生產過程中的等待時間,如等待下一階段開始等。
6. Defects缺陷:產品缺陷可能是最顯然易見的浪費。精益聚焦于如何防止缺陷的發生,而不是傳統方式下,發現缺陷,修復缺陷這樣的思路。
7.Over-processing:不必要的流程或者額外的過程,不會對客戶帶來額外的價值,卻帶來額外的成本。
Under-utilization of people:除了以上的七種,還有一種浪費,即under-utilization of people,是指未能充分利用工人的創造力或者其他資源等。
流動 (Flow)
讓價值持續流動:讓消除浪費后的可以創造價值的過程“流動”。產品的生成過程必須是能夠“流動”的,可以回想Ford的自動化生產線對量產的意義。如果一旦價值流停了下來,那么浪費就會產生。
創造流動的三個要點:關注什么在價值流中流動;不要被部門間的分隔所限制;消除瓶頸。
時間是改善流動的重要衡量標準。?舉個我們軟件交付中常見的精益度量的例子:
交付(前置)時間(Lead Time):當前迭代完成的Story中,從需求進入IPM至需求交付的耗時。
周期時間(Cycle Time):完成Story實際花費的時間。
吞吐率(Throughput): 某個給定時間段交付的Story工作項數量。
拉動 (Pull)
拉動價值:客戶拉動層層傳遞到最底層供應商,實現恰好夠用的生產。按用戶需要拉動產品,而不是把用戶不想要的產品硬推給用戶。
前面我們講過推動式的生產的弊端:
拉動系統避免了浪費,對客戶需求的響應很靈活。那么作為上游的部分,什么時候來生產,生產多少呢?這就是個問題了。看板是為了達到JIT準時生產方式而控制現場生產流程的工具。
盡善盡美 (Perfection)
最后一個原則,盡善盡美,是指始終不斷的精細化,不斷的識別過程中的浪費,并不斷的消除這些浪費。在日語中,“Kaizen"這個詞的字面意思是"持續改善”、在工作中,如果全體員工能夠持續專注于提高質量、生產率和客戶滿意度,那么這種文化可稱為改善文化。精益沒有終點,我們永遠可以變得更加精益。
讓客戶通過價值流拉動價值
在每一個過程中持續去除浪費
不斷提高產品和服務的質量
對參與的每一個人保持透明度
寫在最后
《精益和敏捷開發大型應用指南》一書中,根據豐田公司內部關于TPS早期版本的屋形圖開發了精益思想屋模型。
秉承精益的思想的兩大支柱:尊重他人,持續改善。在具有不確定性的競爭市場環境中,建立高適應力、持續創新的高績效組織是我們的追求。
延伸閱讀:《談談精益(下篇)——看板系統》
本文作者萬學凡,ThoughtWorks首席咨詢師,武漢。作者保留本文一切權利,未經許可請勿轉載。