「三位一體」的三權分立:軟體開發見聞錄#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)滿天飛」。