英國(guó)哲學(xué)家培根曾經(jīng)說(shuō)過(guò),時(shí)間就是金錢(qián),時(shí)間就是力量,時(shí)間就是生命;也許在其它地方它有著更深刻的含義,但是在項(xiàng)目開(kāi)發(fā)中,我更體會(huì)出了一種無(wú)奈!
目前,我們國(guó)家大多數(shù)的軟件公司,都有著極不明確的項(xiàng)目開(kāi)發(fā)計(jì)劃,大多都圍繞著短期的市場(chǎng)需求轉(zhuǎn),因?yàn)樗苯雨P(guān)系著老板的腰包,很少有經(jīng)過(guò)長(zhǎng)時(shí)間的市場(chǎng)調(diào)研的。于是,當(dāng)市場(chǎng)開(kāi)始需要什么東西時(shí),大家一窩蜂的都去做,很少有人能夠靜下心來(lái)和用戶仔細(xì)交流溝通,原因就是時(shí)間太緊,他們擔(dān)心這段交流溝通的時(shí)間會(huì)延遲項(xiàng)目的開(kāi)發(fā)時(shí)間,會(huì)被其它公司占領(lǐng)先機(jī);因?yàn)椋拖裼械某绦騿T所說(shuō)的,我們根本就不知道客戶究竟想要什么,因?yàn)榭蛻羲约壕筒恢雷约合胍裁础K麄儬?zhēng)著看誰(shuí)在最短的時(shí)間里能夠拿出一點(diǎn)東西,即使用戶有一百個(gè)的不滿意。然而老板認(rèn)為這樣他們就搶占了先機(jī),就能夠拿出來(lái)作為同用戶進(jìn)行談判的籌碼,也不管它的性能的優(yōu)劣,然后就把推銷(xiāo)的光榮而艱巨的任務(wù)丟給銷(xiāo)售或業(yè)務(wù)人員,市場(chǎng)的占有份額完全靠這些人員的推銷(xiāo)能力,也不管他用什么途徑,至于以后的問(wèn)題嘛,以后再慢慢說(shuō)。于是問(wèn)題就逐個(gè)暴露出來(lái)了:
由于為了搶占市場(chǎng),需要盡快地制定一份需求分析說(shuō)明,但是這份需求并不是較為完善的(當(dāng)然了,在沒(méi)能達(dá)到用戶的滿意之前,也不可能有百分之百的完善,因?yàn)楸娝苤脑颍蛻舻男枨笫遣粩嗟淖兓摹N覀冞@里說(shuō)的是盡可能的完善),因?yàn)槲覀儾⑽赐覀冎T多的想象中的(或是預(yù)期的)客戶進(jìn)行較多的溝通,可能的就是依賴個(gè)別的比較或是非常熟悉這方面的人員來(lái)簡(jiǎn)單的分析制定一些需求計(jì)劃文檔(有的甚至根本就沒(méi)有任何文檔,完全地憑口頭的指示)。其實(shí)原因很簡(jiǎn)單,因?yàn)槔习逵幸螅仨氁诙嚅L(zhǎng)時(shí)間內(nèi)搞出來(lái),否則。。。。。。所以一切從簡(jiǎn)了,簡(jiǎn)到不愿浪費(fèi)一點(diǎn)點(diǎn)的時(shí)間同客戶進(jìn)行任何的交流。
這就牽涉到一個(gè)問(wèn)題,如果那些制定需求的人對(duì)所開(kāi)發(fā)的行業(yè)確實(shí)是專(zhuān)家級(jí)的,能夠考慮到面臨客戶的盡可能多的需求變化時(shí),這將是非常幸運(yùn)的,然而,不可能我們每家公司都有一些這方面的專(zhuān)業(yè)人才,何況現(xiàn)在的社會(huì)提倡打倒權(quán)威,我們的客戶似乎也特別熱衷于此,他總能提出一些需要你改變需求的問(wèn)題,不為別的,只為讓你知道這方面他也是“行家”,所以開(kāi)發(fā)之前我們也要尤其尊重這些人的看法,即使他們真的一無(wú)所知。然而時(shí)間就是金錢(qián),我們不會(huì)浪費(fèi)時(shí)間去和這種人辯解,不會(huì)和他們溝通這個(gè)問(wèn)題的比較好的處理辦法,因?yàn)槲覀儧](méi)有時(shí)間,我們會(huì)認(rèn)為我們所做的就是最好的,即使用戶有一百個(gè)的不滿意;所以為了避免出現(xiàn)類(lèi)似的情況,為了避免浪費(fèi)向那些白吃用戶們解釋的時(shí)間,我們有的項(xiàng)目組(或公司),干脆就閉門(mén)造車(chē)了。
接下來(lái),就很簡(jiǎn)單了,需求分析有了,趕緊搭建框架,建立數(shù)據(jù)結(jié)構(gòu),分配任務(wù)了,也不去管什么文檔了。這時(shí)候的老板恨不得你明天就能拿出來(lái)一個(gè)東西。沒(méi)話說(shuō)了,開(kāi)始敲代碼了。
這里就又出現(xiàn)幾個(gè)問(wèn)題:
有時(shí)候(并不是所有時(shí)候),可能我們公司比較成熟的技術(shù),剛好是現(xiàn)在的客戶所厭倦或是不喜歡的,他們通過(guò)某些途徑知道或是了解到了一些比較新的技術(shù),有些對(duì)他們來(lái)說(shuō)只是些美麗的花瓶,但他們就要求用這個(gè),沒(méi)辦法,顧客就是上帝嘛,我們引進(jìn)。這時(shí),如果碰到一些比較慷慨的老板,還好辦些,可以花高薪聘請(qǐng)一些高手,假若要是這樣的話,也還不算太差,這樣我們就可以省卻很多用來(lái)解決項(xiàng)目開(kāi)發(fā)過(guò)程中可能碰到的難題的時(shí)間,同時(shí),他們都有著比較良好的開(kāi)發(fā)項(xiàng)目的習(xí)慣(我自己以為,如果沒(méi)有良好的開(kāi)發(fā)項(xiàng)目習(xí)慣的人,水平再高,也不能稱(chēng)得上是高手,最多只能說(shuō)是字典),他們?cè)诜治鎏幚韱?wèn)題時(shí),本身就會(huì)考慮很多用戶需求本身的變化。這樣,我們也會(huì)省出一部分開(kāi)發(fā)時(shí)間和一部分重構(gòu)的時(shí)間。
然而,并不是所有的老板都很慷慨,也并不是說(shuō)所有的人都是高手(甚至有的公司為了降低開(kāi)發(fā)成本,根本就沒(méi)有或不會(huì)去招聘高手),于是,在開(kāi)發(fā)階段問(wèn)題就出來(lái)了,一些入門(mén)級(jí)的程序員,面對(duì)著嶄新的從未接觸過(guò)的行業(yè)需求,痛苦而無(wú)奈的敲著亂七八糟的代碼,他們面對(duì)著很多早已經(jīng)不是問(wèn)題的問(wèn)題而陷入查找解決資料的泥沼中,不能自拔,同時(shí)還要進(jìn)行著莫名的需求的變更。并且,有些公司,為了加快項(xiàng)目的進(jìn)度,在開(kāi)始階段,就開(kāi)始加班加點(diǎn)地工作,終于有些人員承受不住這種折磨,開(kāi)始紛紛跳槽走了,然而,他們不知道的是只不過(guò)從這個(gè)地獄跳到了另一個(gè)地獄;另一部分人,雖然沒(méi)有走,但是心情煩躁起來(lái),開(kāi)始變得失落,沒(méi)有任何的成就感,整天似乎就是為了工作而工作,沒(méi)有了樂(lè)趣,編程再也不是一種享受了,而是一項(xiàng)任務(wù),效率越來(lái)越低,但是還要趕時(shí)間,因?yàn)闀r(shí)間太緊了;同時(shí),走的一部分人員,又需要有新的人員來(lái)補(bǔ)充,重新了解需求,了解已走的人的編程習(xí)慣,修改甚至重寫(xiě)一些不太完善或即將完善的代碼,如果沒(méi)有較為完備的文檔,花費(fèi)的時(shí)間就更長(zhǎng)一點(diǎn)。然而我們沒(méi)有時(shí)間,不可能讓他花費(fèi)那么多的時(shí)間去熟悉,去了解,他需要匆忙上陣,還要能夠解圍保駕,于是,他就開(kāi)始按照自己新的一套風(fēng)格做自己被要求要做的東西,周而復(fù)始,代碼越來(lái)越難以維護(hù)。然而時(shí)間還是這樣不緊不慢的走著,需求就在這個(gè)時(shí)間的流逝中,開(kāi)始不斷地發(fā)生著或大或小的變化,于是,大家也跟著日復(fù)一日地修改以前編寫(xiě)的代碼,同時(shí)還要繼續(xù)增加那些新的需求里的功能。
好了,終于有一天,你自以為可以長(zhǎng)出一口氣了,因?yàn)椋谀憧磥?lái),需求里的功能似乎都已經(jīng)有了,始乎這個(gè)項(xiàng)目也已經(jīng)開(kāi)發(fā)完畢了。于是,開(kāi)始向老板匯報(bào),開(kāi)始拿去向用戶演示,雖然那些笨蛋什么都不會(huì),但是還要給他們解釋?zhuān)o他們做培訓(xùn),請(qǐng)他們提要求,因?yàn)椋@時(shí)候才發(fā)現(xiàn),那些白吃們拿著自己想要的money。當(dāng)然,客戶們也不會(huì)放棄展現(xiàn)自己才華的機(jī)會(huì),各種意見(jiàn)、需求變更,紛紛從地底冒了出來(lái),然后對(duì)這些意見(jiàn)和需求重新評(píng)估,重新調(diào)整規(guī)劃,重新修改需求文檔,調(diào)整數(shù)據(jù)結(jié)構(gòu),因?yàn)榭蛻綦m然不是上帝,但是人家掌握著財(cái)政大權(quán),掌握著我們的經(jīng)濟(jì)命脈。于是,一切似乎都又不那么美好,一切都又變得亂七八糟,為了應(yīng)付不同的客戶,我們開(kāi)始針對(duì)不同的用戶進(jìn)行不同的修改,因?yàn)闀r(shí)間,也許只有這樣,我們才可能盡快地滿足某個(gè)用戶,一個(gè)又一個(gè)版本出現(xiàn)了,當(dāng)大部分客戶開(kāi)始要求修改一些東西時(shí),不同的版本一個(gè)接著一個(gè)開(kāi)始修改,,再加上有些版本的升級(jí),以致后來(lái)有的公司,同一個(gè)軟件竟有上百個(gè)不同的版本。我們一邊添加著新的內(nèi)容,一邊修改著軟件中的bug,同時(shí)抱怨著時(shí)間太緊。我們不斷地抱怨說(shuō),如果某個(gè)問(wèn)題當(dāng)時(shí)給我多長(zhǎng)多長(zhǎng)時(shí)間的話,現(xiàn)在就不會(huì)怎樣怎樣, 似乎一切都是時(shí)間的錯(cuò)。
然而說(shuō)實(shí)話,即使一切并不都是時(shí)間的錯(cuò),但時(shí)間在這里還是起到了至關(guān)重要的作用,最起碼,如果時(shí)間不是很緊迫,我們可以制定一份相對(duì)較為完善的需求分析,我們也能夠進(jìn)行一些合適的業(yè)務(wù)知識(shí)的培訓(xùn),不可否認(rèn),這樣對(duì)我們整個(gè)項(xiàng)目開(kāi)發(fā)會(huì)有不少幫助。
然而,我想說(shuō)的,其實(shí)并不單單的是市場(chǎng)需求的時(shí)間緊,這只是一個(gè)客觀原因,這個(gè)問(wèn)題我們是避免不了的,但這真的是時(shí)間緊嗎?我看未必,如果真的是因?yàn)闀r(shí)間緊,那極有可能是我們?cè)诓恢挥X(jué)中浪費(fèi)了太多。想想上面的情況,我們可以通過(guò)其它途徑來(lái)加快整個(gè)項(xiàng)目的進(jìn)程,比如,高薪聘請(qǐng)一些高手,這對(duì)于一個(gè)軟件公司絕對(duì)是很有必要的,這樣最起碼可以減少一些不必要的查詢?nèi)绾谓鉀Q那些早已不是問(wèn)題的問(wèn)題的時(shí)間,同時(shí)他們還能夠預(yù)測(cè)到某些做法可能會(huì)出現(xiàn)的問(wèn)題,畢竟他們是有經(jīng)驗(yàn)的,這樣也會(huì)減少不必要的回頭率。其實(shí)這節(jié)省的是時(shí)間,也是金錢(qián)。還有,如果剛開(kāi)始我們能夠盡可能多的同用戶進(jìn)行交流溝通,也會(huì)減少我們諸多的需求變更,這樣節(jié)省的也不僅僅是時(shí)間。
當(dāng)然一個(gè)項(xiàng)目開(kāi)發(fā)的成功與否,還有很多其他重要的因素,即使這個(gè)時(shí)間,也還有很多方方面面,然而,一個(gè)項(xiàng)目剛開(kāi)始時(shí),如果先把成本放在第一位,一切都要考慮降低成本,最終會(huì)發(fā)覺(jué)會(huì)消耗更大的成本,因?yàn)椋瑫r(shí)間是項(xiàng)目開(kāi)發(fā)中最大的成本。所以,一旦我們能夠把握住這個(gè)項(xiàng)目在時(shí)間上的進(jìn)度,這個(gè)項(xiàng)目即使剛開(kāi)始做,也已經(jīng)是很成功的了!
聲明:這只是我在項(xiàng)目開(kāi)發(fā)過(guò)程中的一些感想體會(huì),僅代表個(gè)人觀點(diǎn),并不針對(duì)具體公司和具體人員!同時(shí)這份文章還在繼續(xù)更新中,歡迎大家一起來(lái)探討,項(xiàng)目開(kāi)發(fā)的得失!