「三位一體」的三權分立:軟體開發見聞錄#1/葉光釗
2016年,筆者正式從微軟退役;在過去20年的生涯之中,有17年在做研發工作。這多年的工程經驗累積下來,總有一些心得與觀察;那麼,就藉由這個平台來分享一下吧,究竟在台灣談這方面事情的人似乎並不多。
先從微軟的「三位一體」(Triad)研發模式談起 。雖然這個模式現在已經改變了,不過在微軟的全盛時期,這可是個主流。
所謂三位一體,指的是:
「規劃師」(Program Manager);
「天才程式師」(SDE);
「受測中的開發者」(SDET;不是tester,是「developer in test」);這三類人互不隸屬,全靠「恐怖平衡」來完成產品。
所以,微軟產品的研發並不像大家想像的那樣井井有條,其實是吵吵鬧鬧的,而且「愛恨糾結」的情節超多。我自己常常將它比喻成「三權分立」,真的非常貼切。不知道當初設計的這個體系的人,是否真的參考了政治上的架構?
雖然紛紛擾擾,但神奇的是,產品還是能完成、而且品質有一定水準(我知道,講這句話有人會皺眉頭);但這種作法的明顯缺點,是開發時間會拖很久(我最長的經驗是三年半),已經不符合現代市場的需求了。
不過在我看來,這還是一個非常經典的模式,其中的眉角待我慢慢道來。
三位一體
前面提到的「三權分立」,指的是美國的「行政」、「司法」與「立法」。我的觀察是:
行政 = 程式設計師(coder);
司法 = 測試師(tester);
立法 = 專案經理(PM)。
想想還蠻貼切的:PM開規格、coder寫程式,tester測程式。
微軟的教科書都會說,這三種專業(Disciplines)要相互合作、相互尊重,共同創造光明未來。不過實際上的場景多半是:
Coder:你找碴嗎?居然上報我的程式臭蟲?
Tester:你寫的功能明明沒按PM的規格走……。
Coder:PM的規格又沒寫清楚,依據規格的精神,這是「by design」(設計端的變通)。
Tester:By你的bad design。PM,出來講清楚!
PM:大家有話好說,這個問題就先擱置吧,再慢慢商量……。
這類的(虛擬)戲碼天天在上演。不過,像這樣的恐怖平衡,確實可以保證沒人能一手遮天、掩蓋品質問題。
另外還有一招,就是所有的程式臭蟲和問題討論內容,全部都要紀錄在一個資料庫裡;而且內容只能加、不能刪,透明度100%。
話說PM
透明加平衡,是微軟控管開發的訣竅。
專案經理(PM/Program Manager,不是Project Manager喔),我在微軟幹了快一輩子;所以基於明顯自私的理由,這「三權分立」我們就先由PM談起。
在微軟,PM是個很專門的名詞,尤其在產品組(Product Group;我們都不太稱自己是研發RD)。PM所做的事,比專案管理還要多很多;例如:
開規格;
管專案時程與里程碑;
在碰到程式臭蟲時,決定除了修正以外的其他方案:擱置(postponed)、不修(won’t fix)、靠設計變通(by design);
管開會(有位副總曾在我面前苦笑,說他的全職工作是「專業會議召集人」);
所有coder與tester不想做的事情
微軟PM的由來,在《Microsoft Secrets: How the World’s Most Powerful Software Company Creates Technology, Shapes Markets and Manages People(1998)》這本書中講得很清楚;記得有中譯本,有興趣可以去找找看。
編按:本書中文版《微軟祕笈:微軟七大理想工作模式完全導讀》由時報出版,已經絕版。
話說回來,你如果去問10個PM他們的JD(工作內容定義)是什麼,應該會有10種以上的答案。
我印象最深的微軟PM特色,是這幾點:
人少:之前產品組的人力資源規劃有個速算比例「PM:SDE:SDET = 1:2:2」;所以PM是少數族群,而聽說現在的比例更低了。
PM的背景五花八門:我認識至少3個音樂家(出過專輯的喔)、一個海洋學家、一個雕刻家,還有兩個高層是專業(雖然不是職業)賽車手、甚至還有美國政治世家的背景。
其實在微軟的快樂時光,多半是跟這些奇怪背景的人們,聊一些想都想不到的知識領域,才知道真是天外有天。
最後提一下我們所公認的PM大神:Steven Sinofsky。他對微軟工程文化的影響之大,是外界很難想像的,有興趣的人可以先看一下,之後會聊到有關他的各種神蹟。
下一次先不談人,換個視角談一下外商特有的文化:「縮寫(Acronym)滿天飛」。