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