我在企業(yè)IT這個行業(yè)里已經浸泡了很多年了,從普通的程序員到IT高級經理快毛。我剛剛進入這個行業(yè)的時候,其實做一個程序員還算一個挺光榮的職業(yè)唠帝。那個時候的IT項目管理其實還處在傳統的軟件項目管理方法論上到現代的敏捷軟件開發(fā)的轉變過程中玄柏。
早期的軟件項目其實非常容易失敗。當年在軟件工程領域有一本非常著名的書《人月神話》粪摘。這本書的作者是Brooks博士,圖靈獎獲得者徘意,北卡羅萊納大學計算機科學系創(chuàng)始人,IBM OS/360系統的項目經理椎咧。他是最早一批開始研究軟件工程的組織和管理的專家,并且進行了不同方向和深度的探索,給出了不少有價值的結論劳澄。我們可以看出在Brooks的那個時代蜈七,軟件開發(fā)的工具和方法還是非常有限的,哪怕是簡單的源代碼管理工具可能都不是每個團隊都在采用飒硅。軟件開發(fā)很多時候還是靠天才程序員的超人能力來完成某些功能的開發(fā),哪怕最簡單的合作和溝通其實都不是我們現在這樣直接和有效三娩,因為很多軟件開發(fā)的名詞那時候都還沒有發(fā)明呢。那時候的軟件項目管理經驗直接來源于軍工雀监,建筑和科研工程的項目管理經驗,傳統的瀑布似的項目管理会前,其實就是來源于建筑和科研項目的管理模式。首先設定一個目標和需求瓦宜,然后設計好軟件的各個功能要求,緊接著拆分成不同的工作項反璃,給每個工作分配時間和人員,然后根據這個估計淮蜈,開始開發(fā)。這本書里面提出了一些方法梧田,基于當時的理念,比如外科手術模式的開發(fā)團隊柿扣,采用面向對象技術肖方,把軟件劃分不同的模塊。同時作者也發(fā)現了了采用面向對象語言比如C++析桥,COBOL的復雜性而導致的學習成本的增加。還有對開發(fā)效率和軟件質量之間的矛盾的分析泡仗。程序員往往對軟件開發(fā)的進度和復雜度過于樂觀,而造成成本和時間往往大大超出預算的問題娩怎。作者在當時的環(huán)境下確實做了很多的探索,是非常有遠見的截亦,最后他對軟件工程的困難非常清楚,對其未來的發(fā)展抱有很大期望崩瓤。
軟件工程的焦油坑在將來很長一段時間內會繼續(xù)地使人們舉步維艱,無法自拔境输。軟件系統可能是人類創(chuàng)造中最錯綜復雜的事物,只能期待人們在力所能及的或者剛剛超越力所能及的范圍內進行探索和嘗試嗅剖。這個復雜的行業(yè)需要:進行持續(xù)的發(fā)展;學習使用更大的要素來開發(fā)窗悯;新工具的最佳使用;經論證的管理方法的最佳應用蒋院;良好判斷的自由發(fā)揮莲绰;以及能夠使我們認識到自己不足和容易犯錯的——上帝所賜予的謙卑。
后來蛤签,大家開始進行軟件開發(fā)標準化的嘗試。如果我們可以把軟件開發(fā)和IT項目看成是一個工程問題震肮,那其實我們是可以從已經成熟的工業(yè)項目管理獲得靈感的,比如建筑戳晌,制造,化工行業(yè)的項目管理沦偎。我們可以通過制定一套標準體系來指導成功的項目實施咳蔚,于是CMMI標準騰空出世搔驼。這個標準由美國卡耐基梅隆大學軟件工程研究所經過長期的研究總結而推出。曾經很多軟件企業(yè)為了證明自己軟件項目管理能力的成熟度舌涨,使盡渾身的解數來通過這個標準。其分為五個等級囊嘉,分別是:
CMMI一級,執(zhí)行級哗伯。在執(zhí)行級水平上,軟件組織對項目的目標與要做的努力很清晰焊刹,項目的目標可以實現。但是由于任務的完成帶有很大的偶然性虐块,軟件組織無法保證在實施同類項目時仍然能夠完成任務。項目實施能否成功主要取決于實施人員霜旧。
CMMI二級,管理級挂据。在管理級水平上,所有第一級的要求都已經達到崎逃,另外,軟件組織在項目實施上能夠遵守既定的計劃與流程个绍,有資源準備,權責到人巴柿,對項目相關的實施人員進行了相應的培訓,對整個流程進行監(jiān)測與控制广恢,并聯合上級單位對項目與流程進行審查殃姓。二級水平的軟件組織對項目有一系列管理程序,避免了軟件組織完成任務的隨機性蜗侈,保證了軟件組織實施項目的成功率。
CMMl三級踏幻,明確級。在明確級水平上该面,所有第二級的要求都已經達到,另外隔缀,軟件組織能夠根據自身的特殊情況及自己的標準流程,將這套管理體系與流程予以制度化猾瘸。這樣,軟件組織不僅能夠在同類項目上成功牵触,也可以在其他項目上成功±克迹科學管理成為軟件組織的一種文化,成為軟件組織的財富钉汗。
CMMI四級,量化級特恬。在量化管理級水平上,所有第三級的要求都已經達到癌刽,另外,軟件組織的項目管理實現了數字化显拜。通過數字化技術來實現流程的穩(wěn)定性,實現管理的精度远荠,降低項目實施在質量上的波動失息。
CMMI五級档址,優(yōu)化級。在優(yōu)化級水平上守伸,所有第四級的要求都已經達到,另外尼摹,軟件組織能夠充分利用信息資料剂娄,對軟件組織在項目實施的過程中可能出現的次品予以預防。能夠主動地改善流程阅懦,運用新技術,實現流程的優(yōu)化耳胎。
相信很多軟件行業(yè)的同行都經歷過這種為了達到CMMI標準而強行套用各種CMMI要求的規(guī)范,流程和文檔的開發(fā)項目场晶。其實最后往往都流于形式。事實上這種標準最大的問題是忽視了軟件行業(yè)的生產不同于傳統的領域诗轻。核心生產力的提高很難通過流程的優(yōu)化來實現,高質量也沒法通過一些標準的執(zhí)行來達到扳炬。每一個軟件開發(fā)都會遇到不同的問題和困難,而產生產品的是人恨樟,而不是通過機器。當然CMM也I并不是一無是處劝术,這個標準的流程至少給出了一個軟件項目開發(fā)的參考標準模型,并且產生了很多軟件工程的術語衬吆,比如基線,配置逊抡,交付物等等...
1987年出版的《人件》,具有劃時代的意義冒嫡。這是主流軟件工程研究第一次直面軟件項目管理的真正核心問題--如何管理人拇勃,如何有效地發(fā)揮開發(fā)和測試團隊本身的能力孝凌,從而達到交付理想的軟件和IT系統。而且書中也注意到了不同團隊的開發(fā)人員之間巨大的生產力差距胎许,其實對于知識工作者的生產力差距罗售,很多人已經發(fā)現了。包括彼得德魯克的管理著作中也提到了如何管理和提高知識工作的效率問題寨躁。如何去提高工作效率,給員工提供寬敞和安靜的工作環(huán)境职恳,團隊的凝聚力其實非常重要。
其實作者指出了絕大部分IT項目最主要的問題放钦,其實是團隊協作的合作問題,是人的問題操禀。不同水平的程序員生產力差別非常之大。而提高生產力的重要手段是創(chuàng)造彈性和舒適的工作環(huán)境和團結向上的團隊文化斤寂。