客戶的需求是否應(yīng)該得到滿足?軟件工程是否目的是滿足客戶的需求?這個問題看來是無法加以回答的,因為,它沒有提供兩個基本的解釋,其一:客戶 的需求即算從客戶的利益立場出發(fā),是不是合理的?其次,客戶的需求有多大程度上是必要的?還是只是一種個人的喜好?
如果說對于商業(yè)客戶來說,在項目開始前,還存在著做與不做;以及多少價錢來做的選擇的話,那么,在許多情況下,工程人員如果不對此有明確的立場,的結(jié)果是累死自已,而軟件項目永遠不令人滿意,也永遠不能完成。對于商業(yè)性客戶來說,客戶的需求是否合理是客戶自已的事情,客戶永遠是對的,這句口號的臺下詞是:只要客戶肯掏錢,那怕他要跳海,那也是他自已的事!但如果項目是已經(jīng)簽署定的合同單,那么存在著是否按原合同繼續(xù),還是中止,還是變更付款條件的的問題。而對于內(nèi)部項目,所謂的成本是工程人員有多累和什么時侯累死的問題。這時侯,軟件工程從業(yè)人員好能夠明白,在自已累死以前,老板,以及那些不學無術(shù)對技術(shù)一竅不通卻自以為是行里大家的同事,都不會對你有任何憐惜的。
所以這時侯那種無條件滿足客戶需求的工程需求管理不適用了,這時侯,軟件工程人員只能根據(jù)自已能夠承受的工作強度對各種需求進行取舍,而不是無條件地牽“客戶”的需求,更不是遷無知的需求。客戶是上帝這句話這時侯完全不適用,因為客戶不會為朝改晚改的需求付錢,付帳的是程序員自已——讓自已早點累死。
把種種需求明列并分級是的辦法;自已按步班一點點地完成,這是的辦法。事實上,對于商業(yè)客戶這也是適用的,因為收錢的畢竟是公司老板而不是項目組的程序員,公司老板收了錢不管實際項目成本是多少而讓程序員無條件接受客戶的需求也是常見的事情。所以把需求明列,既是讓老板明白眼前項目的成本到底是多少(老板通常是技術(shù)盲),也有了與客戶討價還價的根據(jù)。
我把需求分成五個等級。五分等級也是工程技術(shù)上的常用方式,如同大學的五分制。
一級需求(或改變)是關(guān)鍵性的需求,這種需求如果不滿足,意味著整個項目不能正常交付使用,前期工作也會被全部否定。這是必須滿足的,否則意味著否定程序員自已。所以定為Urgent.; 這通常是屬于補救性的debug類型,要救火。
二級需求(或改變)是后續(xù)關(guān)鍵性需求,它不影響前面工作內(nèi)容的交付,但不加以滿足,新的項目內(nèi)容無法提交或繼續(xù)。所以是NECESSARY;一般新模塊關(guān)鍵性的基礎(chǔ)組件,屬于這個級別。
三級需求是后續(xù)重要的需求,它不能滿足會令整體工作價值下降,為了體現(xiàn)項目價值,也是程度員自已的技術(shù)價值的證明,所以定為NEEDED;一般性的重大的有價值的全新模塊開發(fā),屬于這個級別。
以上三個等級是應(yīng)該實施的,但時間性上可以作優(yōu)先級的排列。
四級需求是改良性需求,沒有它并不影響已有功能的使用,但實現(xiàn)了,有可信的根據(jù)可以是BETTER。界面和使用方式的要求,一般在這個檔次。
五級需求是可選性需求,沒有它沒有誰會活不下去,有了它,沒有根據(jù)一定帶來好處,更多是一種設(shè)想,以及一種可能;通常只是需求代理人員的一種個人喜好。所以是MAYBE。
對于四級需求,工程人員項目有空,不妨做下去;對于五級需求,有興趣有余力做,沒有興趣或者沒有余力,管他需求不需求,除非額外付大錢,讓提這些外行需求的家為一邊涼快去。