The customer decides the quality

… but you can choose your customers.

Last week Michel wrote a nice post about a hot topic: Is focusing on quality stealing from your customer?
I proposed to talk about the same topic at the Belgium Agile Open 2011 and wanted to share the results.

How a developer and a customer think about quality differ a lot.

These are the kind of things developers think about when defining quality:
  • Is the code readable and maintainable?
  • Is the test coverage high?
  • Is there little code duplication?
  • Is the level of technical debt acceptable?
  • Is the code clean?
  • Are best practices applied? No anti-patterns?
No surprise there, we just want to prevent crap because we’ve seen enough of this, and we know it makes projects fail or even can bring a company down. But a customer really doesn’t care about these things. So, what does he care about?

Well basically the customer just wants the working product with the functionality he asks for, and he wants it fast!

It’s our job as developers to ask the right questions to get a grasp of the quality the customer wants:
  • Will the code be thrown away after 3 months?
  • How extensible should the product be?
  • How do you expect to scale?
  • What is likely to change?
  • How will the product be maintained?
The bad news is that it should be the customer who decides what level of quality he wants. It’s a business decision.

The good news is that you don’t need to work with a client who doesn’t care about continuous integration, iterative development, automated testing,... That is also a business decision. :-)

In the end we just need to find the sweet spot of course.