軟件開發(fā)從產(chǎn)品設(shè)計到產(chǎn)品上線,再到運營、維護和更新,有一個艱難而復(fù)雜的過程。 為了效率,很多管理者不斷地推動產(chǎn)品進度,不斷壓縮開發(fā)時間,或者在一個開發(fā)周期內(nèi)不斷增加任務(wù)。 這在一定程度上可以讓開發(fā)者集中精力,加快進程,提高效率。 但這種方法存在很多問題。 僅僅關(guān)注速度會增加產(chǎn)品的缺陷數(shù)量。 開發(fā)人員沒有時間自測,開發(fā)階段能發(fā)現(xiàn)的缺陷需要在測試過程中發(fā)現(xiàn)。 這不僅增加了返工率,而且還分散了測試人員進行深入測試的注意力。 很多隱藏的缺陷在測試階段是無法發(fā)現(xiàn)的。
另外,如果時間太緊張,開發(fā)者也沒有時間做一些必要的架構(gòu)升級和代碼重構(gòu)。 很多系統(tǒng)如果沒有在適當(dāng)?shù)臅r間內(nèi)進行升級或優(yōu)化,后期優(yōu)化的復(fù)雜度就會大很多。 如果不進行優(yōu)化,系統(tǒng)的復(fù)雜度將會越來越大。 復(fù)雜性就像一個不斷生長和繁殖的有機體,一旦失去控制,就會變得像癌細(xì)胞一樣難以對付。 解決辦法就是早點認(rèn)識到問題并解決它。 開發(fā)者應(yīng)該有一些時間來思考這些問題并優(yōu)化系統(tǒng)。 這樣既可以改善產(chǎn)品的外觀,也可以提高建筑的質(zhì)量。
有時,質(zhì)量是效率的一部分。 例如,如果架構(gòu)質(zhì)量提高了,開發(fā)人員的工作量就會減少。 當(dāng)代碼質(zhì)量好時,運維工作量就會減少。 有時效率是質(zhì)量的一部分。 比如順豐、京東物流等公司的配送效率較高,讓客戶感覺服務(wù)質(zhì)量好。
如何平衡質(zhì)量與效率? 根據(jù)我的經(jīng)驗,具體問題要具體分析。 如果開發(fā)者已經(jīng)處于高速運行狀態(tài),并且由于需要照顧效率,代碼存在很多漏洞,那么開發(fā)者應(yīng)該放慢速度。 如果項目緊急,主管應(yīng)該增加人力資源,而不是催促開發(fā)人員加快項目進度。 因為繼續(xù)加速會進一步降低代碼質(zhì)量。 如果開發(fā)人員工作不太努力,速度很慢,那么主管會積極介入,幫助開發(fā)人員提高效率。 是提高效率還是降低速度效率和質(zhì)量的區(qū)別,應(yīng)由主管和開發(fā)人員在充分了解工作的重要性和緊迫性以及開發(fā)人員的工作狀況后共同決定。 總之,這是一個重要的決定效率和質(zhì)量的區(qū)別,不能簡單下結(jié)論,甚至不能只關(guān)注某一方面。