Estimates in software development are hard. There are good reasons not to estimate at all. Work in thin slices, keep cycle time low, and deliver at steady pace. And yet, it’s still fair of others to ask: when will this big chunk of work be done? And not “maybe done”, but “definitely-I-can-promise-this-to-people done”.
Ideally you can calculate an expected delivery date based on your current pace and the number of slices in the new big chunk of work. But maybe you don’t have the slices yet. Or it’s a new kind of work and your current pace won’t really apply. Or there are upcoming changes in your team or organization that make any calculation tenuous.
So you have to provide an estimate. And you do. You say “six months”. And the other person - from sales or marketing or some engineering director - says: “We need it in three.” What just happened is that you estimated in something that’s not negotiable. In time, in this case. And the end result is that everyone is unhappy. You have other options, though. You can negotiate in something else than time.
What if you had negotiated in scope? “I don’t know how long all of it will take. But we can do this part of it in three months.” You estimated something smaller, so you’re more likely to be accurate-ish. You also changed the conversation a little. It’s no longer only about time, it’s also about scope. We can make decisions about both, not just about time.
What if you had negotiated in priority? “Are you sure you want us to do this soon? Like in the next two quarters? Because there’s also thing A and thing B that need doing. And X might happen, what then?” Instead of focusing on this one piece of work, you have included the other work. Have highlighted there are trade-offs in priority too, in opportunity cost.
What if you had negotiated in impediments? “Presumably you want this sooner rather than later. What would help us with delivering sooner is (for example) if we could run our tests in parallel and get faster feedback.” Instead of negotiating about duration, you’re inviting the other person to a collaboration. They want this piece of work delivered and they can contribute by helping you get an important impediment out of the way. So you’re in this together now.
What if you had responded with curiosity? (Something I struggle with. If you ask me a question, my natural response is to reply to the question you asked.) Before answering, ask them what a reasonable delivery date would be. And why that date is important to them. Perhaps they don’t know and they’re only acting as a proxy. Perhaps they have a goal they want to achieve, and there’s something better you can do than delivering a chunk of work under a tight deadline. Instead of being an estimation answering machine, you take the conversation one level up and have a conversation about the purpose of the estimate itself.
Negotiation or dialogue?
Now you may ask: why is it a negotiation at all? Perhaps negotiation is too strong a word. It’s not a hostage negotiation like in the movies, let alone like one in real life. It is a situation, however, in which someone wants something of you, i.e. a sufficient guarantee on a delivery date, you may or not may be able to meet. If there’s plenty of time, great! If not, something will have to give.
If something has to give, “I need it in three months and you say you need six!” is not a good starting point. They need something, they asked for it and now they are not getting what they want. You’re not in a conversation anymore, but in a disagreement. You’ve set up a conflict, or perhaps fairer: you’ve turned an implicit conflict into an explicit one. There are two sides now.
What’s separating these sides is the matter of time. So the one thing on the mind of the person who asked for an estimate will be: “What can I do to get you to deliver this on time?” How can they make you go faster? Are there corners to cut? Should we add people to the team? They’re not thinking about scope or opportunity cost or impediments. They won’t welcome you questioning the reasons behind their deadline. While the best way forward is to include those topics into the conversation.
To get to that place from the start of the conversation, to make sure it’s a dialogue and not a discussion, be mindful what you estimate in. If someone asks about time, you don’t have to reply in time. Make sure you reply in something you can negotiate about. Remember to be curious about the question behind the deadline. And you just might find yourself not on opposing sides, but on the same side of the issue.