問題解決
古時候,中國有一則寓言是說:有四個人走到一面高牆前面,高牆的通門用鐵鍊與鎖鎖住,其中三人試圖用盡各種方法要打開門鎖,用石頭打、火燒、以及用木棒挖鎖等方法,但最後仍然無功,這時候,忽然看到那第四人從森林走出,手握一把長竹竿,走到牆面前以撐竿跳的方式跳過那一面牆。
第四人並沒解決門鎖的問題,而是避開重新定義問題,創造新的而可解決的問題,因此基本上問題不在門鎖,而目的是人要到達牆的另一面。
這則故事顯示,"what"與"how"的問題,前面三個人只想『我如何打開那道門』(how),至於另外一個人則避開那三個人的困境,只是想『我要做甚麼』(what),答案是『我要過那面牆』,一旦他將問題放在"what"上面,他就可以設計如何執行而獲得成功,他解決問題不只是解決,而是問題要合理解決。
發展軟體就應如這則寓言中第四人的作法,要如何達到有許多方法,其中CRC cards (Class-Responsibility-Collaborator cards)技術,可能是最佳方法之一,但似乎未在國內引起廣泛注意,我們另文討論。
第四人並沒解決門鎖的問題,而是避開重新定義問題,創造新的而可解決的問題,因此基本上問題不在門鎖,而目的是人要到達牆的另一面。
這則故事顯示,"what"與"how"的問題,前面三個人只想『我如何打開那道門』(how),至於另外一個人則避開那三個人的困境,只是想『我要做甚麼』(what),答案是『我要過那面牆』,一旦他將問題放在"what"上面,他就可以設計如何執行而獲得成功,他解決問題不只是解決,而是問題要合理解決。
發展軟體就應如這則寓言中第四人的作法,要如何達到有許多方法,其中CRC cards (Class-Responsibility-Collaborator cards)技術,可能是最佳方法之一,但似乎未在國內引起廣泛注意,我們另文討論。
What的認識常常需要一再的分析。
回覆刪除那三個人可能也認為what是『進去城裡』,只是他們只知道要走城門,而城門鎖著,就把力氣放在做不到的需求,就是『開門』,而忽略了design alternatives中可找到,『跳牆』也是一種選擇。