進入汽車時代,擁堵成為日常生活的一部分,上圖中擁堵的過橋場景,相信每個人都經歷過,各個方向的來車擁塞在狹窄的大橋上,彼此爭奪,互不相讓,結果是大家都寸步難行,那么,生活中我們的交警蜀黍怎么解決這個問題?

1.識別堵塞點,及時疏通,比如有兩個車發(fā)生擦掛了,堵在橋上吵架,警察蜀黍第一件事情肯定是要求事故車輛快速撤離現(xiàn)場,讓車流正常走起來;
2.限制車的總流量,尾號限行,單雙號限行,外地車牌限行,交通高峰期限行,某些特殊路段限行,總之一句話,限制道路承載的車流總量,讓在路上的車能走好,避免大家都上路,但是都堵著的情況;
3.分類管理,價值優(yōu)先,公交專用道就是一個典型的例子,公交車的價值最大,給予專用的快速通道,保證高價值的工作能優(yōu)先完成。
萬物相通,類比軟件項目,其實存在著相當多類似的問題
1.需求過載,感覺永遠做不完,苦逼的碼農們過著朝九晚九每周六天的生活,加班到深夜兩三點也不是什么稀罕事,即使如此,軟件項目延期也是非常普通的事情,不延期的項目能有幾個?
2.工作過程中,經常存在彼此等待的問題,比如搭建一個測試環(huán)境要好多天,所有團隊都在等待,某個組件的代碼已經寫完了,但你依賴的某個組件還沒出來,只有等待,有多少時間我們浪費在等待當中?
3.高價值的需求和低價值需求攪合在一起,一方面碼農們辛辛苦苦堆出來的功能上線后無人問津,另一方面用戶們急需的特性遲遲不能實現(xiàn),客戶心里罵工程師都是傻缺,工程師們欲哭無淚啊!
精益看板就是幫助我們解決這些問題的,其實原理和交警蜀黍解決交通問題并無不同,讓我們來看幾個關鍵點:
1.價值流識別和可視化,其作用就是識別堵塞點:
軟件開發(fā)可以大概分為,需求分析、設計、編碼、Review、構建、集成驗證、系統(tǒng)驗證、部署、上線發(fā)布等多個階段,每個公司流程都有差別,但目的都是向用戶交付一個有價值的應用,把整個交付流程梳理出來,并進行可視化,看板(Kanban)一詞來自日文,本義就是可視化卡片。把當前進行的工作通過卡片進行表示,作用很快就會出來,哪個環(huán)節(jié)耗時最多?哪個環(huán)節(jié)堆積的工作對多,造成合作的伙伴都在等待?通過看板可視化可以很快的呈現(xiàn)出來,筆者以前帶的一個項目,編譯出包及其復雜,每次修改后都要耗時2-3個小時才能把包出出來,如果出點問題,一兩天就過去了,所有相關的人都在等待,以前大家習以為常,覺得系統(tǒng)復雜,網狀依賴關系等,不斷地暗示自己這是合理的、正常的。通過看板呈現(xiàn)后,意識到這是典型一個堵塞點,下決心解決,投入精兵后,通過依賴解耦、并行編譯等綜合手段解決,后來每次出包都在十分鐘左右,效率大幅提升。
2.限制WIP數量,其作用相當于限行
限制在制品數量,也是一個精益看板的核心實踐,道理和交警通過各種限行的手段保證上路的車能正常行駛是一樣的,如果軟件開發(fā)過程中需求過載的情況嚴重,其結果是所有的需求都做不好,交不出,實驗表明,人能同時關注的事情不超過七件,買房、買車、夫妻吵架等生活內容就已經占了一大半了,你如果同時交好幾項工作給一個工程師,結果是一項都做不好,或者是幾項工作都很慢,這個就是限制WIP的道理,和敏捷開發(fā)的思想也相通,絕不過載,但承諾的需求保證按時交付,通過快速迭代提升整體效率。
3.價值優(yōu)先,消除浪費,類比公交優(yōu)先道
精益看板的另外一個核心思想就是消除浪費,聚焦于高價值的工作,軟件開發(fā)最大的浪費就是做了很多沒有用的功能,統(tǒng)計數據表明,百分之五十以上的需求都是偽需求,開發(fā)出來根本沒有用,回到生活中,每個人的手機上都裝了好幾十個APP,但有多少是我們裝了就從來沒打開過的?因此一定要體現(xiàn)價值優(yōu)先的理念,設立軟件開發(fā)的公交專用道,首先是正確的評估需求,避免技術優(yōu)先的思維,覺得這個技術很牛叉就一定要做,首先想想有沒有用戶價值,正確的識別需求價值后,高價值的需求享受專用道,優(yōu)先交付,快速滿足客戶,這樣才有能讓碼農們也享受下朝九晚五,周末還有時間撩撩妹的生活。