原則(Principle)
1. 誰才是"上帝"
<我們說客戶是上帝,是因為客戶的重要性,客戶占有決定性的地位?墒窃谲浖開發中,到底是誰有決定權呢?是出資方,還是項目經歷,或是程序員?
職責不清,是業務建模失敗的主要原因之一。我們可以很容易的看見客戶把自己的要求用幾句話高度濃縮之后扔給開發人員,或是開發人員按照自己的意思開發程序。難道說,客戶和開發人員之間真的是"心有靈犀",完全不用溝通的嗎。
我在前文中已經提到過項目涉眾和開發人員的權利和義務,我想這里還有必要再次強調。Scott W. Ambler說:
it is the role of project stakeholders to provide requirements, it is the role of developers to understand and implement them.
在我一次開發過程中,遇到過一個很有意思的涉眾,他在他的需求分析中這樣寫:"總之,要實現那種能夠想到就能做到功能。"我想,這位涉眾對我們的計算機工業有著非常遠大的抱負。但我不得不客氣的告訴他目前實現是不太現實的。 大家聽了可能會覺得好笑,但是在我自己和客戶打交道的生涯中,這種客戶不在少數,F實就是這樣,你要怎么做?是一笑之后,棄之不顧嗎?我想大多數人會這樣做。因為他的要求太荒唐了嘛?墒,你有沒有花時間去了解一下,他這句荒唐的話背后代表了他的什么意思呢?我覺得,軟件開發人員負有教育涉眾的義務,你需要引導你的涉眾,讓他們說出自己的心聲。我在看到這位涉眾的這句話后,就花了一些時間去了解,其實呢,事情很簡單,他就是想要一個能夠定制報表模板的功能。而在項目結束后,我和這位涉眾有幸再一次的合作,這時候,他已經成為了一個出色的客戶方的項目領導者了。 這個例子說明了什么呢?涉眾往往都是領域專家,對自己的工作有很深的認識,可是由于對軟件開發的不了解,涉眾往往表達不清,甚至表達不出自己的需求。這時候,就是體現你的功力的時候了。記住,象對待上帝一樣對待你的客戶。
2. 耐心是首要的
明白了誰是"上帝",那就要耐心的對待上帝。學理工科的人,一般在邏輯思維上會比較好,可是對于涉眾來說,可不一定是這樣。我就遇到過一位做檔案工作的涉眾,在了解需求的時候,扯東扯西,含糊不清。明明一分鐘前才否定的方法,下一分鐘又提出來了。我覺得我的脾氣應該是不錯的,可到最后也幾乎發飚。所幸,最后我終于撐了下來。我想,在經歷過這件事情之后,我的耐心指數又會有一個很大的提高了吧。
我有一位同事的耐性是我所佩服的,在一個網站項目中,他負責系統分析。他整整花了三天的時間,和網站項目的負責人住在一起。最后系統分析出來之后,他的精神還不錯,可是那位負責人已經快不行了。
當然,這只是個笑話,并不是去鼓勵大家拼命。勞逸結合還是很重要的,身體是革命的本錢嘛。但是這告訴我們,如果缺少耐心,需求是很難成功的。例如在業務建模的討論會上,你雖然規定了這次的會議討論的是高階需求,可是與會者總會時不時的爭辯一些芝麻綠豆的小事兒。你怎么辦?我相信這種情況是很普遍的。
耐心最后會仍會體現為溝通,只有耐心的溝通,你才能揭開需求的重重面紗。人的行為總是會受到思想的指導,如果你解不開涉眾的心結,你就不可能了解他真正需要的。
我的一位項目涉眾的表現很奇怪,她總是在不停的說一件事情:"她要實現報表自動生成。"她的需求講來講去好像總脫不出這個范圍,可是我從她那里幾乎聽不到別的東西了。這時候,我決定放棄了,我想從她哪里可能已經沒有更多的資料了。但在我了解到她的工作中報表處理占用了她大量的時間之后,我改變了想法。在我花了一些時間幫她理清了報表處理的思路之后,她還在其他方面給了我很大的幫助。
3. 參與是重要的
XP方法的一個重要實踐,就是提倡"現場客戶"(on-site customer)。也就是說,客戶應該隨時和開發人員在一起,隨時提供資料和做出決策。而這個客戶,也必須領域專家,而且能夠有權做出決策。
這種現場客戶相信國內的軟件組織多半還做不到。但是一定要往這方面努力。我認為,這種現場客戶有兩種人:一種是項目涉眾,還有一種是行業專家。其實很多軟件公司都會配備一些管理咨詢人員,這些人就是行業專家。有數據統計說,目前廣東省軟件公司中的咨詢人員和開發人員的比例達到了3:1。我覺得這是好事。項目涉眾往往對自己的工作中的事務性部分有很深的認識,但是很難將之提升到一個理論的水平。這時候就需要一些行業專家來幫助了。讓行業專家和項目涉眾共同探討,還能夠激發項目涉眾的靈感,想到原來他想不到的方面。這就是"潛在需求"的開發。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/