Tuesday 3 March 2009

Would you ship shit?

I had reason the other day to re-read Uncle Bob's post on "We will not ship shit".

Uncle bob is cool - I heard him speak at agile2008 and although he is a show-man (nothing wrong with that), he speaks a lot of sense. No, you don't take everything he says literally, but I reckon he's spot on.

You are participating in a project as a technical guy. You answer these questions:
Can we do it?
When will we have it done by?

 Then you start and construction runs it's course. But, there are a few unforeseen problems... And you hit the agreed deadline (it's a hard deadline, no free and easy flexible deadlines here). The next question is:
Will we ship this?

This is a much harder question than the first two. It's way more difficult to say No because so much time and money has been invested.... BUT, you are the technical guy... Remember the old sayings of "Is it Done yet?" and Technical Debt? Your technical know-how was good enough in the conception phase, but what about now in the construction phase?

Masterchef - 45 mins to cook a dish. An amateur cook prepares a meal for food critics - it's a British TV show. The guy is cooking seafood and is running 5 mins behind schedule. Does he:

1/ make the customer wait?
2/ serve under cooked food?

 The inexperienced chef always hits his deadline, but one of two things can happen:

1/ Customer notices fault (raw seafood) and will not eat it. Bad Customer Experience.
2/ Customer is ignorant, eats the raw seafood (which is full of bacteria and bugs) and is sick the next day. Bad Customer Experience.

You have a responsibility as a technical guy to hold up the project if the quality is poor. Of course there is a business impact here, which has to be considered. But it's important that you communicate the risk to the stakeholders. A bad database table design might not sound bad and probably works fine in test, but when you throw a few million production requests at it over a few weeks - you know things will turn sour.

It's pretty simple, but if you say no and explain why - cause and effect, you should get the time to fix up. So, should you ship shit? No, never and absolutely not. Your job as a technical representative is to explain why we will not ship. To look at it cold and hard, it's your own fault if you ship rubbish.