2010年4月20日 星期二

Y20 錦囊之計 vs 設計程度

話說古代有位軍師總會在出征前拿個錦囊給統率的將軍,要他在不知如何是好的狀況下照內容做,就能逢凶化吉或是出奇制勝。

在此處暫且將時空切割為二:甲時空的軍師通常在出征前一刻根據最新軍情花一點點時間寫錦囊,將領大多時候依錦囊行事倒也正確,但是總有一兩成的機率無法應付現況,需要派人再回去稟報軍情後重新跟軍師拿一個錦囊;乙時空的軍師都會在出征前一天思考整個晚上後,在錦囊中寫下各種可能發生的情況並逐一列舉不同的應對方法,據說不符機宜的機率降低到半成以下。

在這裡說的將軍是在客戶戰場中衝鋒的專案人員,軍師則是指公司裡製作共用元件(錦囊)的支援人員。如果你是軍師,會想用多少精力寫出什麼樣的錦囊?如果你是將軍,又會希望拿到手的是什麼樣的錦囊呢?

身邊絕大多數的人都屬於將軍型,能夠快速使用資源做出客戶想要的結果,遇到不符需求的變化時也能快速地應變;只有很少數的人在面對需求時會如同軍師般思考各種可能情況再作整理設計。將軍型看軍師型會感覺在設計同樣的功能時花較多的時間且產出額外用不到的方法,軍師型看將軍型的產出卻又感覺思慮不夠周延又難以捕捉改變後的影響。更頭痛的是,有些將軍在拿到後方送來的木牛流馬時會嫌錦囊寫的文件看不懂,而且擔心萬一故障時前線不能修理將影響軍情,乾脆重新打造一套很類似卻只有自己懂的東西才會有安全感。

將軍型與軍師型的角色,在雙方的定位清楚並且相互信任的前提下,是可以發揮很大功效的。公司製作共用元件時依照標準開發流程控制品質,提供面對不同狀況下的對應參數;專案人員信任共用元件與正確性與方便性,快速地依客戶需要組裝出該有的功能。這樣不就是很有效率的開發團隊嗎?

註:某個功能在遇到例外狀況,而且從模組內修正那個例外非常麻煩時,將軍型通常會在模組外部添加某些東西,並在模組內部最前端加上判斷添加物是否存在的條件另外處理。軍師型則會堅持分析模組內的處理流程,直到找出可以明確判斷出例外狀況且不影響其他狀況的正解為止;如果找不到這樣的解答,會認為那個模組是個失敗之作。

2 則留言:

  1. 你忘了考慮到一件事,就是時間。現實上,時程的壓力會讓你無法在錦囊中寫下各種可能發生的情況,甚至只有寫下1~2種,而且有時需求一直在變。

    回覆刪除
  2. 正由於工作來時分配的時間時常不夠, 所以希望有人"預先"準備好一些錦囊, 讓我們拿到後增進很多效率.

    有種錦囊是其他單位提供的. 像是HttpConnection慣於直接拿Apache的來用, 而不會自己重新打造一個.

    另種錦囊是公司根據做過的專案經驗, 在不忙的時候加以分析整理歸納而做出供未來直接使用且易調整的模組.

    一個模組的涵蓋度與彈性的優劣, 除了負責者累積經驗的多寡外, 同時要看能否從已知的作法中推敲出各種層次的變化可能.

    針對一個目標, 勢必得經過許多次的演練與調整, 才能夠縮短思考時間同時增加涵蓋的變化. 但是我相信這條路!

    回覆刪除