我們知道現(xiàn)在的軟件開發(fā)最大的問題就是變化,其實這也不是軟件本身的問題,我更覺得是軟件的特點。因為他不像建筑,畫個建筑圖,一般不會偏到哪里去。然而很多需要軟件的人,他可能希望軟件能達(dá)到什么目的,至于具體是什么樣子,他自己也不知道。大部分都是看到一部分想起一部分,自己也不斷的修正。這也是為什么最近敏捷大行其道。
我甚至服務(wù)過一個客戶,做一個公園系統(tǒng),為的是送一張免費的VIP卡給業(yè)主,最終目的是賣房子。
既然軟件的需求是不固定,也就是不斷變化,所以我們簽合同的時候往往有兩種方式:
1.固定價格
這種就是一開始讓客戶必須把需求定下來,然后估計時間,然后就是報價,我一直不懂這個價格是如何報的,很多就是先去客戶那里調(diào)研一下,其實就是看一下這個客戶好不好蒙,能蒙多少。然后就近可能的往高的報。然后整一份需求說明書,讓客戶簽字,如果客戶改需求,加錢加時間。要不就目前的功能你做了也沒用,雞肋,大部分客戶咬著牙,加吧,誰讓我們給他們分期付款,還付了定金呢,最終不歡而散,兩敗俱傷。
2. 按時間付價格
這種大部分出現(xiàn)在外包的項目中,就是客戶找自己需要的工程師,按月付費,一般采用迭代式開發(fā),增量式開發(fā),客戶考察的主要是質(zhì)量和效率,如果達(dá)不到客戶的要求,客戶立即停止。這樣看起來很美,但是效率卻是一個不好衡量的東西,尤其是時間短的項目,很難看到效率,舉個例子,同樣是蓋樓,一個打10米的地基,迅速蓋到了三樓,可是另一個打了30米的地基,為的是蓋30層的高樓,很顯然,10米地基的樓房很快就出現(xiàn)人的眼前。這說明效率有時候有點“亂花漸欲迷人眼”。但這種方式,我們很多人5小時能干完的,非要8小時干完,為什么呢,因為5小時干完,客戶也不一定提高報價??蛻艉茈y知道什么是真正的效率,從某種意義上說,抹殺了整個生產(chǎn)力。
兩種方式,看似都有問題,但第二種比第一種對雙方風(fēng)險稍小。但第二種會抹殺整個行業(yè)的創(chuàng)新和積極性。
最近,看《論語》“君子和而不同,小人同而不和”就是說,君子內(nèi)心所見略同,但其外在表現(xiàn)未必都一樣,比如都為天下謀,有些人出仕做官,有些人則教書育人,這種“不同”可以致“和”;小人雖然嗜好相同,但因為各爭私利,必然互起沖突,這種“同”反而導(dǎo)致了“不和”。
這突然讓我想起軟件項目的合作有何嘗不是如此,很多時候,我們以為有了一份合同就可以,其實合同就是一份擺設(shè)。如果都按孔子的這個思想,軟件合同其實就是要完成一件事情,具體要做成什么樣,價格是否會變化,應(yīng)該是在過程中不斷協(xié)商,不斷合作。如果一開始都說好不變,其實我們自己都知道,一定有一方會吃虧。就像有人說“中國人太多,炸死一半就好了”(此話出自在電梯偶遇某一個看似有文化的中年婦女),我就想難道那一半就一定不包括你?
所以,我們在軟件寫作過程,最好就是想盡一切辦法,讓自己和客戶的合作更緊密一些,合同內(nèi)容盡量少一些。