軟件項目管理之軟件研發之道
軟件是一種知識產權,軟件生產主要是一種智力活動。磁盤或光盤上的數據體現了軟件產品開發團隊的集體智慧。磁盤上體現的智力水平越高,創造的知識產權就越 多,產品的價值也就越高。有了價值更高的產品,就可以賺更多的錢,獲得更多客戶,也可以讓智力活動影響到更廣泛的人群,并為開發者和他人帶來更多利益。
如果你特別關注將人的智慧轉移為磁盤上的數據,把這作為軟件開發團隊的中心活動,那么恭喜你,你有了一個正確的觀點,可以據此來監控和領導軟件開發。大 多數軟件開發經理或***并沒有站在全局角度來看待所承擔的任務,他們認為自己的工作要么是設計,要么是編碼,要么是測試,要么是寫文檔,要么是營銷軟件,要么是以某種方式“管理”軟件開發過程。
這種誤解的常見結果是延誤。在軟件開發過程中抱有無論什么錯誤思想,結果幾乎總是造成延誤。通常延誤的時間相當長,遠遠超過最初的估計日期。是的,這種錯誤估計往往演變為所謂霧件(vaporware)的滑稽笑柄,如果不是付出了沉重的代價——希望的破滅、金錢和人力的浪費,社會生產力下降等,霧件這個詞可以說是很幽默的。
如果想要按時交付優秀軟件,每個人的大腦都必須融入到項目中。
軟件開發管理的真正任務是調動盡可能多的智力,將它們投入到產品創建的活動中。智力的形式可以是抽象的人員素質,例如創造力、聰明才智、理性、效率和雅 致。智力還具有其他一些非物質的特性,例如適時上市以及滿足客戶需求。關鍵是,為了建立知識產權,必須有創造者的智力參與,而這種參與在任何軟件開發工作 中都是最難完全落實的事情。雖然按時交付軟件并不簡單,但無論對于個人還是集體來說,這都是一項直截了當的要求。要創造優秀軟件則需要富有集體智慧的團 隊,而且只有他們才能辦得到。
假設企業有足夠的財力作為后盾,那么剩下的真正至關重要的因素就是團隊是否凝聚了集體智慧。本書中的所有概念和經驗法則對于善于思考的人們來說都是顯而 易見的。實際上,這些都是常識。它們大體上只講了三項當務之急的事情:讓人們開始思考、人們應該思考些什么,以及如何讓人們更有效地思考。如果讀者曾經在 富有集體智慧的軟件開發團隊中工作過,恐怕自己也能總結出不少這樣的原則。
那么,問題何在?如果按時交付優秀的軟件只是取決于一些常識,又為何如此罕見呢?
考慮一下人類工作的主流模式。在大多數企業中,人們主要把資源投入到兩個領域中,一個是智力活動,另一個是常規機械工作。我們可以把這兩個領域看做設計和生產,或者工程設計和施工。就目前來看,企業資源(人員和資金)的***部分通常被投入到機械工作中。汽車、建筑或高速路等工作固然包含智力內容,但工程設計上的投資在總投資中所占比例是微不足道的,盡管這部分投資具有至關重要的意義。
現在思考一下,你會如何組織一家主要從事機械工作的企業?機械工作***的價值源于效率,因此所有元素的組織都要從效率出發。裝配線是20世紀的主要工業流程,亨利·福特作為裝配線的“***”確立了他的歷史地位。裝配線在一端進料,在另一端產出有形產品,它的特點是千篇一律,而且單調乏味,但具有極高的效率。裝配線的進料和管理采用等級組織方式,企業中的每個人只承擔一個很小且狹窄的職責。
軟件開發的組織方式就完全不是這么回事了。軟件開發的目標產品是知識產權,而不是有形產品,因此機械工作部分所占比例很少。
運營一家生產套裝軟件的工廠當然并不簡單,但可能不比運營一家生產其他稍顯復雜的消費品(例如面向大眾市場的相機)的工廠更復雜。運營套裝軟件工廠的真正復雜性無疑來自“主版本”可用性的不確定性,主版本是指已完成的、等待復制的軟件。完成智力內容(即已完成的軟件)以后,事情的進展就相當順利了。
軟件生產的不確定性和復雜性嚴重依賴于智力活動。企業的重心要從機械工作領域轉移到智力活動劇增的陌生而坎坷的世界,傳統的組織結構和習慣無力應對這種轉變。
復雜縝密的思想是智力產品的原材料,但大部分商業企業實際上并不鼓勵思考。我們必須對企業進行一些重塑,或者用現代商業說法是“改造”它。我們必須找出人們為什么不思考的所有原因,并消除它們,不是開除人,而是清除那些原因。
本書將嘗試展現成功軟件企業的組織形式,這種形式無法被整齊地拆分為不同的職能單元。進度具有不確定性,產品經理必須掌握管理這種不確定性的種種要點, 同樣重要的是,開發人員也必須完全理解這些不確定性的重要性。而且,除非每個團隊成員都有一個整體遠景,否則其貢獻必然會局限于僅僅執行經理或“宏程序員”為其分派的任務。這對人員潛力是一種浪費。如果想要按時交付優秀的軟件,那么每個人的大腦都必須融入到項目中。讓每個人的大腦融入項目并一直保持專注,這是經理的主要職責,也是貫穿本書的主題。
原文鏈接:http://www.cnblogs.com/turingbooks/archive/2011/07/08/2101063.html
【編輯推薦】