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