我從事軟件開發(fā)工作已經(jīng)有三年了,這三年中,親眼所見,親耳所聞,報(bào)紙,雜志,網(wǎng)絡(luò)上有各種各樣軟件項(xiàng)目開發(fā)的經(jīng)驗(yàn)和教訓(xùn),總的感覺是,成功的少,而失敗的多,有的是部分失敗,有的是完全失敗,那么軟件為什么會(huì)失敗呢?
對(duì)于這個(gè)問(wèn)題的回答,有各種各樣的答案,總結(jié)起來(lái),大概是這么幾種:
用戶需求變化太快,無(wú)法把握
選用技術(shù)路線有誤,遇到了技術(shù)難關(guān)
項(xiàng)目管理錯(cuò)誤,軟件失去了控制
由于某些人員變化而引起項(xiàng)目失敗.
目前為止,一般都籠統(tǒng)地總結(jié)成"由于軟件工程的水平低下",然后開出的藥方是"采用軟件工程的模式進(jìn)行開發(fā)",可是具體來(lái)說(shuō),軟件工程又有許多流派,許多模型,許多方法,而且這些方法又都是相互矛盾,相互抵觸的,又該何去何從呢?于是開發(fā)人員這樣陷入了軟件開發(fā)的泥潭之中,左沖右突,不能自拔,越是大型項(xiàng)目,時(shí)間越長(zhǎng),人員越多,情況越是如此.
我認(rèn)為,問(wèn)題的本質(zhì)并不在于上面提到的幾種原因,而在于在軟件開發(fā)的過(guò)程中,人與人的關(guān)系被人為地扭曲了,這才是造成許多軟件項(xiàng)目失敗的根本原因.下面詳細(xì)說(shuō)明人與人的關(guān)系是如何一步一步被扭曲的.
一.開發(fā)商和客戶的關(guān)系
本來(lái)開發(fā)商和客戶之間是軟件產(chǎn)品的提供者和使用者之間的關(guān)系,一個(gè)賣東西,一個(gè)買東西,兩者之間的關(guān)系是平等的,公平交易,童叟無(wú)欺,這才是兩者之間的正常合理的關(guān)系,可是現(xiàn)在呢?
現(xiàn)在開發(fā)商和用戶之間的關(guān)系是嚴(yán)重不平等的,開發(fā)商為了得到訂單,往往委屈求全,放棄自己應(yīng)該堅(jiān)持的原則,在競(jìng)標(biāo)時(shí)相互壓價(jià),甚至采用某些不夠光明正大的手段來(lái)得到訂單,自己把自己放到了一個(gè)被動(dòng)的地位.許多開發(fā)商都有這樣的口號(hào)"以客戶為中心",他們不僅是這樣說(shuō)的,而且也是這樣做的,問(wèn)題是,一種不平等的關(guān)系,能夠長(zhǎng)期堅(jiān)持下去嗎?我從網(wǎng)上看到說(shuō),某個(gè)項(xiàng)目競(jìng)標(biāo),某開發(fā)商提供的標(biāo)書有一大箱子,需要兩個(gè)人才能抬到會(huì)場(chǎng)上.請(qǐng)問(wèn),這種標(biāo)書有誰(shuí)會(huì)看呢?難道開發(fā)商連這點(diǎn)起碼的常識(shí)都沒有了嗎?既然沒有人看,那么為什么要寫呢?難道開發(fā)商真的以為客戶會(huì)傻到不知道你在欺騙他嗎?那么寫這種標(biāo)書欺騙的是誰(shuí)呢?恐怕是自己欺騙自己吧!
考察這種不正常的情況出現(xiàn)的原因,既有開發(fā)商的原因,又有用戶的原因.
開發(fā)商的原因,一方面是經(jīng)濟(jì)大環(huán)境的影響,大家都這樣干,隨大流而已,另一方面是企圖用這種方式來(lái)討好客戶,給客戶留一個(gè)好影響,這樣才好拿到訂單.
而客戶的原因,則往往出于對(duì)于計(jì)算機(jī)的無(wú)知和恐懼,唯恐自己吃虧上當(dāng)擔(dān)責(zé)任,所以天生對(duì)開發(fā)商不夠信任,有敵對(duì)情緒,心理上有挑毛病,找問(wèn)題的傾向.
結(jié)果是這樣,麻桿打狼,兩頭害怕,兩者在開始接觸的時(shí)候,小心翼翼,唯恐出現(xiàn)問(wèn)題,一旦發(fā)生沖突,開發(fā)商盲目退卻,而客戶得寸進(jìn)尺,后事情弄的一團(tuán)糟.
開發(fā)商怕得罪客戶,卻沒有認(rèn)識(shí)到有時(shí)和客戶沖突是不可避免的,客戶怕開發(fā)商來(lái)欺騙自己,于是一次一次進(jìn)行試探,開發(fā)商越讓步,客戶越認(rèn)為自己受到了欺騙.開發(fā)商的讓步往往換不來(lái)客戶的信任,而是換來(lái)了客戶的更加不信任.由于開發(fā)商自己不相信自己,自己欺騙自己,后也無(wú)法得到客戶的信任.
畢竟軟件開發(fā)是由開發(fā)商來(lái)完成的,那么應(yīng)該也必須由開發(fā)商來(lái)決定項(xiàng)目的進(jìn)展和內(nèi)容,可是現(xiàn)在卻往往由于客戶的壓力而妥協(xié),放棄自己的原則,這樣來(lái)做軟件開發(fā),能成功嗎?失敗是必然的,成功才是僥幸.
結(jié)論是,在軟件開發(fā)中,應(yīng)當(dāng)以開發(fā)商為中心,而不是以客戶為中心,客戶的意見只是參考和借鑒,而不是金科玉律,不應(yīng)該害怕和客戶發(fā)生沖突,而應(yīng)該分析沖突產(chǎn)生的原因,把沖突看成問(wèn)題的征兆,而不是單純來(lái)消除沖突本身.
打個(gè)比喻,開發(fā)商好比醫(yī)生,而客戶好比病人,病人有病來(lái)找醫(yī)生,那么醫(yī)生開藥方時(shí)能否由病人來(lái)決定呢?病人如果對(duì)醫(yī)生的醫(yī)術(shù)有懷疑,拒絕和醫(yī)生合作,自己的病只能加深,而不能治愈.
開發(fā)商和客戶之間的關(guān)系,是一種良好的合作關(guān)系,而不應(yīng)該是爾虞我詐的生意場(chǎng)上的競(jìng)爭(zhēng)關(guān)系,雙方的目標(biāo)是一致的,而不是對(duì)立的.雙方之間的矛盾是共同利益基礎(chǔ)上的矛盾,而不是不可調(diào)和的敵我矛盾,必欲去之而后快.否定了這一點(diǎn),軟件是不可能成功的.
我們通常提到的"需求經(jīng)常變化",往往是開發(fā)商和客戶之間沒有擺正相互關(guān)系所造成的,需求并沒有變化,而是開發(fā)商接受了客戶提出的錯(cuò)誤需求,而不敢提出異議,等到木已成舟,才發(fā)現(xiàn)雙方的理解有問(wèn)題.
二.銷售人員和技術(shù)人員之間的關(guān)系
俗話說(shuō),屁股決定大腦,一個(gè)人擔(dān)任的角色不同,他考慮問(wèn)題自然會(huì)更多考慮到自己的切身利益,至于這樣做可能會(huì)給同事帶來(lái)的麻煩,管不了那么多了.在開發(fā)商內(nèi)部,銷售人員和技術(shù)人員之間的關(guān)系也非常奇特.在許多公司,為了提高銷售人員的工作積極性,對(duì)銷售人員采用提成的方式進(jìn)行獎(jiǎng)勵(lì),而將底薪定得很低,這樣一來(lái),銷售人員為了拿到項(xiàng)目的訂單,往往會(huì)屈從于客戶的壓力,許下許多難以兌現(xiàn)的諾言,或者由于對(duì)于技術(shù)的不了解而隨意答應(yīng)客戶的要求.等到合同簽訂完畢,進(jìn)入項(xiàng)目開發(fā)階段時(shí),客戶會(huì)拿這些諾言來(lái)要求開發(fā)人員進(jìn)行兌現(xiàn),結(jié)果是開發(fā)人員非常被動(dòng),對(duì)銷售人員怨氣沖天,于是告訴客戶這些要求無(wú)法滿足,而客戶也勃然大怒,你們這些人怎么一拿到錢變了臉了呢?問(wèn)題是,由于銷售人員不考慮技術(shù)人員將來(lái)的實(shí)現(xiàn),從而許下了過(guò)高的諾言,這樣做的結(jié)果也許可以拿到訂單,可是由于銷售人員和技術(shù)人員的口徑不一樣,后客戶無(wú)所適從,感到自己受到了欺騙,接著將一腔怒火發(fā)到了技術(shù)人員頭上,兩者之間的合作和信任關(guān)系逐漸變成了對(duì)抗和欺騙的關(guān)系.
有,有人對(duì)我說(shuō)了個(gè)笑話,說(shuō)計(jì)算機(jī)公司里三分之一是干活的,三分之一是混飯的,三分之一是騙子.后的三分之一是指銷售,請(qǐng)問(wèn),當(dāng)公司的銷售被別人當(dāng)成騙子時(shí),豈不代表整個(gè)公司是騙子?和騙子做生意可能成功嗎?項(xiàng)目的失敗不也很正常了嗎?
銷售人員和技術(shù)人員應(yīng)該是一個(gè)自行車的兩個(gè)輪子,他們的關(guān)系必須是相互合作,相互支持的,而不應(yīng)該是互相拆臺(tái),相互對(duì)抗的,一旦他們之間相互對(duì)抗,那么會(huì)給整個(gè)公司的聲譽(yù)帶來(lái)災(zāi)難性的后果.
三.項(xiàng)目管理者和開發(fā)人員之間的關(guān)系
項(xiàng)目管理者和開發(fā)人員之間的關(guān)系,本來(lái)應(yīng)該是相互團(tuán)結(jié),相互幫助,共同面對(duì)問(wèn)題的關(guān)系,可是許多項(xiàng)目管理者把這種關(guān)系扭曲成了管理與被管理的強(qiáng)制性關(guān)系,用種種規(guī)章制度,種種管理方法來(lái)強(qiáng)迫開發(fā)人員接受,把自己放到了開發(fā)人員的對(duì)立面,和開發(fā)人員離心離德,甚至還美其名曰"量化管理,科學(xué)管理".在這種糟糕的管理下,開發(fā)人員沒有任何辦法,要么被動(dòng)接受糟糕的管理,要么辭職以抗議.一旦一個(gè)項(xiàng)目發(fā)生了這種情況,它想成功非常難了.
這種問(wèn)題原來(lái)并不明顯,現(xiàn)在隨著各種MBA,印度經(jīng)驗(yàn),軟件工廠等似是而非的理論的泛濫,許多人,尤其是許多根本不懂軟件開發(fā)的管理者,更加變本加歷,用近乎苛刻的手段來(lái)加強(qiáng)對(duì)開發(fā)人員的管理,提出種種令人發(fā)笑的量化指標(biāo)來(lái)對(duì)開發(fā)人員進(jìn)行度量,還加上理論的依據(jù),對(duì)于敢于反抗他們這種做法的開發(fā)人員,一律以開除來(lái)解決問(wèn)題,造成的一個(gè)非常荒誕的現(xiàn)實(shí)是,許多公司里寧愿使用剛剛畢業(yè)沒有任何經(jīng)驗(yàn)的學(xué)生,不要有工作經(jīng)驗(yàn)的工程師,美其名曰:易于管理,哈,容易上當(dāng)受騙而已.請(qǐng)問(wèn),在這種管理者和開發(fā)人員之間的關(guān)系作用下,軟件項(xiàng)目有可能獲得成功嗎?
我個(gè)人并不反對(duì)嘗試性的使用各種開發(fā)方法來(lái)進(jìn)行管理,也不反對(duì)MBA來(lái)管理開發(fā)人員,我反對(duì)的是軟件開發(fā)中的強(qiáng)權(quán)行為,完全剝奪了開發(fā)人員應(yīng)當(dāng)具有的對(duì)于項(xiàng)目的發(fā)言權(quán)和建議權(quán),完全不考慮軟件開發(fā)作為高強(qiáng)度腦力勞動(dòng)的特殊性,用外行來(lái)管理內(nèi)行并不可怕,可怕的是這個(gè)外行偏偏認(rèn)為自己是內(nèi)行,這才是事情的可怕之處.外行是外行,不能因?yàn)樘幵诠芾碚叩奈恢蒙,認(rèn)為自己一下子變成了內(nèi)行,誰(shuí)敢反對(duì)我誰(shuí)走人,用這樣的人來(lái)管理軟件開發(fā),怎么可能成功呢?
項(xiàng)目管理者和開發(fā)人員并沒有本質(zhì)的區(qū)別,他們只是所處的崗位不同,擔(dān)任的責(zé)任不同而已,在軟件開發(fā)的問(wèn)題上,尤其在具體的技術(shù)細(xì)節(jié)上,往往管理者不甚精通,如果他不能吸納開發(fā)人員的智慧,而是自己一個(gè)人拍腦袋來(lái)做決策,那么失敗在眼前了.
總的來(lái)說(shuō),在軟件開發(fā)中,無(wú)論采用那種模型,那種工具,都離不開人的參與,離不開人與人之間的關(guān)系,如果不能正確對(duì)待人與人之間的關(guān)系,把本來(lái)正常的,平等的,合作的人與人之間的關(guān)系變成了不正常的,不平等的,對(duì)抗的人與人之間的關(guān)系,那么還希望項(xiàng)目能夠成功,無(wú)異于緣木求魚,南轅北轍了.如果人與人之間可以相互信任,相互理解,相互支持,相互合作,那么沒有什么事情是辦不成的,而如果人與人之間相互欺騙,相互猜忌,相互詆毀,相互斗爭(zhēng),那么沒有什么事情是可以辦成的.
<<大話西游>>中唐僧說(shuō),我們師徒四人這次西天取經(jīng),之所以不能夠成功,原因是我們不夠團(tuán)結(jié).依我看來(lái),軟件開發(fā)之所以出現(xiàn)這么多問(wèn)題,根本的原因也是人們不團(tuán)結(jié).