任務編組的三權分立

  • 2174
  • 0

任務編組的三權分立

上個Blog提到任務編組是標準的三權分立。它的成員是:

  • 開發工程師(Developer)
  • 測試工程師(Tester)
  • 專案經理(Program Manager),或譯"專案管理師"

他們是開發部門的"核心技術人員"(有別於非核心技術人員如:Technical Writer, Localization Engineer等)。三權分立的比喻在此其實有更深一層的意義。民主政治制度是以法治國。三權(立法、司法、行政)代表三個政府機構扮演不同的角色:立法部門制定法律,行政部門執行法律,司法部門維護法律。同樣地軟體開發有類似的分工:

  • 專案經理制定產品的規範
  • 開發工程師跟據規範開發、實現產品
  • 測試工程師確保產品符合規範

這三權的地位平等。很多人認為專案經理是其他兩個專業的上司(也許是因為它有"經理"兩字在頭銜上)。其實不然,他們的地位是平等的;他們只是做不同的工作而已。

更重要的是這三權必須相互制衡。它們必須以一切為公、互信的態度,相互質疑和挑戰。如果這三方面太過"水乳交融",產品一定做不好:不是做出來產品不是客戶要的,就是品質不好。

同時這三權的權力必須均衡。如果有一方太強勢或太弱勢,這個均勢打破了,產品也一樣做不好。最常見的狀況是資深的開發工程師太過強勢,一意孤行,想做什麼就做什麼,導致產品走錯方向,等到發現的時候往往太晚了。(這不是獨裁政治常有的問題嗎?)Alan Cooper(所謂的"Visual Basic之父")在他2004年的名著"瘋子在管理精神病院"(“The Inmates Are Running the Asylum”)裡說程式設計師不是"常人"(Homo Sapien),他們是所謂的"邏輯人"(Homo Logicus)。常人渇望成功,但是邏輯人渇望知道事情的內部運作方式。因此他們設計出來的東西一般人不會使用。我們需要專案經理來扮演常人的角色,從他們的角度來思考,設計出他們可以接受的東西。

常有人質疑測試工程師的必要性:難道開發工程師不能兼做測試嗎?當然可以,不過開發工程師做的是單元測試。要他們兼做系統測試及驗收,就會有類似"球員兼裁判"的利益衝突了。一個產品的品質要好,非得有成熟而且專業的測試工程師不可。