During software development, you’re often required to estimate your tasks in advance.
Whether it is during a Scrum sprint planning, or simply during a conversation with your client, you’ll be asked to provide an estimate for a specific task.
Since estimating is quite difficult, I created this little article to help you.
I keep moving the deadlines, help me estimate !
Software development has now been around for more than 50 years, still nobody has a good estimation process.
The thing is: you can only estimate what you already have done a lot of time.
Go to your garage, ask how long an oil-change is.
The car mechanic will answer a precise approximation: « Oh, between 20 and 30 minutes ».
He knows this because he has done the process hundreds of times, and from these experiences, he can formulate a precise estimation.
With software, you (almost) never do the same thing again.
Each product is different, each client is different, each requirement is different.
Therefore, your estimation will be wrong, and by a lot.
This is a loss of time for developers, as well as an added stress, as the estimation will be confused with an engagement at some point.
The work will either be rushed to fit the deadline, or will be artificially extended to fit the deadline. Developers, but also managers and clients are suffering from the consequences of this system.
Now, here is a counter-intuitive solution.
Do not estimate. Instead of taking decisions based on estimation that we know are wrong, take decisions based on things you know. Instead of piling a long list of requirements, then creating a planning where everything is estimated, ask yourself: what does my client need right now ? What’s the next important step that will bring the most value ?
Then, do that one thing now. And loop over to the previous question until the user base is satisfied, until users can do what they have to do with the product.
Watch now: you’re not doing a project anymore, you’re building a product.
What may seem like a little difference in wording is crucial to set yourself in the proper direction to deliver quality to your clients.