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