One of those mysterious arts of software development is that of estimation. The ability to accurately predict when a project or piece of software will be completed is difficult to establish and as the software world becomes increasingly complex, the difficulty only continues to grow. No matter your software development methodology, whether its Waterfall, Agile or even more of a DevOps model, the ability to work remains a challenge that no amount of storyboard points or spikes are going to solve.
Most companies avoid this problem by simply refusing to commit to a date in the first place. Many times this is simply not an option and we are still expected to hit a delivery date to meet the expectations of our customers or shareholders.
Many teams will build in massive amounts of contingency to make up for this vast unknown, but even with this factored in, variations and slippages of deliverables are common. There is sadly no silver bullet that allows teams to work more predictably, but there are a number of things that teams can implement to ensure they get a lot better at the estimation game.
1) Correctly identify the problem early
We can easily make rash estimates without fully understanding the nature of the problem or task at hand. While we can build this uncertainty into our timelines, often the solution is simpler than that. Asking more questions. Whether working on an internal task or customer project, we need to ensure we understand the problem we are trying to solve. While we might not fully understand the how – if we can at least understand the why we are a long way towards estimating accurately.
It is often said that estimation can never be accurate because you can never predict unexpected events. The truth is though, if you fully understand the problem, you can eliminate most of these uncertainties. Most uncertainties (not all) are a sign that you never understood the problem and its complexities in the first place.
2) Break up the work into smaller tasks
This is something I believe most of us already do. It’s difficult to predict any large piece of work, but the smaller the tasks, the better the chance of predicting the work correctly. What we often don’t do though is get the scope of the smaller tasks right. We try to minimize the planning effort by minimizing the number of estimation to make, but the truth is that the more we break up the work into smaller chunks, the more we understand those parts and can estimate them accurately.
3) Understanding the quality aspects of each task
Alongside breaking up the work into very small tasks, we also need to define what our testing output and quality outcomes that determine the work is complete for each task needs to be. This is important as it reduces the effort of regression and re-fixing later and eliminates the need for contingency. Yes, it means you will need to invest a lot more time in estimation, but this effort pays off in helping you build your product right the first time.
4) Learning from the past
This sounds straightforward, but yet I know few companies that actually put this into practice. Constantly revisit your projects and estimates to understand where and why you missed targets previously. It might seem like a pointless exercise at first, but if you keep at it and document your findings each time with why you missed, you will identify your errors and get better. In my experience, this is by far the best way to become more predictable in work, but also the method that requires the most time and investment. This approach often gets dismissed because people argue that each project is too different to compare with previous ones. This is an unfortunate half-truth though. If you collect enough data on the different tasks performed in the past, you’ll be amazed at how alike projects can be.
In the end, while estimation will never be an exact science, with a lot of effort, it can certainly become less of a guessing game. How much effort you are willing to invest in getting it right all comes down to how important the accuracy of your estimations are to your projects and customers. If you are in a business which calls you to make accurate and predictable estimates, the good news is that you can eventually get better at it, if you’re willing to put in the hard work.
コメント