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