One of the key points of developing a product is getting the correct level of quality. Too much and you waste money on expensive resource gaining no benefit. Too low a level and you spend money fixing the issues or paying down the technical debt.
As ever I like to think of this in terms of cake.
Imagine, if you will, that the business Delicious Cakes Inc. is in the business of delivering delectable and delightful, devilishly good cakes. They’re a start up and the company consists of 1 very angry chef (he can and will move into a TV career at any moment if not satisfied), 4 engineers and a tester. Our chef represents our Product Owner and the others the faithful deliver team.
Our chef sets out his business objective:
As a chef at Delicious Cakes Inc.
I would like to make the most delectable and delightful cakes, indeed they should be devilishly good.
So that we can make enough money to launch my TV career
The delivery team understands this, they’ve eaten cakes before and they’re very keen to help their company succeed.
The chef also comes up with some stories detailing some of the tools he’s going to need along the way on his cake making business process.
As a chef
I want to be able to throw all of the ingredients in a bowl and mix them up
So that I can make a delicious cake mix
As a chef
I want to be able to throw my cake mix into an oven to cook them
So that I can bake my mix into a delightful cake
Now for the next part you will have to ignore the fact that you can purchase mixers and cookers off the shelf. That’s a completely different post but becomes increasingly pertinent when the delivery team fails to deliver value.
Instead Delicious Cakes Inc. requires these things to be built in-house. Now the delivery team put their heads down and talk technical solution. There first stab at a cooker and mixer are basic but workable, it takes them two weeks to deliver this. However they don’t discuss with the chef as they’ve decided it’s not good enough. Instead they ask questions like:
Is this good enough? What if we need to mix a lorry load of cake mix?
Is this good enough? What if the cake mix needs to be transported 160 miles away to satisfy the legendary cake shortage on the Isle of White?
Is this good enough? What if the chef wants to stand 50 feet from where the cake mix is and bake remotely?
Is this good enough? An oven at 160 degrees will take 25 minutes to cook the mix, what if there is a rush on?
Is this good enough? What if the chef is being mobbed by the paparazzi having sworn repeatedly on national television?
They move on from their basic but workable solution. They lock the doors and 15 months later reveal the mother of all mixers and the kind of oven that would keen the proudest of xenomorph at bay. They convince the chef that the results are the best thing he will get for the £1.5m he spent on developing them. He does after all have added capabilities in terms of movement and warfare.
He gives it a go. The cake mix comes out lumpy due to no refinement on the mixing front, plus it has a strange smell of concrete. Once cooked with the Flame belch 3000 , as the delivery team now call it, there is nothing but a pile of ash where the cake mix, table and kitchen once stood.
Technical it does mix, technically it really, really cooks. Does it meet the objective and deliver the valuable (and devilishly good) cake. Nope.
- Release things to the business early, even if the thing you are releasing sucks. Improving something that sucks is easy, shrinking a concrete mixer so it fits in the kitchen is not.
- Release thing regulally. Don’t put it off, if you can deliver something visible every iteration.
- TDD/ATDD/BDD, Test early and if possible ensure your tests steer development/design.
- Listen to the business don’t assume.
- Understand that developers sometimes want to make the best flame thrower in the world when a simple oven will do. Stop them.