談工程管理與功能規劃:軟體開發見聞錄#3/葉光釗
所有的軟體開發專案,都會有這麼一個天字第一號大挑戰:控制時程。在M社的研發手法,就是透過工程管理決定什麼要做、什麼不做,來控制開發的總時間,並利用功能規劃的手法決定開發內容。
工程如何管理?
「工程管理」聽起來是個艱難的管理詞彙,事實上也是。
所有的軟體開發專案,都會有這麼一個天字第一號大挑戰:控制時程。簡言之,在M社的研發手法,就是透過工程管理決定什麼要做、什麼不做,來控制開發的總時間。
「工程管理」(Engineering Management,簡稱EM)講是很容易,但是當實際執行起來,是處處違反人性的。
話說當年筆者的職責剛從「工程師」升等成「帶工程師」(engineering engagement)的時候,心裡時很惶恐的;老實說,叫一個非科班出身的黑手擔起這個大任,壓力之大非同小可。
還好M社處處有前輩高人,所以最直截了當的作法,就是到處虛心討教各位前輩的心法,看看是不是能融會貫通成自己的一套。
問了一圈下來,帶領團隊的方法意見五花八門,各種奇奇怪怪的理論都有,令人眼花撩亂;倒是對於管理專案的手法,反而出人意外的相當一致:
你一定要學會堅決、心狠手辣的砍,絕不能心軟。
一位資深產品經理這樣跟我說。
什麼該砍?
砍功能(cut features)。為什麼這違反人性?我想全天下產品經理(PM)、軟體開發工程師(SDE)、軟體測試開發工程師(SDET)的基本心態都一樣:軟體要功能多才會有價值、有價值客戶才會用、客戶會用才會買,有人買才會賺錢。
但是,功能的多寡與開發時間是互斥的,功能太多就不太可能準時;更糟的是,當時程延滯時,人的直覺反應是投入更多資源想要加速,結果適得其反,增加更多的工作量、時間拖更久,變成了負面循環。
這時候就有人要出來扮這個黑臉:誰薪水高,誰就要出來做這件討人厭的事(原來經理人被怨恨是其來有自的)。
簡單來說,EM就是將計畫的功能或工作量減少「到合乎既定時程」;不管預計發展的功能有多吸引人,定期推出(on-time release)的價值高於一切。會延遲時程的,只有產品召回等級(re-call class)、或是資訊安全等非修不可的問題。
其實M社也不是一開始就有這種文化,而是經歷過好幾次的軟體開發危機(至於是哪些產品,大家心裡可以對號入座),才磨出這種手法。
其中最重要的推手,就是之前提到過的Steven Sinofsky;他有一句名言,就是:
Shipping is a feature.
(準時推出也是產品特性之一)
大家可以去網路上搜尋一下,他把五個重要的產品經理觀念說得非常清楚(編按:編輯幫您搜好了)。
當然,M社「砍功能」的作法是有一定程序的,並不是大刀亂砍。這裡還牽涉到另一個重要的觀念:設定優先順序(prioritization)。以下就先給大家一個基本觀念的範例。
以情境為基礎的功能規劃
M社在早期的功能規畫方式,也是遵循傳統的 「由上至下」(cascade)式的做法:先做好大區塊的功能大綱,再進行下一階的細部設計。
這種規畫的主軸,是以功能(例如選單的階層項目)作為劃分的界線。這種作法在早期功能不多的時候還能順暢運作,但到了後期功能數目多得嚇人,就有兩個問題會被凸顯出來:
無法掌握使用者完成「一項完整工作」(例如在郵件中打開檔案,列印完畢之後再關掉程式)的流程,其中所可能產生的程式臭蟲會超乎預期;
操作的體驗有可能因為整合度不夠好,所以使用起來會很不流暢,甚至產生很多客訴。
到了Office 2007和Office 2010的時代,一種稱為「以情境為基礎來做功能規劃」(scenario-based planning)的方法被提了出來,就是希望能解決前面所談的兩個問題。
其實,這個做法並不是要完全推翻傳統方式,而是在進行細部規劃之前,每個大產品組的總產品經理(GPM)要先同意幾組重要的使用情境(user scenario)。
至於這些情境是什麼呢?其中有三個重要元素。為了讓大家能很快瞭解,這裡舉個假想範例:
主人翁的背景(persona):25–30歲的白領,女性,開車上班。
操作需求與使用環境(context):在手機中尋找郵件中特定的Word檔,開啟並瀏覽內容。
吸引主人翁使用功能的關鍵點(attraction point):使用語音就能找到檔案並自動開啟,無需使用手機虛擬鍵盤。
有了以上的共同情境,各個功能的負責人就會想辦法,讓自己的功能在這個框架下最佳化;而這三個要素中最難設計的,就是「吸引使用的關鍵點」。
它不能過度幻想(手一揮就能變出小鳥之類的),必須要在工程師能做出來的範圍內;也不能描述得過份仔細,限制了功能負責人的解題創作能力。
通常在開工之前,GPM都要反覆討論這些場景、並使用腦力激盪的工具;更重要的是,最後大家要對場景的優先順序要有共識,產品開發才會有穩定的基礎。
之後筆者會進一步介紹「場景」方法的進一步延伸:「點對點的使用體驗」。