跳到主要內容

找出客戶真正的需求(問題)

在執行專案過程中有些事件,就跟「你想通了嗎」[1]一書中提到的情景類似,不過當下卻沒有察覺,都是事後解決才發現問題的癥結。
案例一:
在系統即將完成的後期,客戶才表示,其中一項W功能要增加一個新的表單,當初只談好要作2個表單,每個表單其實是對應到他們現有 一項業務,客戶負責提需求的人忘了提出他們還有另一項業務是不同於前2項的,必需要作一個新表單來專門處理這項業務。如果幫客戶做,則延長開發時間,不合 成本,但若拒絕,則這個系統又少了一項執行重大業務的功能,客戶接受度降低。當然我方大可以不符合約的理由正當的拒絕,但似乎不夠圓融,雖然後來我方委婉 說明,希望客戶打消此念頭,但客戶仍持續提出要求,這似乎是個兩難個局面。
後來的解決方法是在兩個原有的表單加上一個可以自由輸入的欄位,這樣,原有2項表單便免強可以轉作第三項業務使用,算是兩方都滿意的解法。不過這方法一開始也沒想到,是跟客戶討論的時候,被提醒的。這件事,問題的擁有者客戶,並不是我,也就是問題並不是「要不要作第三個表單?」,而該是客戶心理想的:「怎樣才能讓系統幫我處理第三項業務?」如果這樣思考就能跳脫出先前作新表單的思維中。
案例二:
我們要接手前一家公司做好的系統,並對其作部份的修正,需求很明確,但在專案一開始我們對技術與對方的程式碼都不熟悉的狀況下,客戶基層主管R就要我們提 出每項功能的時程,因為距離預定上線的時間只剩一個月,我們彼此又是第一次合作,因此主管R希望我們儘早告訴他我們的schedule。不過在不熟悉對方 系統架構與程式碼的狀況時,實在是很難估計明確的時間。這是一個兩難局面,隨意給一個時程,恐怕造成我們自己未來難做事,不給時程,客戶又相當堅持。
這問題的解決仍然是因為跟客戶溝通的拉鋸過程中,他偶然提到的訊息,因為他要給系統的user、主管一個交代,因此才要我們提出明確時程,因為距上線只有 一個月,我們就答應在三個星期後完成,中間的時程,之後再提出,這樣才算達成共識。一開始問題好像是「怎麼估計出工作時程?」,但是如果換到問題的擁有 者,主管R身上時,問題變成「我怎麼跟主管、user報告,系統何時可以完成?」
雖然我們常常聽過「換個角度想」,但是要換到哪個角度,卻是個問題,以上兩個都是比較簡單的狀況,只要我們換到問題的擁有者身上去思考,就可以找到問題的 真正解決方法。雖然一開始問題的擁有者好像是我們,但其實都是因為客戶有問題,才會造成我們的問題,要透過「誰造成這個問題」、「這問題從哪來的」等問題,來找到真正的問題擁有者。

[1]你想通了嗎?(Are You Lights On?), 唐納德‧高斯,傑拉爾德‧溫伯格, 經濟新潮社

留言

這個網誌中的熱門文章

innerHTML 的安全風險

問題 若你要實作一個使用者輸入的功能,並把輸入的內容顯示在網頁上時,應避免把使用者輸入的值直接指定給某個 element 的 innerHTML 。因為若是使用者輸入包含 HTML、JavaScript, innerHTML 就會解析並執行: var userInput = '<img src="javascript:alert("XSS")">' element . innerHTML = userInput ; 因此可能 user A 的惡意輸入,會被系統顯示到 user B 的畫面上,進而執行特定成程式碼而造成 XSS 攻擊 。 解法 一般會先想到 encode HTML,但是如果只是要顯示文字,將使用者輸入值指定給 textContent 會更簡單,無需 encode,該值會被當成純文字處理,並不會執行 javascript。 var userInput = '<img src="javascript:alert("XSS")">' element . textContent = userInput ;

XMind使用心得

使用FreeMind有好一段時間,不過畫面單調一直是我不滿意之處。 XMind在畫面上好看很多,節點形狀樣式、分支線樣式有多樣選擇,也可以匯入FreeMind的檔案。 類似Excel般,工作頁活頁的概念也很不錯,可以將多個相關的心智圖存在一起。 可以某個分支為中心來檢視的功能也很令人激賞,完全符合心智圖那種可見樹、可見林的特性。 不過使用上有幾項缺點: 1.不能設定節點的預設文字大小。 預設應該是10點字,太小了,但是「喜好設定」內沒有地方可以修改,需要每次自己加大字型,很麻煩。 2.沒有加大字型的動作可以設定快速鍵。 我喜歡不只是用顏色,還有用字型的大小來凸顯主幹、分支的差別,不能快速的增大、縮小字型很不便。

ZK 教學 - 使用 MVC 或 MVVM?

不管是現在剛開始接觸 ZK 或是用過一陣子的人都可能會遇到的問題是到底要用 MVC 或 MVVM 的方式開發。從 ZK 8 之後又把 MVVM 的能力更佳的擴展,所以 MVVM 會是一個功能更強的開發方式。但 MVC 在使用上比較直覺,仍有其優勢,所以我想決定性的因素會比較是 開發者的偏好 及 專案的特性 。你可參考下面的比較來決定哪種方式比較適合你。 優勢比較 MVVM ViewModel 較不易受畫面變動影響。 因為 ViewModel 沒有變數直接指向 ZK 元件,因此若是畫面上有元件更改,ViewModel 一般不需要修改 ViewModel 較易於在不同頁面中重用。 因為 ViewModel 只包含資料跟業務邏輯,若是不同頁面需要的資料跟業務邏輯相同,就可以重用同一個 ViewModel 例如 A 頁面按按鈕執行搜尋,B 頁面點選單執行同樣的搜尋,則可以重用同一個 ViewModel 中的 command,只是兩個頁面 data binding 寫在不同的元件上。 畫面較易於重用(易於模組化)。 透過 shadow component 跟 template 機制,可以將一段頁面的片段做成可以接受傳入參數 套用 Responsive Design 的成本較低。 通常需要針對不同裝置設計不同版面,但是顯示的資料內容大同小異,因此 ViewModel 多半可以重用 易於套用美工所設計的畫面,或是網路上現成的元件。 易於整合第三方 javascript library 或 widget。 因為 ZK 8 提供了一個可以讓你透過 javascript 去呼叫 ViewModel 中的 command (client side binding) 的方式來跟後端溝通 ViewModel 的可測試性較好。 因為 ViewModel 不需要繼承特定類別跟實作特定介面,可以輕易地執行單元測試 MVC 操控元件方式直覺好學、易懂。 MVVM 控制元件較不直接,需要了解 zk framework data binding 的行為 可以完全使用元件所提供的所有 API。 仍有極少部分 ZK 元件行為沒辦法用 MVVM 控制。例如產生 Messagebox , Listbox.renderAll() , Popup.o...