軟件開(kāi)發(fā)通常需要團(tuán)隊(duì)成員的協(xié)作,選擇軟件開(kāi)發(fā)團(tuán)隊(duì)至關(guān)重要,換句話說(shuō),那些和軟件開(kāi)發(fā)相關(guān)的事情,是由不同的人完成的。而且,一件事情的完成情況,可能會(huì)影響另一個(gè)人正在做的另一件事情。在這種情況下,僅僅依靠個(gè)人的想法,片面決定自己的工作內(nèi)容,就可能會(huì)對(duì)團(tuán)隊(duì)目標(biāo)的實(shí)現(xiàn)造成負(fù)面的影響。有一種例外情況,如果團(tuán)隊(duì)成員非常穩(wěn)定,而且他們?cè)陂L(zhǎng)期的共事中形成了一種默契,也許不用過(guò)多強(qiáng)調(diào)過(guò)程的意義。
當(dāng)人們需要共同完成一件事情時(shí),常常需要一些契約來(lái)規(guī)范人們的行為。在軟件開(kāi)發(fā)中,這些契約以過(guò)程的形式存在著。為了使契約更加合理,選擇軟件開(kāi)發(fā)團(tuán)隊(duì)需要對(duì)過(guò)程進(jìn)行系統(tǒng)地思考和總結(jié)。這是一種持續(xù)的行為。另外,在軟件開(kāi)發(fā)實(shí)踐中,過(guò)程會(huì)不斷地得到優(yōu)化。那些更合理的過(guò)程,會(huì)被保存下來(lái)并重復(fù)使用,最終成為知識(shí)資產(chǎn)的一部分。在理想的情況下,CMM所關(guān)注的軟件開(kāi)發(fā)過(guò)程,應(yīng)該是解決軟件開(kāi)發(fā)中各種混亂現(xiàn)象的一種理想方案。但是,在現(xiàn)實(shí)中,CMM往往被很多軟件開(kāi)發(fā)組織、甚至軟件開(kāi)發(fā)人員個(gè)人所排斥。有一種說(shuō)法是這樣的。因?yàn)檐浖?xiàng)目的計(jì)劃經(jīng)常受各種不確定的因素干擾,所以,要保證嚴(yán)格遵守繁瑣的過(guò)程是不現(xiàn)實(shí)的。
這種想法是錯(cuò)誤的。在選擇軟件開(kāi)發(fā)團(tuán)隊(duì)實(shí)踐中,軟件開(kāi)發(fā)費(fèi)用是多少?我們經(jīng)常會(huì)遇到很多模糊的反對(duì)意見(jiàn)。在不成熟階段產(chǎn)生的判斷,被固定成一些錯(cuò)誤的想法,而這些錯(cuò)誤想法,又會(huì)阻止一切邁向成熟的嘗試。糟糕的是,這些反對(duì)意見(jiàn)往往來(lái)自掌握話語(yǔ)權(quán)的軟件開(kāi)發(fā)人員。這有點(diǎn)像司法中的“有罪認(rèn)定”。原告(反對(duì)者)沒(méi)有舉證的義務(wù),當(dāng)他指控一個(gè)人或一件事的時(shí)候,只需要一分鐘的時(shí)間。這有點(diǎn)不公平。雖然我并不完全認(rèn)同CMM,但是,我仍然非常感慨。因?yàn)檫@種“有罪認(rèn)定”,很多軟件開(kāi)發(fā)組織甚至放棄了嘗試了解CMM的機(jī)會(huì)。我一直認(rèn)為,排斥CMM是錯(cuò)誤的。CMM中包含了很多有價(jià)值的想法,盡管它很少提及人的因素(在敏捷軟件開(kāi)發(fā)中,人的因素得到了充分的關(guān)注,甚至有被夸大的嫌疑)。