2007年1月13日 星期六

是否該導入 CMMI?

上回的觀點中,筆者簡單說明了自己對於CMMI的認知,同時也為剛剛入門的朋友簡介了一下CMMI (能力成熟度模型) 的四大流程領域與能力成熟度觀點。

這回我們將觸及朋友們經常提出的第一個問題,是否該導入 CMMI?導入 CMMI 真的也那麼大的好處?換句話說就是投資報酬率的問題?

如果回答這問題的是CMMI輔導顧問,那麼多數顧問將引用許多的數據告訴你CMMI是多麼地好,能降低公司經營成本、改善公司體質…等等。真的可以單純地相信顧問們提出的數據?如果是降,為什麼通過 CMMI 三級認證的公司,做出來的XX系統還是會不斷遭受客戶質疑!系統的壓力耐受度是如此地脆弱嗎?

除了從顧問們提供給的數據看到佐證外,我必須誠實地回答各位,CMMI 的精神是好的,不論從品質、成本、專案與風險管理的角度去看,他都有存在的價值與效益;但CMMI 是否能產生實質效益卻是事在「人為」,參與者用怎樣的心態去面對,絕對影響整件事情的發展,沽名釣譽者可以通過認證,苦幹實幹者也可以通過認證,但時間絕對會證明一切,剛剛說的XX售票系統不就是最佳的反例?

看到這現象,筆者體會到「哀矜勿喜」的真正意涵,台灣的軟體產業真的如此不堪一擊?我們必須停下腳步,不要一味地說是大環境不好或者CMMI制度不適用於台灣的環境,因此抹殺前人的功勞!取而代之的應該是徹底檢討,到底問題出在什麼地方?我們在這個過程中學習到什麼?
反省、檢討、改善並獲得所謂的Lessons Learned,不就是 CMMI 當中決策分析與解決方案(DAR: Decision Analysis and Resolution)反饋回流程管理領域 (Processes Management-組織流程焦點、組織流程定義、組織層級教育訓練…等)過程嗎?

懂得檢討才能累積經驗(Lessons Learned)並達到持續改善的真諦

因此筆者認為各位應該關注的議題不是導入 CMMI 與否,或者一味地抗拒 CMMI,真正要提出的問題應該是:

1. 組織/公司目前碰到了怎樣的難題?
是控制不易、溝通不良、品質不佳、無法累積實力…什麼問題最嚴重?什麼問題做最急迫?輕重緩急?

2. 公司的現況、遠景?
有無實際可行的計畫與支持團隊?打算腳踏實地、突破創新還是繼續沽名釣譽?

以上問題雖然嚴肅,但卻是真正值得深思的,有些朋友會告訴我,這些是公司老闆們應該顧慮的問題,不是我這種層級該管的,我了解不在其位不謀其政的想法,但是,山不轉路轉…,或許你可以轉寄一些資料給上司、同事,不論你是否考慮導入 CMMI,我都希望這篇文章能讓大家凝聚共識;大家逐步達成共識,就是進步~

各位朋友們,無論將來職場如何發展,自己也可以累積一套Lessons Learned,反省、學習、累積與成長是進步的動力,如果能進而分享將可得到更多回饋。

2007年1月7日 星期日

CMMI 觀念 & 流程領域

看到很多人在討論 CMMI , 我認為是喜憂參半的狀況, 喜的是越來越多人重視公司內部的能力成熟度培養, 但也擔心良好的制度會被曲解成只有大型專案適用或者制度無效...的論述.

我要說明的是

1. CMMI 本身並不是一套標準作業流程, RUP 才是流程定義, 然而 CMMI 主要是定義流程應該達成的目標 (Goals), 因此, 公司內部可以定義自己的一套流程, 也可以採用類似 RUP 的規範, 但重點是 流程是適合貴公司的, 而且流程可以達到某些 Goals. 這就是為什麼我會建議引進 CMMI 的公司能夠先掌握公司的組織的目標, 並定義出一套能夠滿足組織目標並能夠落實的流程. 不要為了 CMMI 而 CMMI

2. 小型專案也適用 CMMI, 但流程絕對不跟大型專案相同, 這就是 CMMI 裡頭談到的調適原則 (Tailoring Guide), 會說小型專案不適用的人, 大多數的情況是公司沒有一套所謂的調適原則, 我就見過三個人的專案也採用 CMMI 的規範, 文件不多, 但一樣可以滿足 CMMI 的 Goals , 舉例來說: 用 CVS 管控專案 -> 滿足 Configuration Management, 用 Use Case -> Analysis Model -> Design Model -> Code -> 滿足 Requirement Management, 用 MS-Project 追蹤與報告專案進度 -> 滿足 PP, PMC ... 其實制度是看人如何用它, 掌握制度的精隨不要以偏概全是比較重要的. ISO 也是好的規範, 只是被濫用了

對筆者來說,CMMI 就像是一本字典或者說是SI產業的百科全書,這書裡充滿了可活用的資訊,分別從工程流程、後勤支援、專案管理、流程管理等四大流程領域闡述其內涵,四大流程領域涵蓋的內容如下:

1. 工程流程領域 (Engineering Processes),包括了需求管理、需求發展、技術解決方案、產品整合、驗證(Verification)、確認(Validation) 等;對筆者而言工程流程領域就是系統整合或軟體發展公司的價值鏈,如同一間工廠從接單、生產、品管、出貨、收款的過程,算得上是公司的命脈所繫,因此價值鏈必須受到重視,有了良好且穩定的生產作業後,產品品質才會穩定、信譽才能廣佈,之後才能厚實客戶群,從而發展精進,進而提升公司的競爭門檻(這才是能力成熟度的基本意義)。

2. 後勤支援流程 (Supporting Processes),包括了度量分析、流程與產品品質保證、建構管理、決策分析與解決方案、跨界整合性組織環境、成因分析與解決方案等;後勤支援體系就像作戰一樣,是前線作戰的堅實後盾,這當中包括了情報收集、知識累積與經驗傳承,這些都是組織知識形成的過程。也是中高階領導人應該關注的重點之ㄧ。

3. 專案管理流程 (Project Management Processes),包括了專案規劃、專案監控、供應商協議管理、風險管理、整合性專案管理、整合性供應商管理、整合性專案團隊、量化專案管理等;整體來看,專案管理流程領域是專案履約過程的整體規劃與管制作業,也是客戶、協力廠商、公司主管及專案團隊的協同合作基礎,履約過程中發生的各種狀況、意見與衝突,都需要妥善地溝通、協調與處置,除了充分履約與達成使命之外,更重要的是團隊成長與經驗分享,這才是專案管理應該滿足的重點。

4. 流程管理領域 (Processes Management),包括了組織流程焦點、組織流程定義、組織層級教育訓練、組織流程效能、組織創新與落實等;一旦工程流程、後勤支援、專案管理…等落實後,公司便會累積出一些重要的資產,這些資產包括了作業方法、文件樣板、經驗分享與決策過程…,如果這些資產分散各地甚至因人而流失,對公司或者相關同仁而言都是一大損失,因此,我們需要管理這些組織資產,並在這些基礎上不斷改善與創新。