Originally posted at Cultivate
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.
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.
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:
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.
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:
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:
###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:
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)
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.
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: