Can software development be predictable? It is one of the hot questions in software development that gets argued over and over again. Can you really predict when software is going to be delivered? Some people believe that software development absolutely can't be predicted. On the other hand, others think that it can definitely be predictable if the right tactics are applied. And I'm one of them.
For me, software development is similar to running a marathon. And here's why.
If you were to ask a person who has never done a race before how quickly they would finish the marathon, they would have no clue (hence no predictability). The first marathon they run will give them an idea of their starting point. Is it about 4 hours or closer to 6 hours, or maybe more, or maybe less? This provides that person with a ballpark estimate of what they can expect next. It would be naive to expect that the next marathon can finish two times faster without proper training.
The more they run, the more informed they become of their abilities. Thus they can start operating with some level of predictability, e.g., if they finished a previous marathon within 5 hours, they can expect the next one might be a bit faster, and it might l take 4.45-4.50 hours. Every consequent marathon they run gives them more and more information to operate upon, thus improving their predictability.
However, they would never be able to predict down to a minute how quickly they will finish it, as each day is going to be different, the conditions are going to be different. And that's okay. But it's going to be possible to give a somewhat accurate estimate for any subsequent marathons, based on historical data and a detailed analysis of what worked and what didn't.
The same principle can be applied to software development. When you first get started, you have no clue what to expect, but the more iterations you have, and the more you look at what worked and what didn't, you will get better and better at it. Thus, if you are deliberately making it predictable, you will start seeing a more accurately planned roadmap.
I've been following this 5-steps Predictability Model to make my product roadmap more predictable.
Choose your estimation points and iteration duration
Estimate the complexity of the work
Execute!
Do a retro: what have you accomplished, and why. Have a retrospective look (how close was your guess).
Repeat steps 2-5
As you continue going through this cycle over and over again, you will get better at estimation and predictability. You will get even better results if you use relative sizing estimation when assessing your project complexity. The key here is to always compare a new project to a project that you've done already.
However, even with this model, you would never get a 100% accurate estimate, nor should it be your goal. But you will have a pretty close range of where you can land. It's like running a marathon. While you might not know your exact finishing time, knowing how much time it took you previously will help you set your expectations right.
Lastly, similarly to how many runners who have been running for a while are getting better in the running and feel comfortable about finishing races within their expected timeframes, as you deliberately put efforts into the software development planning, it will result in better predictability.
Takeaway
While it's challenging to predict software development, as it's for most of the things in our lives, with practice and consistency, it's possible. So it's never too late to start using relative sizing to estimate complexity, gathering and analyzing historical data to establish reliable velocity.
OneRank has been built to help software development professionals to get better at product roadmap planning. It's designed to help you plan a product roadmap accurately by relying on historical data when planning your next sprint, iterations, and releases.
Comments