曾經(jīng)對(duì)軟件測(cè)試很輕視,因?yàn)槲夷菚r(shí)很無知,只是一名普通的中國(guó)程序員,這也是那時(shí)絕大多數(shù)程序員的心態(tài),那時(shí)中國(guó)程序員最講究“編程才是硬道理”。
如今卻非常熱愛軟件測(cè)試,包括軟件測(cè)試工具,方法,理論,技術(shù)。因?yàn)槲以?年的測(cè)試工作中,深刻體會(huì)到軟件測(cè)試的重要性和趣味性。此時(shí),我已經(jīng)跳出了“小程序員”的圈子,以軟件系統(tǒng)工程的更大視角審視軟件測(cè)試這項(xiàng)工作。
很長(zhǎng)時(shí)間以來我一直被下面的問題而困惑,有些問題至今仍然只是具有膚淺的認(rèn)識(shí),而且,我感覺我做的測(cè)試項(xiàng)目越多,閱讀的測(cè)試書籍越多,我越感到我對(duì)軟件測(cè)試理解的越膚淺。因?yàn)槲以絹碓礁惺艿?a class="Channel_KeyLink" >軟件測(cè)試的廣度和深度的無限性,它像大海寬廣,像宇宙那樣深邃。 為什么要進(jìn)行軟件測(cè)試?軟件測(cè)試的前途如何?軟件測(cè)試的工具和思想誰(shuí)更重要?軟件測(cè)試的最高境界是什么?
軟件測(cè)試是保證軟件質(zhì)量的重要活動(dòng),是軟件項(xiàng)目實(shí)施的不可缺少的環(huán)節(jié)。軟件測(cè)試的直接目的是發(fā)現(xiàn)軟件中存在的缺陷。此為測(cè)試的有效性。
在軟件項(xiàng)目沒有結(jié)束之前的全部軟件缺陷主要由軟件開發(fā)人員負(fù)責(zé),因?yàn)檐浖毕輥碜猿绦騿T的編程。軟件項(xiàng)目結(jié)束后的軟件缺陷主要由軟件測(cè)試人員負(fù)責(zé),因?yàn)?a class="Channel_KeyLink" >軟件測(cè)試人員沒有在軟件發(fā)布之前的測(cè)試中沒有發(fā)現(xiàn)隱藏的錯(cuò)誤。 但這不是絕對(duì)的,因?yàn)檐浖?xiàng)目是一個(gè)系統(tǒng)工程,軟件質(zhì)量牽扯到多個(gè)部門和人員,以及需求分析,設(shè)計(jì),編碼等各個(gè)環(huán)節(jié)和過程。軟件測(cè)試只能證明軟件存在缺陷,不能保證軟件沒有錯(cuò)誤。
軟件測(cè)試不是萬能的,因?yàn)椴豢赡馨l(fā)現(xiàn)全部的軟件缺陷,而且軟件的功能和性能不是由測(cè)試決定的。此為測(cè)試的有限性。
軟件測(cè)試目前主要以手工測(cè)試為主,自動(dòng)測(cè)試工具雖然很多,但實(shí)際應(yīng)用的廣度和深度還有很大潛力,自動(dòng)將有很大的發(fā)展空間!。
軟件驅(qū)動(dòng)開發(fā)的觀點(diǎn)說明了測(cè)試與編程的關(guān)系,測(cè)試應(yīng)該貫穿于軟件開發(fā)的整個(gè)生命周期,編程只是軟件開發(fā)的一個(gè)環(huán)節(jié)。但往往大家非常重視軟件編程,把測(cè)試作為編程后的一個(gè)輔助環(huán)節(jié)。這是典型的本末倒置。 軟件測(cè)試的缺陷管理流程非常重要,報(bào)告的軟件缺陷的質(zhì)量,應(yīng)該由他人驗(yàn)證,做到責(zé)任明確,方法簡(jiǎn)便可行。
軟件測(cè)試技術(shù)不斷進(jìn)步,但總體來看,國(guó)內(nèi)的測(cè)試重視程度還不夠,但已經(jīng)發(fā)展很快。差不多兩年之前,國(guó)內(nèi)計(jì)算機(jī)書店中關(guān)于軟件測(cè)試的書籍非常稀少,如今卻琳瑯滿目,異彩紛呈。
軟件測(cè)試是個(gè)可以很快入門的職業(yè),門檻不高,但是,不要認(rèn)為什么人都可以做好軟件測(cè)試。因?yàn)闀?huì)做和做好是兩個(gè)概念。軟件測(cè)試人員最好具有軟件開發(fā)經(jīng)驗(yàn),理解軟件工程的知識(shí)。這是提高軟件測(cè)試能力的基礎(chǔ)。對(duì)于剛剛畢業(yè)的學(xué)生,如果希望今后從事軟件開發(fā),那么,先從事一段時(shí)間的測(cè)試可能更有利于今后的編程。而對(duì)于具有多年編程經(jīng)驗(yàn)的程序員,如果改行做測(cè)試,更容易提高技術(shù)。 軟件測(cè)試不是孤立的活動(dòng)或過程,需要開發(fā)和市場(chǎng)人員的參與和交流,需要軟件質(zhì)量保證人員SQA的積極配合和溝通。
軟件測(cè)試的技術(shù)不斷進(jìn)步,與具體測(cè)試技術(shù)相比,掌握測(cè)試的核心思想比具體技術(shù)更重要!測(cè)試的最高境界在于運(yùn)用最簡(jiǎn)單有效的測(cè)試技術(shù),最大限度的發(fā)現(xiàn)軟件缺陷!
應(yīng)當(dāng)承認(rèn),目前國(guó)內(nèi)的軟件測(cè)試工程師的地位和待遇仍然很低,而且不少測(cè)試人員存在浮躁的心態(tài)(我甚至感到整個(gè)軟件行業(yè)始終存在著浮躁的泡沫)。如何改變這種局面,這應(yīng)該是個(gè)漫長(zhǎng)的過程。當(dāng)整個(gè)IT業(yè)真正以客戶為上帝時(shí),當(dāng)軟件質(zhì)量成為決定企業(yè)生存和發(fā)展的決定因素時(shí),當(dāng)軟件測(cè)試工程師的測(cè)試工作給軟件企業(yè)帶來更大的經(jīng)濟(jì)效益時(shí),軟件測(cè)試工程師才會(huì)得到應(yīng)有的尊重!
軟件開發(fā)是一項(xiàng)復(fù)雜的、創(chuàng)造性的協(xié)作式游戲。作為游戲它自然存在著樂趣,所以程序員們才會(huì)樂此不疲,前仆后繼。首先、這種快樂源于一種創(chuàng)造事物的快樂。其次、這種快樂來自于一種開發(fā)出對(duì)別人有用的東西時(shí)所帶來的滿足感。第三、快樂源自開發(fā)過程中,親眼看到軟件按自己預(yù)先設(shè)想的那種效果運(yùn)行時(shí)所帶來的迷人魅力。第四、快樂源自開發(fā)過程中持續(xù)學(xué)習(xí)的快樂。最后、快樂源自開發(fā)過程中,我們能象詩(shī)人一樣,僅憑自己的想像,來建造自己的城堡時(shí)帶來的快樂。編程的快樂在于它不僅滿足了我們內(nèi)心深處進(jìn)行創(chuàng)建的渴望,而且還喚醒了每個(gè)人內(nèi)心的情感。不幸的是,同樣作為游戲它也有苦惱的一面:首先、苦惱來自追求完美主義。其次、苦惱來自總是由他人來設(shè)定目標(biāo)、供給資源、提供信息。第三、苦惱來自于尋找瑣碎的BUG卻是一項(xiàng)枯燥的、重復(fù)性的活動(dòng)。第四、人們通常希望在項(xiàng)目接近結(jié)束時(shí),能收斂得快一些,然而,情況卻是越接近完成,收斂得越慢。最后、苦惱來自當(dāng)投入大量的辛苦勞動(dòng)后,產(chǎn)品發(fā)布時(shí)卻面臨著陳舊過時(shí)的危險(xiǎn)。作為軟件開發(fā)者,我們別無選擇,只有適應(yīng)它們,就這樣痛并快樂著地面對(duì)每一天。
來自領(lǐng)導(dǎo)的信息只有25%被下級(jí)知道并正確理解,從下到上的反饋信息不超過10%,平等交流的信息則可達(dá)到90%以上。平等造就信任,信任增進(jìn)交流。有效地進(jìn)行適當(dāng)?shù)囊庖娊涣鳎瑢?duì)一個(gè)組織的氣候和生產(chǎn)力會(huì)產(chǎn)生有益和積極的影響。使顧客滿意并和他們面對(duì)面地交流,才是蠃得市場(chǎng)的關(guān)鍵。
管理是一種控制性游戲,在游戲面前,你只有二種選擇:或者,你確信自己能蠃,于是投入足夠多的能量來蠃得一切;或者,你不進(jìn)行這個(gè)游戲,放棄它。然而,作為軟件項(xiàng)目管理者,你也應(yīng)該知道,早投入、高風(fēng)險(xiǎn)才會(huì)有高回報(bào)。逃避風(fēng)險(xiǎn)是致命的,因?yàn)檫@也會(huì)讓你得不到與風(fēng)險(xiǎn)同在的利益,久而久之,你就會(huì)面臨著被市場(chǎng)淘汰的危險(xiǎn)。風(fēng)險(xiǎn)是"遭受損失的可能性",由條件、結(jié)果以及周圍的環(huán)境構(gòu)成。風(fēng)險(xiǎn)和問題的區(qū)別在于:風(fēng)險(xiǎn)是尚未發(fā)生的問題,而問題是業(yè)也成真的風(fēng)險(xiǎn),昨天的風(fēng)險(xiǎn)可能會(huì)是今天的問題。風(fēng)險(xiǎn)管理主要包括下面幾個(gè)方面:
第一、風(fēng)險(xiǎn)識(shí)別:
從頭腦想像中抽取出各種風(fēng)險(xiǎn)并加以篩選,再加上在整個(gè)開發(fā)過程中,保持持續(xù)不斷的風(fēng)險(xiǎn)發(fā)現(xiàn)機(jī)制,以發(fā)現(xiàn)新的風(fēng)險(xiǎn)。
第二、風(fēng)險(xiǎn)分析:
對(duì)風(fēng)險(xiǎn)出現(xiàn)的可能性和潛在的危害性進(jìn)行量化分析。
第三、應(yīng)急計(jì)劃:
如果識(shí)別出的風(fēng)險(xiǎn)真的出現(xiàn),你將采取的應(yīng)急措施。
第四、風(fēng)險(xiǎn)緩解:
為了使應(yīng)急計(jì)劃得以有效實(shí)施,必須在風(fēng)險(xiǎn)轉(zhuǎn)化為真之前所采取的措施。
第五、持續(xù)的監(jiān)控:
跟蹤需要管理的風(fēng)險(xiǎn),尋找風(fēng)險(xiǎn)出現(xiàn)的跡象。
項(xiàng)目面臨的某些風(fēng)險(xiǎn)可能是致命的,發(fā)生時(shí)會(huì)使項(xiàng)目嚴(yán)重滯后或直接廢棄。這類風(fēng)險(xiǎn)是最需要管理的,但有效的管理它們也許會(huì)使你與你的上級(jí)發(fā)生沖突(如時(shí)間上最后期限等),對(duì)于這類風(fēng)險(xiǎn)往往超出了你的管理權(quán)限,可以先將它們列為項(xiàng)目假定風(fēng)險(xiǎn),然后把它們轉(zhuǎn)交給上級(jí)來管理。風(fēng)險(xiǎn)可能出自技術(shù)、政治、經(jīng)濟(jì)、資源或其它各個(gè)方面,幾乎無所不在,并且會(huì)對(duì)項(xiàng)目開發(fā)、市場(chǎng)占有率或是達(dá)到項(xiàng)目目標(biāo)(如進(jìn)度、預(yù)算、質(zhì)量等)造成災(zāi)難性后果。但在所有軟件項(xiàng)目中,通常會(huì)共存五大核心風(fēng)險(xiǎn),分別如下:
第一、缺乏合理的進(jìn)度安排
這是導(dǎo)致項(xiàng)目滯后的最主要的原因。首先、它源于開發(fā)人員們普遍存在的樂觀主義精神,我們總是期待在實(shí)現(xiàn)過程中不會(huì)碰到困難,然而我們的構(gòu)思是有缺陷的,因此總會(huì)發(fā)現(xiàn)BUG。
第二.它源于一種錯(cuò)誤的認(rèn)識(shí),人員數(shù)量和開發(fā)時(shí)間是可以互換的,既投入兩倍的人數(shù)會(huì)在一半時(shí)間內(nèi)完成開發(fā)工作。然而,這種理論卻忽略了隨著人數(shù)的增加,相應(yīng)的也會(huì)增加新人培訓(xùn)和人們相互交流所需的負(fù)擔(dān),另外,還有任務(wù)重新分配所造成工作中斷帶來的負(fù)擔(dān),正如Alistair Cockburn所說:"最有效的交流方式是面對(duì)面的交流"當(dāng)3、5個(gè)人的時(shí)候很容易做到這種交流方式,隨著人數(shù)的增長(zhǎng),再也很難做到這種交流方式。交流成本的增加與培訓(xùn)新人所需時(shí)間成本的增加、以及任務(wù)重分配導(dǎo)致工作中斷成本的增加,直接導(dǎo)致一種結(jié)果:向進(jìn)度落后的項(xiàng)目中增加人手,只會(huì)使進(jìn)度更加落后。
第三、源于空泛的估算,管理人員特別是高層管理人員為了滿足顧客期望的日期而造成的不合理進(jìn)度安排。如果分配的時(shí)間一開始就不夠,不管高層領(lǐng)導(dǎo)威脅有多么嚇人,工作也無法按時(shí)完成,如果人們察覺到管理者可能濫用權(quán)力來懲罰自己,他們就會(huì)感覺到威脅,沒有安全感。安全感的缺乏會(huì)讓人們反對(duì)變化,而在所有成功項(xiàng)目中,變化是唯一不變的要素之一,除非感到安全,否則人們就不會(huì)去迎接變化,只會(huì)按部就班,這樣往往喪失了很多走捷徑的好機(jī)會(huì),而這些機(jī)會(huì)原可以大大縮減時(shí)間進(jìn)度的。第四、如果你沒有認(rèn)真估算產(chǎn)品規(guī)模,那么你預(yù)計(jì)的進(jìn)度就是空中樓閣,唯一的依據(jù)只是你的希望。在估計(jì)產(chǎn)品規(guī)模時(shí),除了正常的時(shí)間計(jì)算以外,不但應(yīng)該將"可能需要做"的事情所需工作時(shí)間加上,還要將某些"可能不需要做"的事情所需工作時(shí)間加上。項(xiàng)目的超期不應(yīng)歸咎于開發(fā)者的低效率。
最后、項(xiàng)目的滯后不是一下子造成的,而是在一天天的不知不覺中造成的,有無數(shù)種方法可以浪費(fèi)一天的時(shí)間,但是沒有任何方法可以拿回一天的時(shí)間。高層管理者的不良反應(yīng)肯定會(huì)對(duì)信息的完全公開造成壓制;相反,仔細(xì)區(qū)分狀態(tài)報(bào)告、毫無驚慌地接收?qǐng)?bào)告、決不壓制下級(jí),將能鼓勵(lì)誠(chéng)實(shí)的進(jìn)度匯報(bào),而這會(huì)使你在第一時(shí)間掌握實(shí)際進(jìn)度,把握先機(jī),及早做出正確的修訂,從而避免了晚期才獲得這些實(shí)際信息時(shí),那種無力挽天時(shí)的無奈。此外、也可以在項(xiàng)目管理中設(shè)定一個(gè)合理的進(jìn)度安排和一個(gè)具有挑戰(zhàn)性的期望目標(biāo)完成時(shí)間。期望目標(biāo)和合理進(jìn)度不同,期望目標(biāo)完成時(shí)間,可以設(shè)為項(xiàng)目完成的成功率在30%左右時(shí)的日期,這樣很具有挑戰(zhàn)性,但不能強(qiáng)迫要求必須完成此期望目標(biāo)。畢竟,合理進(jìn)度安排才是更合理的時(shí)間安排。另外、需要指出的是現(xiàn)代敏捷方法論對(duì)此進(jìn)行了有效改進(jìn),如XP(極限編程)中,就利用用戶素材與CRC卡,進(jìn)行優(yōu)先級(jí)劃分并進(jìn)行快速增量迭代開發(fā),針對(duì)原來開發(fā)的產(chǎn)品或第一次迭代開發(fā)后的原型完成的功能量,來計(jì)算功能點(diǎn),從而估算每個(gè)CRC卡的功能點(diǎn),得到總功能點(diǎn)來推導(dǎo)出比較準(zhǔn)確的進(jìn)度安排。
第二、需求的變化
從項(xiàng)目的角度來說,需求總是向著膨脹的方向在變化。就連去掉某些已經(jīng)做好的東西,也是一種膨脹,因?yàn)樗黾恿斯ぷ髁?。開發(fā)人員交付的是用戶滿意程度,而不僅僅是實(shí)際的產(chǎn)品,用戶的實(shí)際需要會(huì)隨著程序的構(gòu)建和使用而變化。要知道,一個(gè)活著的軟件必須面對(duì)變化,只有死掉的軟件才不會(huì)有需求變化(沒人用了),我們應(yīng)該盡早面對(duì)現(xiàn)實(shí),而不是逃避,事先為它們做好思想準(zhǔn)備。變化是好事不是什么壞事。同樣,現(xiàn)代敏捷方法論強(qiáng)調(diào)對(duì)需求變化的快速響應(yīng),如XP(極限編程)就采用快速增量迭代開發(fā),來在短時(shí)間內(nèi)開發(fā)出功能不斷增強(qiáng)的原型軟件提交給用戶使用的方法,來快速響應(yīng)需求的變化。
第三、人員的變更
在我們有些管理者中,總是假設(shè)開發(fā)者都是可以隨便替換的,新員工馬上可以取代離去的老員工,多么愚蠢的假設(shè)。解雇員工或高的員工替換率最大的影響,是使軟件項(xiàng)目失去了連續(xù)性。這是在抱著這種假設(shè)的團(tuán)隊(duì)文化中,大量員工會(huì)在項(xiàng)目進(jìn)行到一半時(shí)離開,新來員工往往需要1到3個(gè)月的上道時(shí)間,在這段時(shí)間內(nèi),他們做不了什么,還經(jīng)常需要其它老員工的幫助,從而浪費(fèi)了其它老員工很多不必要時(shí)間,導(dǎo)致項(xiàng)目進(jìn)展更加緩慢,最終造成項(xiàng)目的很大損失。
另外、還有一種現(xiàn)象在中國(guó)軟件事業(yè)中普遍存在,當(dāng)正在進(jìn)行一個(gè)項(xiàng)目時(shí),另一個(gè)項(xiàng)目由于進(jìn)度落后或最后期限等原因所致,高層管理者就會(huì)從你的團(tuán)隊(duì)中抽掉一些人去到另一個(gè)項(xiàng)目中補(bǔ)墻。這種拆東墻補(bǔ)西墻的作法,往往導(dǎo)致的結(jié)果是兩個(gè)項(xiàng)目都會(huì)落后,因?yàn)樗粌H十分錯(cuò)誤作了團(tuán)隊(duì)人員可以隨意替換的假設(shè),而且還作了將開發(fā)人數(shù)與開發(fā)所需時(shí)間可以互換的錯(cuò)誤假設(shè)。盲目的認(rèn)為,投入大量人數(shù)后,新人馬上會(huì)投入新的工作,這樣項(xiàng)目開發(fā)所需時(shí)間就會(huì)成倍縮短。在這種組織文化中,是不會(huì)形成一支穩(wěn)定的團(tuán)隊(duì)的,成員整天只會(huì)忙碌著補(bǔ)自已的墻或?yàn)閯e人補(bǔ)墻,充當(dāng)著類似消防員的角色,那兒有火那兒就有我們的身影。
同樣,現(xiàn)代敏捷方法論非常注重人的能力,如XP中通過權(quán)力下放、教練角色、將團(tuán)隊(duì)緊密圍在一起并結(jié)對(duì)編程、小團(tuán)隊(duì)組成等方式,來組成一個(gè)強(qiáng)有力的團(tuán)隊(duì),由于有凝聚力,所以很少有大的人員變動(dòng),他們往往可以完成兩倍于他們?nèi)藬?shù)所能完成的任務(wù)。非常小的團(tuán)隊(duì)能夠產(chǎn)生非常大的物質(zhì)生產(chǎn)力,有時(shí)候,小團(tuán)隊(duì)可以在很短時(shí)間內(nèi)創(chuàng)造奇跡,而大型團(tuán)隊(duì)極少能做到。但是,小團(tuán)隊(duì)卻往往得不到足夠的政策支持,從而導(dǎo)致任由團(tuán)隊(duì)超編,這是一種病態(tài)組織文化所致。作為管理者必須明確知道,擁有一支穩(wěn)定的、有凝聚力的開發(fā)團(tuán)隊(duì)是組織最大的財(cái)富,而不是障礙。
第四、規(guī)約崩潰
這種情況只有兩種結(jié)果:要么發(fā)生,要么不發(fā)生,不會(huì)有不同程度的影響。但它真的發(fā)生時(shí),它會(huì)直接毀滅你的整個(gè)項(xiàng)目。在項(xiàng)目啟動(dòng)之初,項(xiàng)目各方需要通過一系列商談來確定需求的范圍,規(guī)約崩潰就是指這個(gè)談判過程的崩潰。在商談期間,很多時(shí)候當(dāng)遇到嚴(yán)重沖突時(shí),由于雙方都不愿意讓步,但又不想放棄這個(gè)項(xiàng)目,從而導(dǎo)致這些沖突被掩蓋起來。最終項(xiàng)目便朝著一個(gè)帶著缺陷的、含混不清的目標(biāo)前進(jìn)了,被掩蓋的問題暫時(shí)不會(huì)打擾你,但不是永遠(yuǎn)。盡管你可以含混說明一個(gè)產(chǎn)品,但不能含混構(gòu)造一個(gè)產(chǎn)品,所以,最終在項(xiàng)目晚期這些問題將發(fā)生,在大半甚至所有預(yù)算時(shí)間和金錢都已付出的時(shí)候,此時(shí),任何一方不再全力支持,都將使項(xiàng)目被取消。任何規(guī)格文檔中的含糊標(biāo)志著不同的系統(tǒng)參與者之間存在著未解決的沖突。只要在開發(fā)過程中有多個(gè)參與者,就一定會(huì)有沖突存在。談判困難而調(diào)解容易,如果兩個(gè)人的利益是完全或部分相斥的,預(yù)先做好安排,準(zhǔn)備好請(qǐng)雙方通過調(diào)解來解決沖突。同樣,現(xiàn)代敏捷方法論通過客戶的積極參與勝過合同談判的方試,來盡早發(fā)現(xiàn)和避免規(guī)約崩潰。
第五、低效率
對(duì)于項(xiàng)目成功而言,項(xiàng)目人員的素質(zhì)、人員的組織和管理是比使用的工具或采用的技術(shù)方法更重要的因素。團(tuán)隊(duì)質(zhì)量是項(xiàng)目成功最大的決定因素,對(duì)人的關(guān)注、激勵(lì)和培養(yǎng)勝過一切。項(xiàng)目管理人員的職責(zé)不是要人們?nèi)スぷ?,而是給人們創(chuàng)造工作的可能。創(chuàng)造力來自于個(gè)人,而不是組織架構(gòu)和流程,項(xiàng)目管理者面臨的中心問題就是如何設(shè)計(jì)架構(gòu)和流程,來提高而不是壓制人們的主動(dòng)性和創(chuàng)造力。通過權(quán)力的向下委派,從而產(chǎn)生了改進(jìn)的質(zhì)量、提高的生產(chǎn)率、高漲的士氣,進(jìn)而使中心的權(quán)威實(shí)際上得到了加強(qiáng)。就整體而言,組織機(jī)構(gòu)會(huì)更加融洽和繁榮。增加加班時(shí)間只會(huì)降低生產(chǎn)力,壓力之下的人們無法更快地思考既也會(huì)降低生產(chǎn)力。使用壓力和加班的真正原因是為了在項(xiàng)目失敗時(shí)讓人們看上去能好受一些。
正式的過程改進(jìn)程序需要花錢、花時(shí)間,特定的過程改進(jìn)工作還會(huì)延緩項(xiàng)目進(jìn)度,盡管最終會(huì)體現(xiàn)生產(chǎn)力上的收獲,它們也不可能抵消花在過程改進(jìn)上的時(shí)間。多種技術(shù)的改進(jìn)程序(如CMM提級(jí))很可能讓項(xiàng)目比不實(shí)施這些程序完成得更晚,對(duì)于人員超編的項(xiàng)目,標(biāo)準(zhǔn)過程會(huì)為多余的人們制造出足夠的工作,讓所有人都忙個(gè)不停,盡管很多是無用的,這也導(dǎo)致生產(chǎn)率低下。人員超編的團(tuán)隊(duì)往往生產(chǎn)率低下,因?yàn)樗鼈儓F(tuán)隊(duì)內(nèi)部耦合度提高,會(huì)議時(shí)間、重復(fù)勞動(dòng)和無效工作都會(huì)增加。理想的人員安排是在項(xiàng)目的大部分時(shí)間里由小型核心團(tuán)隊(duì)來做設(shè)計(jì)工作,在開發(fā)的最后階段再逐漸加入大量人手。如果不大幅度減少調(diào)試的時(shí)間,就沒辦法讓項(xiàng)目大幅度提前完成,而要成比例減少調(diào)試時(shí)間,就需要成比例增加設(shè)計(jì)所需時(shí)間,因?yàn)榻^大多數(shù)的錯(cuò)誤源于接口缺陷,編碼前進(jìn)行的正規(guī)而完善的設(shè)計(jì),可以大幅度減少錯(cuò)誤。同樣,現(xiàn)代敏捷方法論通過注重人、快速迭代開發(fā)、自組織的團(tuán)隊(duì)和提倡可持續(xù)的開發(fā)速度,來避免跑的過快導(dǎo)致團(tuán)隊(duì)精力耗盡、出現(xiàn)短期行為而導(dǎo)致崩潰的問題,從而保持了穩(wěn)定的生產(chǎn)率。
精兵簡(jiǎn)政是失敗公司使用的辦法,它讓員工負(fù)擔(dān)失敗的責(zé)任。成功公司的目標(biāo)應(yīng)該正好相反:興旺、發(fā)達(dá)、而人性化。
企業(yè)的最大風(fēng)險(xiǎn)則與價(jià)值相關(guān):在低價(jià)值的項(xiàng)目上浪費(fèi)資源,付出高價(jià)值的機(jī)會(huì)成本,就這是企業(yè)最大風(fēng)險(xiǎn)。勇于承擔(dān)風(fēng)險(xiǎn)是好事,但必須由收益來導(dǎo)航,愿意承擔(dān)多少風(fēng)險(xiǎn),必須取決于能獲得多少收益。真正的項(xiàng)目評(píng)估不是傾向于不斷削減成本,來提高價(jià)值,而是在風(fēng)險(xiǎn)與價(jià)值之間取得平衡點(diǎn)。通過不確定的價(jià)值和不確定風(fēng)險(xiǎn)組合效果的凈收益圖,來指導(dǎo)你把資本投入到最適當(dāng)?shù)牡胤健N覀兠總€(gè)軟件從業(yè)人員都必須明白:顧客真正需要的,是我們能夠給他的、某種他想得到的利益。