Someone was wrong in the interwebs! 😲
In a recent discussion, someone argued that because software development always involves novel challenges and requirement changes along the way, estimating effort and schedules is inherently inaccurate to the extent of being completely wasteful and pointless. I disagree!
I consider there are three main things needed for successful long-term work:
1️⃣ Define your objectives. Understand what you’re trying to accomplish. What you build is a means to an end, not the end itself.
2️⃣ Work incrementally, validating and adjusting as you go. Having to take a step back to fix things is a sign of progress, not failure.
3️⃣ Improve your ways of working. Regularly evaluate and reflect on how you work and adjust as needed.
The smaller the scale of the work, the easier this tends to be. But the larger the scale, the more important it becomes.
So, estimating and waste?
If you don’t track and measure your work and progress, how can you improve your ways of working? Learning requires feedback. If you measure what you need for improvement, you will have everything you need for efficient estimates with zero waste in time or effort.
What about the point?
When you start something, the first and most important step is to understand your objective: What is the objective? What is the value of the outcome? Ie. the #1 on the list above? A ballpark figure is enough. And often, the value of the objective is relative: which is more valuable, A or B? You might not have the real exact values, but you probably don’t need them either. Usually, the values are equally off at this stage, so you can compare.
Then you need a rough estimate of the effort. A “well, I’d say it’s X months, or Y if in Strömsö” from the team is just fine. Is the effort more or less than the value of the work? If less, go for it!
Thinking if something is worth trying or not is anything but pointless.
Once you begin, work incrementally, validating as you go, and continue estimating and projecting.
The earlier you get projections, the earlier you get answers to the critical questions:
- Should you keep trying, or pull the plug?
- Can you reach the goals with your current approach, or should you adjust (scale the team, cut the scope etc)?
For fixing anything, these two answers are the tools you have, and both are time sensitive. Scaling a team or making drastic changes in the scope too late is unhelpful, and shutting down a project late is costly and demoralizing. To get the answers, pretty much the only thing you need is a simple burn-up chart. I think it’s a fairly good investment.
So, wasteful and pointless? I really, really disagree.
Remember! Estimation or projection is not, nor do they create the deadline or budget. Never fall for that. Deadlines come from business needs, ie. from your objectives (“Our Olympics result app should be ready for the Olympics!”). Projections reveal if you’re on the right track.