需求工程師必備素質(zhì)細說 |
| ||||
上傳時間:2009-04-18 16:28 點擊:785 |
|
如何改進需求?筆者認為,首先必須意識到需求是一種技能,否則不可能改進。如果團隊只把“技術(shù)”定義為“實現(xiàn)軟件”,認為需求只要愿意去做就能做好,那么“改進需求”永遠是一句空話。事實是,很多團隊就算愿意去改進需求,也不知道怎樣才能做好。 按照需求的各項活動,技能可以分為啟發(fā)技能、定義技能,管理技能等;還可以分為團隊技能,個人技能。本文不討論訪談技術(shù)、用例技術(shù)、或者需求變更,這些在以前的文章中已經(jīng)涉及。本文討論這些技能的最終執(zhí)行者――需求工程師,他們?yōu)榱苏莆蘸眠@些技能,最好具備什么樣的素質(zhì)。 筆者把一名優(yōu)秀需求工程師所需要的素質(zhì)歸納成一所房屋的樣子: 房屋的根基是好奇心,有三根柱子:探索力、溝通力、表達力,以熱情作為屋頂。
![]() 好奇心 好奇心,首先指對不熟悉的事物提起興趣的能力。在做項目時,有的開發(fā)人員只對項目將要用到的新技術(shù)感到興奮,對項目所涉及的業(yè)務(wù)領(lǐng)域則不感興趣。為什么調(diào)研過程總是流于形式?為什么更喜歡在辦公室“編寫”用例,而不是深入第一線?為什么喜歡甲方的信息中心人員,而不是不懂電腦卻至關(guān)重要的涉眾?這就是原因之一。 好奇心,更重要的是從熟悉中發(fā)現(xiàn)驚奇的能力。很多時候?qū)I(yè)務(wù)太熟悉或者存在已有系統(tǒng),也是捕獲需求的一種阻礙。這種情況下很容易就想到系統(tǒng)里有哪幾張表,怎么調(diào)用,反而鉗制住了思維。必須要學(xué)會抵制各種想要向里探頭的誘惑,盡量跳出來看,從熟悉中發(fā)現(xiàn)驚奇。這樣才能從涉眾提供的資源中,超越涉眾的目光,開發(fā)出在局中人無法察覺的需求。需求本來就是要把系統(tǒng)看成是黑盒子,不關(guān)心它是如何被構(gòu)造的,只描述它被使用時表現(xiàn)出來的功能和性能: ![]() 如何培養(yǎng)好奇心?其實日常生活中充滿了驚奇: 一大群人,半夜不睡覺,討論過去一天的各種事情,然后把它們整理成厚厚的一疊紙,送到你的辦公室,只收1元錢。 有一種動物很奇怪,每天從殼子鉆進鉆出,一到晚上,就幾個一組鉆進一個殼子里盯著一個發(fā)出熒光的盒子一動不動。 用另一種心態(tài)來觀察這些事物,可以培養(yǎng)好奇心??匆恍?#8220;短路”的漫畫,或者做一些不熟悉的事情,例如你喜歡看《體壇周報》,不妨去看看《人民日報》;如果你喜歡看《程序員》,不妨去看看《知音》。 探索力 探索力,首先是尋找線索的能力。業(yè)務(wù)現(xiàn)實就是這樣,資料在那里,涉眾也在那里。你怎樣去尋找線索?拍拍涉眾的肩膀,“來吧,說說你對這個系統(tǒng)有什么需求?”這樣行嗎? 探索力,還包括從線索中歸納出問題的能力。就象偵探一樣,需求工程師需要從涉眾提供的各種信息碎片中捏出真正的問題。這種探索力更強調(diào)的是“合成”,而程序員擅長的是“分解”——針對問題,采用某種軟件技術(shù)解題。(這里的程序員指廣義的軟件實現(xiàn)人員。不管他是用圖形(如UML)還是字符(如C#)來“編程”。)這就解釋了:為什么程序員在“尋找用例”時往往會變成“功能分解”?為什么用例的道理很簡單,我們卻一次次地摔倒? 某開發(fā)團隊在一個制作報表的需求上糾纏了很長時間,最后才發(fā)現(xiàn)客戶方的最高負責(zé)人從未要求,也不在意有沒有正式的“報表”,他在意的是隨時掌控進展情況并做出平衡。如果他確實需要一份“報表”,系統(tǒng)可以給他提供基本數(shù)據(jù),他寧愿用自己的人制作任何他想要的報表??上В瑳]有人早一點問:為什么需要這個報表? 日常生活中如何培養(yǎng)探索力?例如最近的事件,“Martin Fowler要來中國”,如果一開始只是知道這么一個事件,并不了解其中細節(jié),可以嘗試針對各個環(huán)節(jié)的信息,通過“反轉(zhuǎn)”、“取代”等手法來探索: ![]() ①為什么是Martin Fowler來,別人象Kent Beck、Scott Ambler也會來嗎? ①Martin Fowler以前來過嗎?這次來是為了什么事?旅游?講學(xué)? ①Martin Fowler來了之后怎么辦?會在中國開展業(yè)務(wù)嗎? ②為什么是來,有沒有中國公司“去”過Martin Fowler那里上門求教? ②是坐飛機“來”嗎,能不能從網(wǎng)上“來”? ③為什么是中國,他去過印度嗎?日本呢? 探索力的培養(yǎng)方面,Edward de Bono的書如《六頂思考帽》、《水平思維》等書雖然與軟件不直接相關(guān),但很有參考價值。和螺絲刀、拉鏈一樣,軟件實際上就是為人服務(wù)的一種工具。 溝通力 溝通力包括需求工程師和涉眾溝通的能力。涉眾往往表達的并不是需求,而是一種“需要”或者“利益”。認為客戶和程序員一說,就能理解執(zhí)行得到正確的軟件,這種想法是天真的。例如,一名操作員涉眾說系統(tǒng)要簡單易用。但“簡單易用”并不能直接成為需求。需求工程師要耐心和涉眾溝通,了解涉眾是以什么標準來度量“簡單”和“易用”的。 溝通力還包括需求工程師在不同涉眾之間協(xié)調(diào)的能力。涉眾往往有很多方,A類涉眾的利益和B類涉眾的利益可能在一定程度上是沖突的,例如,錄入人員希望操作步驟盡量少,但如果因此省略了一些確認和驗證的步驟,使用這些錄入數(shù)據(jù)的審批人員、施工人員的利益可能就會受到損害。需求工程師需要平衡各方涉眾的利益以得出恰當?shù)男枨蟆?nbsp; 溝通力還包括需求工程師在涉眾與程序員(也是一類涉眾)之間協(xié)調(diào)的能力。例如,操作員要求“一鍵完成操作”,卻難為了程序員。 ![]() 需求啟發(fā)技術(shù)中的訪談、觀察、會議等,無不需要人與人之間的溝通能力。而平時程序員更多使用的是和機器的交流能力,這一點也是身兼多職的程序員值得注意的。程序員如果要去承擔(dān)需求工程師的角色,溝通力可能是木桶上最短的板。 如何培養(yǎng)溝通力?我們習(xí)慣于生活在一群有較高學(xué)歷的軟件人圈子內(nèi),而涉眾往往在學(xué)歷和技術(shù)知識上和我們有差距。要能夠和涉眾有效溝通,有意識地去改進溝通技巧是必要的。參加一些溝通技巧的訓(xùn)練,或者閱讀一些人際交往的相關(guān)書籍,例如《人性的弱點》,這本書可以說是中國引進的最早的“溝通力”書籍之一,10多年前曾經(jīng)大熱。書中的傾聽和贊賞的道理到今天依然沒有過時。 表達力 表達力在這里著重指文字表達和組織的能力。需求最常見的形式是以文字方式表達出來的。象用例文檔,就是一種規(guī)范的、有層次的需求表達形式。用例的寫作需要表達力,也培養(yǎng)表達力。 我們平時習(xí)慣的是編程語言的表達能力,寫個注釋有時也想偷懶,更不用說自然語言表達的文檔了。開會時項目主管向大家介紹項目,用詞中經(jīng)常充斥著 “伸縮性”之類的各種字眼,明明只是一個小小的管理系統(tǒng),卻起名叫“××平臺”,似乎大家聽不懂才說明高深。 如果您希望提高文檔的表達力,可以嘗試讀讀這本書——《金字塔原理》。這是一本說明怎樣有效寫作的書籍,介紹了一種處理寫作時文筆不清問題的新方法。 熱情 我有好奇心,有探索力,有溝通力,有表達力,也掌握了各種具體的需求技能,就意味著我會積極地盡我所能去向涉眾探索需求嗎?沒有熱情作為屋頂,上面提到的各種“力”不能得到貫徹。培養(yǎng)上面提到的各種素質(zhì),主要靠需求工程師自己的努力。培養(yǎng)熱情則復(fù)雜得多。 沒有價值感,沒有熱情。軟件公司可能希望通過企業(yè)文化洗腦來使需求工程師獲得熱情。例如講這樣的故事:有個人經(jīng)過一個建筑工地,問那里三個石匠在干什么?第一個石匠回答:“我在做養(yǎng)家糊口的事,混口飯吃。” 第二個石匠回答:“我在做很棒的石匠工作。” 第三個石匠回答:“我正在蓋世界上最偉大的教堂。”故事是很感人,但如果我內(nèi)心里知道,這個軟件項目純粹是浪費納稅人金錢的政績工程,它的開發(fā)只會有損于社會的總福利,你叫我如何提起熱情來,睜眼說瞎話“我在建造世界上最偉大的軟件”? 沒有利益,沒有熱情。這個軟件系統(tǒng)做好了,我能得到什么好處?做砸了,對我有什么壞處?如果沒有這樣直接相關(guān)的利益,需求工程師是不會有熱情去體會涉眾的需求的。就象玩斗地主,如果只是扣分,大家只當玩玩而已,沒有人會絞盡腦汁,如果扣的是口袋里的銅板,恐怕每一局考慮的就全面多了。 如果您現(xiàn)在所在的軟件公司沒有給你帶來價值感,也沒有帶來直接利益,就不要用強打精神用“敬業(yè)”來折磨自己了,要么請老板改變現(xiàn)狀,要么走人吧! 結(jié)語 想一想這一種最簡單的涉眾,嬰兒。他哇哇地哭了,他的需求是什么?熱了?餓了?要尿尿?有蚊子咬他?還是生病了?應(yīng)用一下探索力和溝通力,你可能要摸一摸他的后頸,有汗嗎?發(fā)燙嗎?在腦子里查詢一下“喝奶日志”,上次喝奶是什么時候?抱起來,搖一搖,哼支小曲…… |