項(xiàng)目經(jīng)理如何避免降低軟件質(zhì)量
發(fā)布時(shí)間:2023/4/12 9:28:00
大多數(shù)軟件開發(fā)人員本能地認(rèn)為,項(xiàng)目經(jīng)理所要確保的項(xiàng)目按時(shí)完工與實(shí)現(xiàn)高質(zhì)量的軟件是矛盾的。這并不是因?yàn)轫?xiàng)目經(jīng)理們不想要高質(zhì)量的軟件,他們只是想在質(zhì)量的基礎(chǔ)之上,能夠按時(shí)完工和低于或等于預(yù)算的情況下,實(shí)現(xiàn)這個(gè)軟件。他們的努力可以成功地在降低成本和開發(fā)時(shí)間的同時(shí)不會(huì)對(duì)質(zhì)量造成影響,然而,他們有可能過(guò)度地使用了這些技巧。
盡管以下的這些項(xiàng)目管理技巧至少是很有意義的,在某些情況下,它們甚至是受到尊敬的技巧,但是它們都有造成災(zāi)難的潛在可能。時(shí)間盒(Time boxing)在破壞軟件質(zhì)量的事件列表上,時(shí)間盒的應(yīng)用排在第一位,當(dāng)您告訴某人在任務(wù)必須移交之前,他擁有多長(zhǎng)時(shí)間來(lái)完成這項(xiàng)工作,我說(shuō)“移交”而不是“完成”,因?yàn)樵跇O端情況下,這經(jīng)常意味著代碼并不完善,僅僅是抓緊時(shí)間去完成這項(xiàng)工作。
在大多數(shù)情況下,時(shí)間盒是有效的,因?yàn)樗梢宰龅剿募拢?.它迫使開發(fā)者能夠富有創(chuàng)造性地在他們的預(yù)算之內(nèi)發(fā)現(xiàn)解決方案。2.它排除了經(jīng)常添加在軟件中不必要的虛飾,而這些虛飾往往并不能增加軟件的價(jià)值。3.它防止開發(fā)者過(guò)度測(cè)試。4.目的只是要得到這件產(chǎn)品,在完整的質(zhì)量評(píng)價(jià)(QA)階段將會(huì)有詳細(xì)的測(cè)試,希望在此階段中能夠發(fā)現(xiàn)代碼中存在的問(wèn)題。
當(dāng)存在未知問(wèn)題,或技術(shù)沒(méi)有經(jīng)受檢驗(yàn),或沒(méi)有正確的方法來(lái)檢驗(yàn)結(jié)果的時(shí)候,時(shí)間盒就無(wú)能為力了;當(dāng)時(shí)間盒很小,而且在分配的時(shí)間之內(nèi)并沒(méi)有可能的辦法來(lái)實(shí)現(xiàn)目標(biāo)時(shí),這種方法也是無(wú)效的。換句話說(shuō),時(shí)間盒可以很好地解決一些問(wèn)題,比如充分理解、謹(jǐn)慎評(píng)估和執(zhí)行類的任務(wù);然而,也確實(shí)存在時(shí)間盒方法不能很好解決的問(wèn)題,比如研究和發(fā)展,還有解決問(wèn)題等等。如果時(shí)間盒是正確使用的,那么不應(yīng)當(dāng)導(dǎo)致測(cè)試到很糟糕的代碼,這些糟糕的代碼可能會(huì)導(dǎo)致數(shù)百個(gè)小時(shí)的診斷和返工。時(shí)間盒應(yīng)當(dāng)適度使用來(lái)確保最低的成本、最快和最高質(zhì)量的軟件。
誤期;所有人都要有奮斗的目標(biāo),里程碑是一種受到尊敬的方法,它用來(lái)激發(fā)人們向同一個(gè)目標(biāo)前進(jìn),這種動(dòng)力可以在很短的時(shí)間內(nèi)得到重大成果。然而,每個(gè)人都必須承認(rèn)里程碑所界定的時(shí)間并不是每次都能實(shí)現(xiàn),這時(shí)就必須要做出新的決定。項(xiàng)目經(jīng)理們必須要在團(tuán)隊(duì)中樹立里程碑的目標(biāo),以此來(lái)激勵(lì)他們前進(jìn),但是,當(dāng)里程碑確立的日期并不現(xiàn)實(shí),而且隊(duì)員們一再出錯(cuò),那就應(yīng)該重新評(píng)估這個(gè)計(jì)劃了。如果因?yàn)槟撤N特殊情況可以使這個(gè)日期不再重要,那么當(dāng)這個(gè)重要日期真正來(lái)臨的時(shí)候,整個(gè)團(tuán)隊(duì)就只有很小的動(dòng)力來(lái)實(shí)現(xiàn)這個(gè)里程碑日期。當(dāng)整個(gè)團(tuán)隊(duì)連續(xù)錯(cuò)過(guò)了10個(gè)日期,那么第11個(gè)日期還重要么?這就像喊著“狼來(lái)了”的孩子一樣。
如果在設(shè)定的時(shí)間線之后并沒(méi)有任何處罰,那么當(dāng)錯(cuò)過(guò)這個(gè)時(shí)間的時(shí)候就應(yīng)該強(qiáng)制執(zhí)行或者移動(dòng)整個(gè)時(shí)間線。長(zhǎng)遠(yuǎn)來(lái)看,不斷創(chuàng)造持續(xù)的壓力和令人迷惑的環(huán)境并不能創(chuàng)造出好的軟件,開發(fā)人員需要能夠?qū)P墓ぷ鞯沫h(huán)境。完成項(xiàng)目的日期和關(guān)于里程碑日期是否真實(shí)的混亂,經(jīng)常會(huì)導(dǎo)致開發(fā)人員在開發(fā)過(guò)程中跳過(guò)關(guān)鍵步驟或者造成難以發(fā)現(xiàn)的問(wèn)題。
假裝沒(méi)有錯(cuò)誤;在項(xiàng)目管理中,忽視并不是一種幸福。為了成功地完成項(xiàng)目,除了不可阻擋的政治壓力,向公司其他的員工介紹項(xiàng)目的風(fēng)險(xiǎn)也是必需的。幾乎每個(gè)軟件開發(fā)項(xiàng)目都有延期或超出預(yù)算或同時(shí)出現(xiàn)這兩種情況的風(fēng)險(xiǎn)。問(wèn)題在于,當(dāng)最終某一時(shí)間,這些風(fēng)險(xiǎn)真正變?yōu)楝F(xiàn)實(shí)的時(shí)候?qū)?huì)引起恐慌,每個(gè)人都在混亂中將項(xiàng)目其余的部分組裝在一起,整個(gè)項(xiàng)目的質(zhì)量將因?yàn)樽罱K輕率的裝配而遭受損失。當(dāng)然,當(dāng)整個(gè)項(xiàng)目還沒(méi)有落后于計(jì)劃之前,這一問(wèn)題還不會(huì)充分暴露出來(lái),然而,大多數(shù)項(xiàng)目都有辦法只讓項(xiàng)目的某些部分落后一點(diǎn)點(diǎn),而幾乎每個(gè)項(xiàng)目都有過(guò)于倉(cāng)促的風(fēng)險(xiǎn),這是因?yàn)楣芾韺釉诤荛L(zhǎng)一段時(shí)間之內(nèi)都在項(xiàng)目沒(méi)有任何問(wèn)題之后得知項(xiàng)目的真實(shí)狀態(tài)。
忽視相關(guān)性;在軟件開發(fā)中,我們有很多技巧可以用來(lái)延遲相關(guān)性,我們可以停用一些函數(shù)、移動(dòng)相連的基本架構(gòu),或者繞開眾多的錯(cuò)誤處理,在正確使用的情況下,所有這些技巧都可以幫助推進(jìn)一個(gè)項(xiàng)目,然而,當(dāng)為了完成項(xiàng)目,而這些技巧的成本因素又沒(méi)有被考慮到整個(gè)計(jì)劃當(dāng)中時(shí),就埋下了煩惱的種子。很多時(shí)候,在項(xiàng)目中排列軟件開發(fā)的順序是非常具有挑戰(zhàn)的事情,相關(guān)性并不容易被發(fā)現(xiàn),因此也就不可避免地有很多相關(guān)性因素沒(méi)有被安排到計(jì)劃當(dāng)中。為這些不可預(yù)見的相關(guān)性安排日程表可以讓人變得瘋狂,因此,壓制相關(guān)性的方法是經(jīng)常使用的,但是,如果過(guò)度使用了這些技巧,這些費(fèi)用可能經(jīng)常會(huì)占據(jù)項(xiàng)目總成本中很重要的一部分,而且直到項(xiàng)目的最后才會(huì)被發(fā)現(xiàn)。
所以要確信您現(xiàn)在所做的對(duì)于管理相關(guān)性是必需的,不會(huì)添加過(guò)多的成本,而且是整個(gè)軟件開發(fā)項(xiàng)目中必不可少的一部分。當(dāng)項(xiàng)目經(jīng)理不能在成本與降低相關(guān)性的便利中取得平衡,那么他們草率地組裝的代碼將會(huì)展示出質(zhì)量問(wèn)題。