在繁忙的工作之余回想一下,你是如何從一個普通的開發(fā)人員變成一個需求分析員的?也許只是突然有,你的上司拍著你的肩膀,微笑著的對你說:“這個項目的需求由你來做吧!”。欣喜之后,心里不禁有些發(fā)虛,“我能夠成為一個有效的需求分析員嗎?”。

  有效的需求分析員為什么難以產(chǎn)生
   
  不容置疑,需求分析的正確、完整直接影響著項目的成敗,而需求分析員是需求分析正確與否的直接責任人?墒俏覀兯艿慕逃幍墓ぷ鳝h(huán)境制約了我們,讓我們很難成為一個有效的需求分析員。
   
  大學里,老師們講課完畢后,會留給學生幾道習題,而這些習題幾乎是不用經(jīng)過思考可以知道它的要求是什么,根本談不上需求分析,更加不需要考慮如何去進行有效的需求分析。然而,同樣是這些學生,畢業(yè)后卻要面對錯綜復雜、頻繁變化的需求,需要像專家一樣發(fā)現(xiàn)需求、挖掘需求,但是這些沒有經(jīng)過良好訓練的“士兵”僅僅靠天賦和勤奮能打贏這場艱苦卓絕的“戰(zhàn)役”嗎?

  大多數(shù)的需求分析人員都是從開發(fā)人員成長起來的。工作中,我們長時間一言不發(fā),面對著冰冷的顯示器,手指在鍵盤上翻飛,嘴角帶著神秘的微笑,用一種奇怪的符號在寫著什么。我們生活在一個數(shù)字的世界中,我們當中可能很多人從來沒有和任何一個客戶接觸過。可是突然有,我們發(fā)現(xiàn)自己不得不面對一大群用戶,更加糟糕的是這些人竟然不懂什么是C++,也沒有聽說過互聯(lián)網(wǎng)。“天啦,我能和他們說什么?”
   
  現(xiàn)在存在著這樣一種謬論,認為的程序員也會是有效的需求分析員,但是我們所接受的教育,我們的工作并不能教會我們?nèi)绾纬蔀橐粋有效的需求分析員。像編碼,測試,項目管理一樣,需求分析也存在著大量的技巧。很難想象不經(jīng)過艱苦的訓練能夠很好的掌握一種編程語言,需求分析也是一樣。但是現(xiàn)實中,很多的程序員沒有經(jīng)過任何的訓練變成了一個需求分析員,變成了一個缺乏足夠技巧的需求分析員。
   
  什么是有效的需求分析員?一個有效的需求分析員需要在需求分析過程中在工作中和用戶建立真正的伙伴關(guān)系,能夠在錯綜復雜的現(xiàn)象中發(fā)現(xiàn)問題背后的問題(the problem behind the problem),在陌生的領域內(nèi)能學得更快,而且還要用共同的語言和用戶進行交流在工作中和用戶建立真正的伙伴關(guān)系。
和用戶建立真正的伙伴關(guān)系
   
  我們知道用戶的業(yè)務目標是什么嗎?我們知道用戶三年甚至更久的發(fā)展方針是什么嗎?我們知道我們的軟件能夠給用戶帶來哪些利益嗎?用戶把我們當作朋友嗎?
   
  和用戶建立伙伴關(guān)系往往是寫在紙上,而不是放在心里,更難落實在實際行動中。和用戶建立伙伴關(guān)系不是空泛的口號,而是要為用戶的經(jīng)營結(jié)果負責。它不是隔靴搔癢式的善愿,而是要求苦樂與共的團結(jié)、有用信息的交流和協(xié)力謀求成果。我們作為一個需求分析員,捫心自問,在需求分析中真的把用戶的商業(yè)目標放在第一位了嗎?真的把用戶看成    我們伙伴了嗎?不了解用戶的目標,不尊重用戶的利益,我們能夠分析出讓用戶驚喜的需求嗎?能夠開發(fā)出為用戶創(chuàng)造大量價值的軟件嗎?
     
  怎么才能和用戶建立真正的伙伴關(guān)系呢?首先,要轉(zhuǎn)變我們的態(tài)度。很多IT人都是自詡為“社會精英”、“高科技人才”,在和用戶,尤其是傳統(tǒng)行業(yè)的用戶交流的過程中,幾乎是習慣性的傲慢。如果需求分析員帶著這樣的態(tài)度去工作,用戶會是什么感受?是我們給用戶服務,還是來教訓用戶?帶著居高臨下的態(tài)度,我們又怎么能夠做到“像用戶一樣思考”?所以,我們必須要改變自己的態(tài)度,真心實意的把用戶當作上帝看待。要明白,是用戶的錢養(yǎng)活了我們。第二,培養(yǎng)人際關(guān)系。需求分析不是做交易,不是把收了錢可以置諸腦后的一錘子買賣。我們要真誠的面對客戶,用真心換取真心,盡力和用戶成為朋友。第三,我們要展開我們的商業(yè)想象力。大膽尋求滿足用戶需求的更佳途徑。象用戶一樣看待事物遠遠不夠,我們要爭取看得更清晰,也是常說的“超越用戶”。
發(fā)現(xiàn)問題背后的問題
   
  當一個軟件項目開始后,用戶的要求往往是開發(fā)完成某個功能(如人事管理,財務等)的軟件,用來解決目前存在的問題。但是軟件真正能夠給用戶創(chuàng)造的價值是什么,這是每一個需求分析員必需思考的問題。
   
  需求分析應該是一種系統(tǒng)思考,是一種需要“見樹又見林”工作。有效的需求分析員要把企業(yè)看成一個系統(tǒng),并且把它融入大社會這個大系統(tǒng)中,全面的觀察用戶的工作,而不是片段的、一幕一幕的個別事件。比如用戶需要開發(fā)一個人事管理軟件,表面上的需求可能是更方便的對員工進行管理,但是實質(zhì)上的需求可能是通過人事管理軟件來解決工作紀律松散、考勤不嚴格、人員流動隨意等問題。同樣的,用戶需要開發(fā)一個財務軟件,除了更好的管理資金,其真正的目的可能是為了解決內(nèi)部財務制度混亂的問題。如果需求分析只是停留在表面的問題,而不能夠發(fā)現(xiàn)用戶真正關(guān)心的問題,很難相信開發(fā)出來的軟件能夠讓用戶發(fā)自內(nèi)心的滿意。
   
  如果發(fā)現(xiàn)問題背后的問題呢?在大多數(shù)公司,除了存在一些正式的組織之外,還存在著各種非正式的組織,這需要需求分析員在需求分析的過程中,除了要利用正式的渠道(會議、訪談等)外,還要善于利用非正式的渠道(午餐中的交談、私人會談等)來了解用戶的需求。我們會發(fā)現(xiàn)非正式的渠道往往是發(fā)現(xiàn)問題背后的問題的關(guān)鍵。
  另外,我們還需要掌握一種有效的分析方法??“深耕法”。下面是一個深耕法的例子:


  通過一系列的“為什么?”,我們能夠很有效的發(fā)現(xiàn)問題的背后的問題到底是什么。


“用戶真正需要的是什么?”,每一個需求分析員在進行需求分析的過程中都應該不斷的問自己,要記住一個事實,“事情往往比它看起來復雜”。只有真正的融入到用戶當中,成為用戶團體中的一員,才能發(fā)現(xiàn)問題背后的問題,才能做出真正讓用戶滿意的產(chǎn)品來。

  學得更快
   
  不正確需求已經(jīng)成為了導致軟件開發(fā)失敗的大罪魁禍首,尤其是運用于非計算機行業(yè)的軟件。需求分析員往往不是行業(yè)專家,在十天半個月的需求分析中,我們很難完全理解一個擁有十幾年經(jīng)驗的行業(yè)專家。這是一個很殘酷的現(xiàn)實,也是一個我們必須面對的事實。正是因為理解上的片面和偏差導致了很多軟件項目以悲慘的結(jié)局收場。
   
  一個有效的需求分析員應該是一個善于學習的人。只有學得更快才能讓一個需求分析員能夠在短暫的需求分析階段成為一個“行家里手”,能夠像一個行業(yè)專家那樣思考、行動。但是學習能力也不是一朝一夕能提高的,需求分析員要在日常的工作學習中不斷的加強,盡可能的用更快的速度來學習。只要堅持不懈,一定會大有收獲。
   
  一個有效的需求分析員也應該樂于學習的人。當他面對一個全新行業(yè)的時候,他能夠用超乎想象的熱情和速度去學習,去理解,去融入,而不是排斥、厭惡,甚至詛咒。很多IT人都有一種不好的想法,是對傳統(tǒng)行業(yè)有一種近乎“天然”的排斥感,這種排斥感往往會導致需求分析員與用戶之間的隔閡和矛盾,其結(jié)果可想而知。

  用共同的語言進行交流
   
  當IBM AS400發(fā)布的時候,IBM專門在眾多的專家中找出一位既精通技術(shù),又能夠把晦澀難懂的技術(shù)術(shù)語“翻譯”成易懂的口頭語言的專家,結(jié)果這位專家在發(fā)布會上用平實的語言說出了AS400的所有優(yōu)點,在場的所有記者都能夠輕松的理解,從而使得發(fā)布會獲得了前所未有的成功。
作為一個需求分析員,對技術(shù)應該是有相當?shù)牧私獾模俏覀儾荒苌萃覀兊挠脩粢材芎臀覀円粯訉T技術(shù)有同樣精深的了解。用戶可能不知道什么是“組件”,什么是“面向?qū)ο蟆,甚至搞不清楚?0M帶寬網(wǎng)絡和100M帶寬網(wǎng)絡有什么區(qū)別”。對于用戶而言,他們更加熟悉的是他們所在行業(yè)的術(shù)語和標準。于是奇怪的現(xiàn)象出現(xiàn)了,用戶和需求分析員用著互相不能理解的語言在交流,好像是一個中國人和一個法國人各自用著自己的母語在交流,也許更多的是混亂,而不是共識。在這樣的情況下面,我們能夠奢望取得準確,全面的用戶需求嗎?
  
  一個有效的需求分析員應該怎么解決這個問題呢?首先,應該努力的去熟悉用戶的行業(yè),學習用戶使用的術(shù)語,標準,以便能夠準確的理解用戶。這需要我們大量的閱讀用戶所在行業(yè)的資料、文章,盡量多選取一些整體性介紹的文章,這樣可以在短時間內(nèi)能夠?qū)υ撔袠I(yè)有一個全面的認識,這樣我們能夠較好的和用戶進行交流了。第二,應該盡量不使用IT行業(yè)的術(shù)語,而采用淺顯易懂的口頭語言來解釋IT行業(yè)中高深莫測的術(shù)語,以便用戶能夠很好的理解。我們可以向用戶這樣解釋10M帶寬網(wǎng)絡和100M帶寬網(wǎng)絡有什么區(qū)別:“10M帶寬的網(wǎng)絡像是雙車道的柏油路,容易堵車,而100M帶寬的網(wǎng)絡卻是二十車道的高速公路,堵車的可能性非常小”。這樣的解釋用戶能夠很好的理解了。但是,用平實的語言解釋IT行業(yè)的術(shù)語并不是一件容易的事情。一方面它要求對該術(shù)語有透徹的理解,另一方面需要很好的表達能力。在平時的工作中,我們不妨試著把一些難懂的術(shù)語用平實的語言表達出來,甚至可以向一些不了解IT技術(shù)的人解釋一些艱深的概念。只要能夠堅持做下去,一定會有讓我們驚喜的進步。
 
  需求之所以難以捕獲,是因為它們存在與用戶的頭腦中。有效的需求分析員必須用自己智慧、行動和真誠去發(fā)現(xiàn)需求、挖掘需求。好的方法和習慣能夠讓我們的需求分析更加有效,也會讓我們成為一個有效的需求分析員!