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