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