Customers, bosses, and clients don’t understand why software takes so long. After all, it just looks like typing, so how hard can it be? Houses, cars and other physical things benefit from obvious complexity and codified standards. Software development often has neither.
For example, when I asked my home builder to add a small deck on my new house, I thought it would be no big deal. After all, I saw them everywhere, and I’d even helped to build them in the past. This made me think of it as an “easy add-on” to the project.
But, he quickly reset my expectations by talking about drilling and pouring concrete footings, the new 2017 building codes in my area that effect deck construction, informing me it would impact how he installed siding, etc. In 15 minutes I moved from “This should be easy.” to “I have no idea what I’m talking about.”
Then I asked him the real question on my mind: “How much will this cost, and how long will it take?” I held my breath as he paused and said, “I’ll need to work up a detailed time and cost ranges and get back to you.”
Great answer, I thought, but I want a number now. I persisted, telling him, “Come on, give me a ballpark estimate. It can’t be that hard.” He paused, looked at me, and said: “I don’t know. If I had to guess, I could do it for less than $40,000. Do you want me to spec it for you?”
Now it was my turn to pause. That was more than I thought a “small” deck would cost. He’d established expertise in the area, revealed that I had started with an unrealistic expectation of effort, and then given me a high back-of-the-napkin estimate. That was enough for me to say, “Let’s talk about other options…” which got us both brainstorming new ideas. I shared my budget with him, and together we figured out a win-win solution.
Who sets the expectations?
When someone asks you “Why is it taking so long?”, They are comparing what you told them with what they see. Even though you might feel they are pushy jerks (and that phrase reeks of pushy-jerkness!), it’s important you understand the role you play in the equation.
You gave the estimate; you gave the timeframe; they are just applying them.
So, maybe you need to set better expectations, which clarify the uncertainty inside each project. For example, you might try:
1. Providing estimates as ranges. Instead of saying “It will take 545 hours.” say “450 – 650 hours, depending on X, Y and Z.” Ranges communicate uncertainty in ways that statements like “This is only an estimate, don’t hold me to it.” never will.
2. Re-estimating regularly, and communicating the updated estimate to everyone involved.
3. Using a “parking lot” for new features that will expand the assessment, deferring them to a future release. Instead of always saying “yes” or “no,” now you can say “maybe later.” 😉
4. Using “upper bounds budgets,” like my contractor did, to see if the customer is willing to pay the MOST you could imagine the project costing. Often they want to make a quick decision about a feature, and this tactic gives them the information they need.
Since you set the expectations, you can’t blame them for asking why the project is “taking so long.” Experiment with ways to have meaningful conversations about time and cost, and help them make better decisions.