有一個項目,客戶在美國,僱傭的開發團隊在中國。客戶說開發人員的技術能力非常好,但就是提交的代碼Bug太多。所以客戶每次都要花很多時間來測試和溝通那些Bug。因此客戶對那個團隊的工作不算滿意。
下面是我的簡單分析和建議。
Bug多有兩種基本情況:一是開發人員沒有弄明白需求是什麼;二是需求弄明白了,但是設計和實現的質量有問題。
對於任何一種情況,都可以通過分析以往的Bug的產生原因來提出修正方案。
建議從客戶提出的那些Bug裏,分析哪些是由於需求溝通沒有達成一致或者需求溝通不充分造成的。然後要看爲什麼沒有達成一致,以及在哪些方面不充分。是因爲語言上的問題導致的雙方的誤解嗎?對某個功能執行的前提條件和後置條件都仔細考慮了嗎?對於UI,考慮到各種異常數據了嗎?考慮到數據格式了嗎?考慮數據量大小了嗎?。。。溝通需求的時候,我們總是有很多假定,但是這些假定是在自己腦子裏的,客戶的假定也在他的腦子裏,都需要說明白。爲了避免重複地溝通這些假定,可以有一個簡單的文檔來記錄一些公共的需求。
還要分析哪些Bug是由於設計上欠考慮或者實現時的錯誤導致的。對於每個類的每個方法,也需要考慮前置條件和後置條件,還有其他的非功能性需求。把這些分析清楚其實就是爲每個方法定義了入口和出口條件,其實也就是將需求分配到了每個類的每個方法上。按照這些分配了的需求來實現。
還有的Bug是因爲修改代碼引起的。重構是不可避免的。但是如何保證重構能不引入新的Bug,如何保證已經修復Bug不再出現?辦法是自動化測試和持續集成。
效率不是快速編碼,而是一次把事情做好。返工是造成效率低的重要原因。所以,除了我們積極的工作態度,熟練的技能之外,儘可能把事情‘一次做好’的理念也是非常重要的。一次做好意味着每天提交的代碼都是經過測試的,並且只有非常少的Bug。
個人建議,僅供參考。