Here is an excerpt from an email I received from a nice chap recently:
Finally I took the time to read all your posts on #NoEstimates and I must say it was really good One thing that I didn't understand was how you handle the start of project with no time or budget constraints? Say we have a customer who wants to build a flight booking system and are now wondering how much it costs and when it will be done? They have no desired delivery date but asap is good and they need to know how much money it will cost so they can give a budget proposal to their boss. Here it seems like we have no real constraints to use so how would you handle this situation with #NoEstimates? Also another situation that the customer maybe want this and say they have a budget for $10,000 then we "know" it's too little to get anything useful. Is it "ok" to say that "estimate" based on our experience?
I thought it would be interesting for my other #NoEstimates readers to turn my answers into a short blog post
To the 1st question: I would be surprised if the customer genuinely doesn’t have a budget constraint. If we have built flight booking systems before, I would tell them how much those ones cost, to give them options. I would be wanting to know from the customer how much they want to spend.
If we haven’t built flight booking systems before, I would be wondering why the customer has chosen us over someone who builds flight booking systems! If they really want to work with us then I would be explaining the way we work with our customers, i.e. an iterative, collaborative approach with flexible pricing, but I would insist on knowing their maximum budget.
If we want to be in the business of building flight booking systems then I might take a hit on the first customer, i.e. if after working with the customer closely for, say, 2 weeks we realise that we can’t possibly build a flight booking system for their budget then they can look elsewhere, at no cost to them. It will be valuable learning for us because now we’ll know how much we *can’t* build a flight booking system for, given our capacity.
Obviously there’s no one right answer to this, and there are so many “it depends” variables, but this is one approach. We need to learn our capabilities by doing stuff and making empirical judgements, not guess how much we can do and by when.
To the second question, I’ve probably already answered it. If we’ve never built a flight booking system for anywhere near $10k then we “know” we can’t do it, or at least can’t guarantee it, given our current capacity. Call this an estimate if you like. If we’ve never built one at all then my answer above applies.
I always find it interesting that in software we tend to take a reverse approach to budgeting as we do with our purchasing decisions in life. Instead of deciding our budget based on how much we have available, or are willing to spend, we decide it using an estimate from the supplier of how much they tell us the software that we want will cost.
Or at least we give the illusion that’s how we are deciding it. In reality, I believe we typically know how much we want to spend. We are simply looking to the cheapest bidder in order to try and save money or squeeze as much as we can for our real budget.
My view is that we will come to much better outcomes for our customers, and ourselves, if we actually work iteratively and collaboratively with the customers’ real budgetary and/or time constraints.