不久前在廣州,筆者參加了一家軟件公司主辦的關(guān)于軟件項目開發(fā)的高層研討會,其間有兩個問題討論非常熱烈,值得與大家分享。第一個問題是:“有多少人的工作跟項目開發(fā)管理相關(guān)?”大部份的人舉起了手。但第二個問題是:“有多少人了解軟件項目開發(fā)精益管理的方法?”舉手的人寥寥無幾了。
精益管理的思想起源于豐田公司,歸納起來精益思想是在創(chuàng)造價值的目標(biāo)下,通過改良流程不斷地消除浪費,F(xiàn)已被廣泛用于生產(chǎn)制造管理,但用于IT軟件項目產(chǎn)品開發(fā)的實踐尚屬鳳毛麟角。我們看到這個討論的話題時,許多人發(fā)出了一種會心的微笑,在笑容的背后感到這又可能是一個外行人指導(dǎo)和領(lǐng)導(dǎo)內(nèi)行人的炒作話題吧。但經(jīng)過大家的研討,發(fā)現(xiàn)在做IT軟件項目開發(fā)的時候,也應(yīng)該跳出本行業(yè)局限的眼光,看看外面其它行業(yè)的思想和方法,從中吸收有益的精華。
精益,是一種思想,一種哲學(xué),一個方法論,其精髓是拒絕浪費。我們IT項目開發(fā)學(xué)習(xí)的不是“精益生產(chǎn)”的形式,而是其精髓思想。這種思想,不僅可以用于生產(chǎn),也可以滲透到IT軟件項目開發(fā)中。在研究會上,我們討論到一個借鑒了精益思想的IT項目開發(fā)是一個系統(tǒng)的觀念。一般來說,IT軟件項目精益開發(fā)系統(tǒng)包括三個要素,即人、流程和技術(shù)。以借鑒到IT軟件項目精益開發(fā)來說,是需要為IT項目的開發(fā)提出一系列的流程,培養(yǎng)技術(shù)隊伍,運用有效的技術(shù)和工具。同時,必須注意要把這三個方面整合在一起,成為一個協(xié)調(diào)發(fā)展的系統(tǒng)。
例如在人的方面,精益思想強(qiáng)調(diào)如何將每個員工的能力發(fā)揮到極限,認(rèn)為不應(yīng)該只是簡單的管理人,而應(yīng)該去培訓(xùn)人。如果不能將管理的重點放在員工的培養(yǎng)上,不能理解精益生產(chǎn)的真理。同時,精益生產(chǎn)的另一個精髓是管理過程,精益思想不是著眼于結(jié)果,而是強(qiáng)調(diào)過程。“只對結(jié)果管理”的管理思路的結(jié)果是員工對找借口、為結(jié)果辯護(hù)很在行,對數(shù)據(jù)、報告很在行,但軟件項目成果的質(zhì)量只有在全過程都有效控制下才能得到根本的保證。
一. 建立順暢的開發(fā)流程
確定高效的IT軟件開發(fā)流程,是精益思想開發(fā)的第一個精髓。
如何創(chuàng)建一種高效、順暢的軟件項目開發(fā)流程?首先,精益思想提出強(qiáng)調(diào)“建立健全研發(fā)流程“。所謂精益軟件開發(fā)思想包含了一整套的方法論和實施方法。精益軟件開發(fā)將精益生產(chǎn)中持續(xù)改進(jìn)的概念引入到軟件開發(fā)過程之中,實現(xiàn)對軟件開發(fā)過程進(jìn)行精益管理。實現(xiàn)精益軟件開發(fā)的核心在于:建立一套完整的開發(fā)流程,然后建立一套測量流程的手段,不斷持之以恒地改善流程,不斷優(yōu)化,堅持不懈。
不同的企業(yè)因定位不同,對于研發(fā)的價值理解也是不一樣的,他們的流程和實現(xiàn)流程的工具肯定是完全不一樣的。但我認(rèn)為軟件開發(fā)人員應(yīng)當(dāng)向豐田公司的產(chǎn)品開發(fā)流程學(xué)習(xí)和借鑒。目前,豐田內(nèi)部的精益開發(fā)步驟是這樣的:首先,在客戶需求的基礎(chǔ)上,對工作進(jìn)行分辨,區(qū)分出哪些部分是能夠滿足客戶需求的有效部分。如果工作中的某些流程生產(chǎn)出的結(jié)果并不能滿足客戶的需求,便是一種浪費,不是增值的流程和操作。因此,精益開發(fā)首先需要了解客戶需求。此后,需要對工作流程進(jìn)行細(xì)化分割,把流程分成更細(xì)微的步驟,并保證每個步驟都能滿足客戶的需求,增加價值。
其次是流程的標(biāo)準(zhǔn)化和可操作化,這是精益思想流程的基礎(chǔ)之一。在軟件開發(fā)過程中,每個企業(yè)的現(xiàn)狀不同,因此產(chǎn)品開發(fā)的方式也不同。但精益思想提到如何關(guān)注研發(fā)流程,讓管理流程“落地”,并要讓流程規(guī)范起來,不再是像過去把好流程放在紙上,靠人去管理。固化和標(biāo)準(zhǔn)化開發(fā)流程是一個方式。
二.引入首席項目主管負(fù)責(zé)制
精益軟件開發(fā)的第二個精髓,是將合適的人員安排在合適的崗位上,建立一個有效的軟件項目開發(fā)組織。首席項目主管負(fù)責(zé)制度是精益軟件在人員安排上的核心方式之一。每個項目的開發(fā)團(tuán)隊的都心須確立核心領(lǐng)頭人,并要突出了首席項目主管的角色和地位。
首席項目主管必須非常清楚,他們接手任務(wù)之后,他要開始考慮自己的設(shè)計思路,并把這個思路和團(tuán)隊交流。他的思路有兩部分:一是勇于面對困難和挑戰(zhàn),當(dāng)遇到挑戰(zhàn)時可以這么做,也可以那么做,終希望能在這些方案中達(dá)成平衡,而不是做退縮;二是要找到問題的根源。
首席項目主管應(yīng)該具備三個能力,這也是豐田的標(biāo)準(zhǔn):首先是很高的技術(shù)水平,是一個能力非常出色的總工程師,而且要對產(chǎn)品有整體意識和遠(yuǎn)見卓識。第二,要有項目管理能力,要代表客戶,理解客戶的需求。第三,要有出色的領(lǐng)導(dǎo)能力。
對于一個企業(yè)來講,如果需要做軟件精益開發(fā),公司的結(jié)構(gòu)也要做一些改組。精益思想建議采用的是一種矩陣式的組織架構(gòu)。在這種架構(gòu)中,團(tuán)隊按照具體項目和功能來劃分,大程度地使兩者的優(yōu)勢結(jié)合在一起。比如說,首席項目主管整體負(fù)責(zé)一個項目,不同項目有不同的首席主管,他們可以組成首席主管團(tuán)隊。而對于各種不同的項目功能需求,又按軟件不同的功能部分分組,負(fù)責(zé)每個功能小組的是職能部門經(jīng)理,如某些不同項目可能用到共用的功能模塊,各職能部門的工程師向該部門的經(jīng)理報告,以實現(xiàn)按功能優(yōu)化和同類經(jīng)驗共享。
其次,精益思想除了強(qiáng)調(diào)首席主管負(fù)責(zé)制度外,還提到一個重要的關(guān)于人的因素是:團(tuán)隊是推進(jìn)精益管理的關(guān)鍵。通過推行精益管理,建立一個基業(yè)常青的團(tuán)隊,調(diào)動起每一個員工的積極性,只有這樣才能推動開發(fā)項目各項工作持續(xù)發(fā)展。建立一個良好的團(tuán)隊則是企業(yè)能否有效實施精益管理的關(guān)鍵。
后,精益管理的推進(jìn)要以人為本,精益管理雖然有各種流程作為基礎(chǔ),但是運行這些體系和流程的是人。熟悉豐田精益方式的人都知道,豐田方式中一個很重要的內(nèi)容是人員管理,即“育成”。育是培育,成是成功,強(qiáng)調(diào)人才培養(yǎng),把人才看作是人“財”。 一項針對包括豐田在內(nèi)的50家具有百年歷史的全球500強(qiáng)企業(yè)的調(diào)查顯示,這些企業(yè)的共同之處,是擁有共同的理想、共同的價值觀、共同的行為準(zhǔn)則的一支強(qiáng)大團(tuán)隊。
三.有效技術(shù)和工具的支持
精益思想軟件項目開發(fā)的第三個精髓,是用工具和技術(shù)來支持流程和人的工作。在引進(jìn)新技術(shù)方面,豐田奉行的原則不是積極倡導(dǎo)新技術(shù),而是使用可靠的、已經(jīng)過充分測試的技術(shù)。工具和技術(shù)的意義在于支持流程,而不是驅(qū)動它;是加強(qiáng)人的工作,而不是替代人。
無效的軟件項目開發(fā)技術(shù)和工具會糟糕的在計劃進(jìn)度,成本和質(zhì)量等方面帶來失敗,這將終導(dǎo)致整個項目的失敗。同時,沒有有效的工具來支持會使項目開發(fā)處于非持續(xù)性和不完備狀態(tài)。很多失敗的項目中的教訓(xùn)揭示了能夠充分地支持項目開發(fā)的工具簡直太少了。很多時候,軟件項目在沒有監(jiān)督和跟蹤時都會變得失控。因此,要很好地完成項目,必須要有好的項目管理工具,進(jìn)行有序的項目管理才能夠?qū)崿F(xiàn)。
精益軟件開發(fā)在這里提到兩個觀念,一是軟件開發(fā)應(yīng)用到的技術(shù)平臺,二是開發(fā)過程所使用的工具。軟件開發(fā)應(yīng)用到的具體技術(shù)平臺,由于每個項目的需求和資金預(yù)算不一樣,所使用軟件開發(fā)技術(shù)平臺也是各式各樣,不能一言而簡之。但精益思想重點提到的開發(fā)過程中工具的選擇和使用。工具不一定要追求新的,高科技,昂貴的工具。反而應(yīng)該不斷發(fā)揮團(tuán)隊的智慧,結(jié)合開發(fā)的具體情況,不斷探討實用的工具,減少浪費。
這里與大家分享一個有趣的例子,工具并不一定是新的高科技的東西,有時它可以是很直觀的方法。“大屋”是豐田普銳斯首席工程師想出來的一個工程合作方式。他把各個職能部門的工程師聚集在一個大房間里。在這里,他們把產(chǎn)品開發(fā)狀態(tài)的信息打印出來,包括種種數(shù)據(jù)、成本、質(zhì)量、進(jìn)度等關(guān)鍵問題,貼在墻上,每個人都可以方便地查看、討論。當(dāng)他們在一個房間開會和溝通的時候,他們更加融洽,交流得更好,更容易做出決定,從而縮短產(chǎn)品開發(fā)時間。“大屋”聽起來很簡單,甚至有點可笑,但是它支持了流程和人的工作,是正確的工具和技術(shù)。
所以精益思想強(qiáng)調(diào),首先正確設(shè)計你的流程,然后再去找合適的工具讓這個流程開動起來。不管是軟件開發(fā)用到工作工具,還是別的工具,只要能夠支持這個流程,是合適的工具。