Spencer Turner

So how much is it going to cost? Agile Estimation and the Bathroom tap...

Originally posted at Cultivate

So, how much is it going to cost?

I don't know about you, but we get asked this question pretty regularly. And it seems like it should be a simple answer. Most applications are mainly made up of component parts that are solved problems, like a CMS, signup, a login system, authentication, email sending etc. The expectation is that you'll give a figure, a timeframe and then deliver on time and in budget, which when you say it like that sounds perfectly reasonable.

Why are you talking about bathrooms?

There's something about houses that always makes me think about software. The different layers of interactivity of things, the coupling of systems, the hidden plumbing, the lock-ins of previous choices and the value decisions around improving them.

Basically, We've recently moved house and need to get the bathroom refitted. Exciting times. Bear with me, there's a point to this I promise.

Knowns.

Estimating the cost of a bathroom. We know the size of the room, and there are things we can see we need – some components – a sink, a toilet, a shower, a bath, something to protect the walls from water, lighting, heating, flooring, paint. These are our knowns, that sounds like it should be easy...

However, because I'm not a DIYer or a craftsman I don't know what my options are, and even if I do, I probably can't express it in the right way for an expert.

"What radiator valves do you want?" "Umm. I like chrome ones?" "Yes, but what kind? Thermostatic? Wax or water? Upright or sidevalves? Branded or unbranded, oh and towel-rails are different to radiators, so which valves would you like us to estimate?"

This applies to pretty much every choice. So I have to:

  1. Be confident enough to say, I don't understand and am not best placed to make some of the decisions, and hand over control (and by extension - risk) to an expert.
  2. Rely on my expert's willingness to spend time helping me understand, and their expertise and their alignnment with my goals, and mental picture of what success looks like
  3. Know which decisions I care enough about to not hand off to an expert.
  4. Understand what 'good enough' means in any given context.
  5. Know what I'm prepared to compromise on and what I'm not.

What could possibly go wrong?

Back to our software project.
"I need to manage my content"
"Do you want a CMS or a static site generator? Middleman, Radiant, Refinery, something not rails? Wordpress?"
"Umm...I don't know - I just need to manage a few pages to convince people to try my product"
"How many pages?"
"maybe 4?"

That's good – we're having a conversation, narrowing options, gaining shared understanding, maybe even agreeing scope, but this all takes patience, time, and effort which equate to cost (or billable time) and doesn't deliver the "Oh, yeah it's £20k and it'll be done in a month" that people want when they ask "How much will it cost".

If we and our clients are prepared to examine the details, our knowns are known and fairly accurately estimable.

Known unknowns

Back to the bathroom. We'd like to drop the shower back to floor level – it's currently raised a little - presumably to allow for plumbing, but we don't know that it's just for ease... It could be that the joists run in a direction that makes it impossible to drop. I know...a bit technical, sorry.

The point is, we can't know until we start ripping the existing bathroom apart. We'll need to lift the lino, remove the skirting, lift floorboards etc. This will all need doing anyway when we start, but we don't want destruction while we wait.

So, my options are:

  1. Insist our fitter give me a fixed price.
  2. Accept that we don't know and we'll have to figure it out when we do.
  3. Rip things up now and find out.

If I insist on a fixed price, I'm essentially moving all the risk onto our fitter who now has limited options. As far as I know he doesn't own a crystal ball, so he can:

  1. Persuade me I'm wrong!
  2. Eat the risk/cost and hope for the best
  3. Increase the quote to cover his risk, but potentially then look expensive
  4. Refuse the job (as I'm a PITA).

###Trust & Reputation. What we're really talking about here is trust. I trust our fitter, I'm not going to ask him for a fixed price, I know that he'll recommend the best thing, and in recommending, will explain any trade-offs that I need to be aware of.

I also trust that he won't recommend unnecessary work, or choose expensive or time consuming options to extend the engagement. He has work queued up, he doesn't need to.

This trust is based on four important things:

  1. Recommendation. We had a glowing recommendation from someone as fussy as I am so we immediately had an element of trust as a starting point.
  2. A reasonably accurate estimate of what is estimable
  3. Being clear around what currently isn't (i.e. where the risks are)
  4. Having proven himself on the first job (and every one since).

Basically, I've learned over time that I can trust him to make certain decisions without needing my input and that he'll ask if it's something he knows I'll have a view on.

####Don't under-estimate estimation Don't under-estimate the amount of time and effort you'll have to invest to give good enough estimates especially on a 'maiden' project with a new client if you want to earn trust (and by extension, potentially repeat business and recommendations)

Unknown unknowns

I was wondering how I'd give an example of an 'unknown unknown' to finish this post - I needn't have worried.

###An unknown-unknown The bathroom is gutted, back to bare floorboards and pipes. Shower gone, bath gone, sink gone, tiles gone...you get the idea. The new items have all been ordered, paid for and delivered.

So we start to plan out the exact placement of the splashbacks. And that's when it happens...

'So we're going to put the sink here...'
(draws on wall with sharpie)

'Great, as we have it in the garage, can we place it there - just to see it?'
... basin is placed ...

'Ohhhh - TAP...you won't be able to open the window...we'd not considered the height of the tap... ****!'

To be clear, this was not our fitter's fault! No-one had spotted it and at least 4 people had looked at the plans. Maybe a 3D rendering of the plans would have picked it up - probably not.

So one small element triggered an on-the-spot, live redesign of the bathroom – Four people, an hour, lots of discussion, and sharpie marks on the walls combined with physically placing all the items and we had a solution. It's not the original design, but it contains all the elements we wanted, without compromising on things we felt were 'non-negotiable' so we're happy - it might even be a better design, it's certainly not worse.

###Focusing on outcomes This is the reason we encourage people to focus on outcomes not solutions. The outcome we wanted was a clean, functional well fitted bathroom, with the essential elements included, that maximised the space in the room.

I don't really care if the sink goes under the window. What I absolutely do want is the high-level outcome, if those criteria are still met, I'm happy.

Conversely, If we'd provided exact specifications, or even overly detailed 'feature requests' to someone who 'just does what they're told', we could well have ended up with a situation where existing plans were followed blindly, and we only learned about the tap when we came to open the window and found it didn't open.

What are the takeaways?

Estimation is hard, there will almost certainly be unknown unknowns that will bite you...Try and make clients aware of this as early as possible.

It's not just software that's hard to estimate, sometimes looking at another craft helps us find less 'techie' ways of communicating why these things are hard.

Earn and retain trust:

  1. Be recommended (You can't control this, but if you're not, expect to work longer and harder to earn trust)
  2. Estimate that which can be estimated as accurately as is reasonably possible and be clear
  3. Be clear where estimates are uncertain or impossible (i.e. communicate where the risks are.)
  4. Prove yourself, over and over and over again.

To find out how I can help you and your team please Get in touch for a free no-obligation chat.