怎樣看待微軟的 Program Manager 這個角色(轉載)

記得自己在顧問的經歷中,曾和許多開發團隊交流過微軟的 MSF,許多人都曾經疑問過 MSF 組隊模型中的Program Manager,因爲從他們的公司,他們的團隊無法找到這樣的角色來對應,至於開發 Team、測試團隊、設計團隊、文檔團隊、配置團隊、用戶教育團隊、本地化團隊還能想象,但唯獨 Program Manager 找不到對應的。因爲一個 Program Manager 需要項目管理的技巧,Program Manager 也需要負責功能需求、Program Manager 還要寫功能規範說明書、Program Manager 還要負責設計原型。Program Manager 要有三大硬功夫:Technical Proficiency,Project Management  和 Design Sensibility,而且還要有內功,擁有非凡的 Communication 能力和 Leadership。


然後問題就來了,很快就人問,什麼是 Leadership? 這個問題夠開一門二週的課了。然後第二著名的問題來了,Project Manager  和 Program Manager 有什麼不同? 開發組的 Team Leader 和 Program Manager 有什麼不同?


真的這樣類似的問題非常的多,找到對應關係也許是你此時認爲在團隊或公司實施 MSF 的一個重要前提。但我相信你需要一些場景和 Context 來看這個問題。


Project Manager ——這是一個項目的最高決定人,在許多公司一個項目經理是一個項目的資源所有人。他需要完成這個項目,並進行項目管理活動。但需要項目經理(甚至大部分項目經理)不要求他會程序設計和精通技術,甚至進行編程。他的目標是完成項目,讓用戶驗收,拿到驗收單。可能他需要組織需求分析、設計、開發、測試、安裝、部署、維護等等等,也可以產品以及開發出來他只需要完成客戶驗收的部分。總之,這是一個普通和廣泛意義上的項目管理領域和範疇。


Program Manager ——這是一個產品開發過程中的角色,而不全是項目範疇的概念,它可以只存在產生開發的生命週期中。微軟的所有產品是設計、開發、測試然後發佈、再設計、開發、測試然後下一個發佈。你會發現似乎沒有用戶驗收的問題。


這裏有兩個 聯想,第一種人很快發現,微軟 MSF 走的產品研發的路線,和我們公司或團隊的項目運作方式並不同。所以我們需要重新考察 Program Manager 這個角色,但是我們如何發揮 MSF 中 Program Manager 這個角色呢? --捨棄不要?還是繼續生搬硬套


第二種人,會聯想到這樣的問題,既然沒有用戶驗收環節,那麼微軟的產品如何保證用戶都接受,都會去購買,其實這也是一個驗收的過程,暫且稱爲虛擬驗收。一個項目的目的是爲了讓用戶最後驗收。那麼微軟在產品設計、開發、測試的環節如何保證它能夠被"虛擬的驗收"?靠好的設計、編碼規範、風險評估、足夠的測試?因爲你總需要有足夠的措施保障你的產品能成功,能被虛擬驗收。


先看看,JOEL 說軟件一書的55頁怎麼說的:

長期擔任微軟總設計師的Charles Simonyi 提出主程序員(Master Programmers) 的概念。其主要思想是,雖然由一個主要的程序員負責所有的代碼編寫,但是他或者她要緊緊的依靠高級程序員而且將他們視爲“代碼僕從”。與考慮調試每個函數的作法不同,主程序員應主要關注每個函數的原型而創建出可見的輪廓,然後將它扔給一位高級的程序員去實現。(當然,Simonyi是主程序中的主程序員。)由於主程序員這個術語顯得太老氣橫秋了一點,因爲微軟用Program Manager 一詞來描述此類概念……一個名叫Jabe Blumenthal的聰明人從根本上重新確立了程序經理的地位,這樣一來,Program Manager就掌管着產品設計與規格說明書。從那以後,微軟的Program Manager就負責收集需求,弄清代碼的意圖在於做什麼,以及編寫規格說明書。在通常的情況下,每個Program Manager配備大約5名的程序員,這些程序員負責用代碼去實現程序經理已經以規格說明書形式確定的功能。Program Manager還要去協調marketing,文檔創建、測試、其他內部的雜務以及所有那些不應該讓程序員花時間的瑣碎事務。最後,微軟的Program Manager需要讓人覺得他心裏裝有整個“公司的宏圖”,而程序員則可以無所顧忌地一門心思讓自己的那塊代碼確實顯得合理而高效。

JOEL 娓娓道來了 Program Manager 的來歷,這不是全部,至少不是我看待的全部。但 JOEL 說出一個很重要的特性 —— Master Programmers

Program Manager != Technical Proficiency + Project Management + Design Sensibility + Communication + Leadership。

這些都是一個Program Manager 要做的工作或素質。Program Manager 應該等於一個詞 Program Manager = Ownership

一個Program Manager 代表着項目/產品中一個特性的 Ownership, 一個工作的 Ownership,一個風險的Ownership,任何需要 Ownership 的地方,這就是 JOEL 下面說的

Program Manager 的價值是無法衡量的。如果你曾經發牢騷說,程序員應該如何關注技術上的質量而不是可銷售性,那麼就意味着需要一個Program Manager。如果你曾經發牢騷說,能夠寫出優秀代碼的人從來不會關心文檔的優秀和語法,那麼就意味着需要一個Program Manager。如果你曾經發牢騷說,產品似乎在毫無方向地隨機飄蕩,那麼預示着需要給一個Program Manager。

 

你可以想象這樣的場景,假如你是一個揹負價值着10000000000000萬合同金額的產品/項目經理,甚至你們公司的老總,他最關心的問題是,我們的產品今天能發佈了嗎? 客戶需要的功能都開發完畢了嗎?
假如有100個功能或任務,老闆最希望看到的是像點將臺一樣,下面站立100個人,依次說,報告老闆,01功能完畢,報告老闆,02功能完畢,報告老闆,03功能完畢……報告老闆,99功能完畢,報告老闆,100功能完畢。

這100個人每個都是一個Program Manager,你說原來 Program Manager 就是幹這個事情的 [lol]

我忘了考證具體的數字,這個你可以推測出來,比如 Office 開發團隊有2000人,一個開發人員至少有一個或兩個測試人員,就按1:1,那麼有1000個開發人員1000個測試人員,那麼按1:5(一個 Program Manager 下面有5個隨從人員),那麼至少就應該有200+200=400個 Program Manager ,然後你可以根據模塊(比如 Word、Excel、Outlook 等等)、產品特性的大小,任務的大小,再對這個進行一些調整,比如產品特性大的一個Program Manager 下面還有許多小的 Program Manager,或有的 Program Manager 下面有5個人,有的有10個人。但無論如何應該有超過10%的 Program Manager (我忘了具體的數字,朱敏博士在一次培訓中曾經介紹過這個數字)


又比如說典故中的諸葛亮火燒赤壁時說的萬事具備,只欠東風。在這裏就意味着有10000個 Program Manager,再加上一個負責搞定東風的 Program Manager。不然這事情沒法成功。
當你理解了 Ownership 的含義,你就會更容易的看懂 JOEL 後面說的,找什麼樣的人做 Program Manager,更重要的是如何在你的公司、項目或開發團隊應用 MSF 模型。MSF 3.0 4.0 甚至以後不叫 MSF 了,但Ownership 的原則不會變的,也許你們公司或開發團隊沒有 Program Manager 這個頭銜,但應該有肩負Ownership 的人。比如: A 事情 Ownership 是你,那就意味着:A 事情這就是你的工作,你的工作就是把 A 事情做到一種可以刻量的程度;任何時候,A 事情都由你負責和掌握,有什麼問題都會來找你;同樣爲完成 A 事情,只有你能做出決定和選擇,而且也只有你爲A事情的結果負責。你最大的使命就是確保讓A事情成功或完成。如果 A 事情失敗了,那麼你也就完了。


許多公司不是沒有 Program Manager,而是沒有 Ownership 的概念。一件事情可以讓 A 做,也可以讓 B做,A 做是一個結果,B 做是另外一個結果,而且兩個結果都接受都可以,甚至3個 N 個結果都行。一件事情A 主管說這麼做,B 主管說要那麼做,怎麼做? 一件事情有許多的聲音或 Ownership 不清楚。 這會浪費多少的人力、物力、時間和金錢。


所有對於所有的項目經理、開發團隊的主管來說,無論一個開發任務有多大,多麼困難。正如剛剛所說的如火燒赤壁一樣,那麼這意味着你要確保這10001件事情發生,確保每件都有一個人(Master) 來負責,而且結果只有一個。當10001個結果發生,火燒赤壁才能成功。


回去看看三國演義,你看看各位戰將都負責了什麼,周瑜成功扮演了一個 Program Manager,他必須保證曹操相信他毆打黃蓋的苦肉計。而諸葛亮在火燒赤壁的項目中成功扮演了一個 Project Manager ,同時也是擔任了一個 Program Manager,因爲他必須保證借到東風。


你們公司不必像微軟一樣一定要有 Program Manager 這個角色,但一定要有明確的 Ownership 意識和機制。諸葛亮這麼做了,確保了火燒赤壁,微軟這麼做了,確保了他的產品能及時發佈,你的項目/產品要成功,我想你至少考慮要這麼做。

這麼說,你或許領會少許微軟 Program Manager 這個角色的意義了吧。最後,真的,不要拘泥於 MSF ,不要拘泥於 Project Manager  和 Program Manager  的差別。不要拘泥於 Program Manager 這個頭銜或定義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章