軟件項(xiàng)目顧問(wèn)的20法則
Josh Berkus是著名的關(guān)系型開(kāi)源數(shù)據(jù)庫(kù)PostgreSQL的核心開(kāi)發(fā)成員。他還是PostgreSQL Experts Inc.——一個(gè)PostgreSQL專(zhuān)業(yè)服務(wù)公司的CEO,在加入到PostgreSQL開(kāi)發(fā)團(tuán)隊(duì)前,Josh Berkus曾參與各種軟件的開(kāi)發(fā),包括OpenOffice.org, Microsoft SQL Server, Oracle PL/SQL, 和 (shudder) COM+。他還寫(xiě)過(guò)Perl。
在Josh Berkus多彩的生活中,它曾經(jīng)做過(guò)雕刻師、陶藝師、糕點(diǎn)面包師、勞動(dòng)組織者、說(shuō)客、法律助理、專(zhuān)業(yè)的募捐活動(dòng)者等。他認(rèn)為這些經(jīng)歷給了他更廣闊的視野,遠(yuǎn)比在硅谷的生活重要,但也許這是在開(kāi)玩笑。從1993年起他就生活在舊金山。
1.技術(shù)層面問(wèn)題是管理層面問(wèn)題的折射:如果一個(gè)公司在它的軟件中有長(zhǎng)期解決不掉的問(wèn)題,我必然能證明這個(gè)公司在管理工作中有長(zhǎng)期沒(méi)有解決的問(wèn)題。
2.三種情況你永遠(yuǎn)遇不到:
a. 慷慨的工期;
b. 爽快付款的客戶;
c. 精確完整的文檔說(shuō)明。
3.有一半的應(yīng)用項(xiàng)目都是長(zhǎng)壽的:“臨時(shí)、一次性”的項(xiàng)目應(yīng)用通常會(huì)延續(xù)數(shù)年,如今仍然有誕生于上世紀(jì)70年代的代碼在運(yùn)行。記著要為這些長(zhǎng)壽的情況做計(jì)劃。
4.低劣的客戶會(huì)毀掉你的生意:你的成功的一半來(lái)自于有能力識(shí)別那些劣質(zhì)的客戶、能夠避開(kāi)他們或在他們無(wú)休止的消耗你的時(shí)間和資源前終止和他們的合同。永遠(yuǎn)避開(kāi)他們,即使他們能給你帶來(lái)補(bǔ)償。
5.Ask Not What’s Possible:問(wèn)題不是你能做出什么,問(wèn)題是客戶是否有愿望為它出錢(qián),有多大的耐心去等待。
6.在時(shí)間和錢(qián)的換算上使用對(duì)數(shù)運(yùn)算:例如,消減20%的時(shí)間需要雙倍的預(yù)算資金。消減30%的預(yù)算需要四倍的總時(shí)間。
7.所有的預(yù)估都是樂(lè)觀的:一個(gè)新的應(yīng)用軟件的開(kāi)發(fā)會(huì)耗用掉三倍于你預(yù)期的時(shí)間,2倍于你的預(yù)算。反之亦然。
8.你永遠(yuǎn)不會(huì)有足夠的時(shí)間應(yīng)付三件事:
a) 軟件規(guī)格文檔和原型
b) 說(shuō)明文檔
c) 代碼維護(hù)
9.所有有業(yè)務(wù)內(nèi)容的應(yīng)用軟件里都會(huì)有一些不倫不類(lèi)的怪物,它們可能是一些事務(wù)或一些數(shù)據(jù),抗拒你所有的把它納入定義好的業(yè)務(wù)流程中的努力。這些怪物既是***數(shù)據(jù)集成無(wú)法實(shí)現(xiàn)的阻因,也是至少30%麻煩事端的來(lái)源。
10.不要說(shuō)是重構(gòu):客戶永遠(yuǎn)不會(huì)為代碼整理工作付款,即使這是他們需要的。想想辦法找個(gè)其它的名詞來(lái)代替“重構(gòu)”,以此來(lái)讓這種工作能夠完成。
11.你拖延越長(zhǎng)的時(shí)間去重構(gòu),重構(gòu)就會(huì)用掉你越長(zhǎng)的時(shí)間。開(kāi)發(fā)期主要原型和方案上的調(diào)整尤其致命。
12.一定要簽合同,即使只是一天的工作。同樣,使用你自己的合同,而不是客戶的合同,讓一個(gè)真正的律師為你寫(xiě)一份合同。這是值得的。
13.合同簽訂過(guò)程可以當(dāng)作項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)的一個(gè)石蕊測(cè)試。如果客戶花大量的時(shí)間在合同細(xì)節(jié)上糾纏,那么項(xiàng)目真正實(shí)施過(guò)程(或付款過(guò)程)估計(jì)就會(huì)很困難。如果客戶在一些奇怪含混的條款上堅(jiān)持不讓步,那他們就是打算利用這些條款。
14.客戶的記性很差:不管和他們簽訂過(guò)什么,他們總會(huì)忘記幾天前答應(yīng)過(guò)什么。備案所有的需求和變更,并備份。
15.永遠(yuǎn)不要答應(yīng)一個(gè)固定的承包價(jià)。除非完全相同的任務(wù)你之前做過(guò)一次。
16.第三方參與者都是沒(méi)能力的:當(dāng)一個(gè)任務(wù)依賴于,甚至只是部分的依賴于一個(gè)第三方廠商的生產(chǎn)速度,文檔或產(chǎn)品質(zhì)量,當(dāng)這些不在你的直接控制中時(shí),永遠(yuǎn)不要接受一個(gè)固定標(biāo)價(jià)或成功才付款的合同。當(dāng)有數(shù)據(jù)交換或需要修改別人的代碼時(shí),不要接受固定標(biāo)價(jià),永遠(yuǎn)不要。
17.客戶都是沒(méi)品位的:永遠(yuǎn)不要讓客戶決定你的開(kāi)發(fā)工具、合作商或工作環(huán)境?;蛘?,要為放棄這些權(quán)利收取額外的報(bào)酬。
18.所有的會(huì)議都要收費(fèi),否則你的半個(gè)生命的時(shí)間都要用于參加這些會(huì)議。
19.儲(chǔ)備足夠的資金:通常,如果一個(gè)客戶意外的延遲了一個(gè)月付款,那所有的客戶都可能這樣。永遠(yuǎn)儲(chǔ)備能支撐60天的資金。
20.嚴(yán)重延遲的項(xiàng)目永遠(yuǎn)不會(huì)竣工。通常,任何一個(gè)項(xiàng)目,如果它150%的超出了預(yù)定的工期,那它就是有嚴(yán)重的管理上的問(wèn)題在***的阻攔它完工。
英文原文:20 Rules of Software Consulting
譯文鏈接:http://www.aqee.net/20-rules-of-software-consulting/


















