Just this morning, the common lament appeared on a LinkedIn post: We always have time to do it over but never time to do it right in the first place. This is by no means new, there are people who have been saying this or similar comments for years and they long predate software.
If you read some of the original Quality Pioneers (who were looking at manufacturing and not at software) they had tried to calculate the cost of not creating the correct part in the first place. While the companies they studied realised some of the costs there were a lot of hidden costs that had not been considered. The obvious and calculated ones were: Rework, Extra testing, Inspections, and Recalls. However, there were all the costs that were considered to be ‘part of doing business’ such as: Excessive Field Service Expenses, Complaint Handling, Late paperwork and Time with a Dissatisfied Customer. The average cost was considered to be in the neighbourhood of 30% of Gross Profits. Suffice to say, with Net Profit being somewhat smaller, regaining that 30% would easily make the difference between a Net profit and Loss in any given year.
Coming back to Software we have a particular case which occurred recently. (The names have been withheld to protect the guilty).

The product was for internal use to support service for an external customer. The external customer had made some changes and required updates to the provided service. The system was updated and testing commenced:

  • Unit testing was done well.
  • Integration Testing was a little constrained.
  • System Testing was done well.
  • Acceptance Testing was a little tight for time but was completed.
  • Other types of testing were completed as required.

The problem came as a result of corrections and changes being made to each environment as the program moved through – the corresponding changes were not made to the previous environments. No problems with the current release. the problem arose the following year when a few further changes were required. It took about 6 months to fully reconstruct the development environment so that the work could commence. We never have time to do it right the first time but we always have time to do it over. We never realise the benefits of doing it right the first time.