In Extreme Programming Explained, Kent Beck writes:
He goes on to explain the human effect on quality:
In this light, it looks as if we should always strive for the highest standard of quality. This would, of course, make me very happy. But is the customer willing to pay for it? I think the important concept here is the difference between internal and external quality. Whenever I meet someone who works in an XP environment, they always tell me that one of the reasons they love coming to work each morning is that they know they'll be allowed to do their best work. If you take that away, XP won't work. It's good to have 100% successful unit tests. In the long run, it speeds up development time. Internal quality should be a given. External quality can be defined as a set of features. For example:
Negotiating with the customer on external quality doesn't mean skimping on acceptance tests or deliberately producing unstable code. It means that the customer asks for a certain standard of quality and pays for it. If they want a system to handle all exceptions, that should be in the story or multiple stories. Story 1 says to implement this functionality; story 2 says to make the functionality work with n concurrent users hammering it. |