大綱

5/26/2016

問對問題,如履平地。問錯問題,萬劫不復!




在不到十歲的年紀,有一次流感重症去看醫生。那時候還沒有健保,醫生通常還是會跟家長講一下治療方式可能的價格。當然,如果打一針可以好的比較快的話,多花個幾百塊可能也是值得的。但是!小時候的我很害怕打針。也許恐懼的神情被醫生發現了,他就好意地問『有比較大筒的針跟比較小筒的針,看你要打哪一種?』小時候的我,毫不猶豫的當然回答『小的針。』。結果,最後護士是拿出「兩隻」小的針筒,左右兩邊各打一針。

這個慘痛的經驗,後來讓我學習到,要完整考慮「問題」,至少要從三個方向思考:


1.問題可能不能代表真正的問題


無論是一般工作進行,還是特定專案,通常都有各式各樣的「問題」產生。有些可能是單純的疑問,例如「這個功能什麼時候可以完成?」。有些看起來比較複雜,例如「帳號如果被管理者停用,則正在登入使用中的session是否要立刻中斷?」

單純的問題,可能要考慮的更多。以「這個功能什麼時候可以完成?」為例。可以循用5 Whys 五個為什麼,來了解看似單純問題的真正本質,

例如:

「這功能完成的時間已經在系統有紀錄,為什麼要額外詢問?」--- 原詢問者回答:「只是想要知道有沒有意外」

「為什麼會想要知道有沒有意外?」 --- 原詢問者回答:「之前某高層詢問專案進度,我覺得這個功能因為比較複雜,不知道會不會有風險」

「為什麼高層會詢問專案進度?」 --- 原詢問者回答:「因為高層覺得專案預計完成時間太晚,想要用一些方式提早」

「為什麼會覺得預計完成時間太晚?想要哪種方式提早?」---原詢問者回答:「我也不知道,不要再問了!!」



2. 真正的問題很難找到


事實與真相就像船頭和船尾,首先會看到船頭,然後根據整個情況有多大多複雜,才會在最後看到船尾。

要找到真正的答案,必須要先找到真正的問題。

在許多軟體專案中,經常會有專案管理者以「人力不足」作為問題並試圖解決。但是,這個問題在絕大部份的軟體專案中,根本不真正的問題。

真正的問題也許是:

(a) 許多專案成員另有其他任務,導致投入專案的時間太少

(b) 專案需求不明朗,時常增刪變更,導致時間浪費

(c) 「人才」不足,而非「人力」不足,像是:
       (C-1) 專案管理者沒有看透技術關鍵的能力
       (C-2) 專案成員訓練不夠
       (C-3) ...其他...

而每一個問題, 背後又隱藏其他的問題。絕大部份的專案中,問題看似很多,但最重要的可能只有幾個。

專案經理的重要任務在於:決定真正重要的問題(忽略不重要的問題),並且優先解決最重要的問題。


3. 真正的問題才能找到真正的答案


要找到真正的答案,必須要先找到真正的問題。

一旦找到真正的問題,等於已經產生一半的答案。不過,另一半的答案可能也不見得很簡單。

假設認為真正的問題是「專案需求不明朗,時常增刪變更」,答案的選擇可能有:

(a) 採取Scrum開發模式,確保每個Sprint的需求不會再改變,讓真正的專案擁有者能參與每階段的決定

(b) 暫停所有開發活動,在沒有完成細部設計與需求規格書之前,先不開始開發

(c) 再花時間去找到為什麼專案需求不明朗的背後原因,






最終,每一個成員,需要為自己找到最適切的真正答案。
隨波逐流,最終只能忍受左右兩邊各一針的結果。





沒有留言:

張貼留言