Have you ever failed to deliver a task due to a tight deadline?
The chances are that your clients were unhappy, and you were working ridiculous amounts of hours, this could've happened because the underestimation of the amount of work needed to complete the tasks.
There are many reasons why we fall in underestimation of tasks. For example, it can be our EGO -admittedly, we often think that we are all powerful casters master developers that can do anything- or more commonly, due to not being familiarized with the task.
Then, it is as important to estimate correctly?
Without an accurate estimate, we can not know when we will finish the project, and therefore we can not plan when to start the next one. Moreover, failure to finish on time and manner affects us in our career. In the end, every project has a budget for certain time, if we fail to meet it, the clients won't hire us anymore (duh).
Ok, ok, I understand, but how do I estimate correctly?
Well, this depends on the method you typically use. Here at MagmaLabs, we estimate using effort points and for this we usually use techniques like Planning Poker, T-Shirt Sizes Mass or Relative Valuation.
I know that even with these techniques is difficult to reach an accurate estimate. That's why I've created a small table matching points, estimated required time and personal phrases, so I recommend the following process when assigning points to a task:
- Think on a "PERSONAL PHRASE" that helps you define the task
This not only will bring light on your thoughts but also will help you to give a more accurate estimation.
If you're asked to implement an API Endpoint on Rails that respond with Elastic Search (ES) Results and you haven't created any API before but you have worked with ES, you could think:
"mmjum... I've known how to use ES, but I'm not sure how to implement the API endpoint."
- Match that phrase with the "LEVEL" of the task
Look for your phrase in the table and match it with the level.
Following the example:
I know it could fall into 3 or 5 points because I have an idea of how to do it, but I'm not entirely sure. I'll take 5 points.
Extra tip: Always go for the greatest value.
- Rinse and Repeat
Continue with every task, repeating steps 1 and 2.
- Take into account that the table I'm presenting is a personal example; I usually say those phrases and that's why they help me to set points more accurately.
- You'll need to create a table with your own personal phrases, just use simple ones that you usually say.
- The more you use this technique, the less you'll need the table, in the end, it's just a visual aid.
Effort Points, Estimated Required Time (ERT) and Phrases Table:
|Points||Min. ERT. (hrs.)||Max ERT. (hrs.)||Task Level||Phrase Example|
|0||0||2||100% Sure on how to do it / Fully understood very easy task||"I already know what to do, just give me time to write it"|
|1||3||5||Fully understood yet time-consuming / Easy - Med tasks||"Will have it after lunch"|
|2||7||9||Have previous experience / Med - Hard Tasks||"Will be ready by the end of the day or tomorrow morning"|
|3||10||14||Have an idea on how to do it / Long Med - Long Hard tasks||"Will ask for help, I know someone has already implemented it before"|
|5||17||24||Not sure how to do it / Very Hard Tasks||"Maybe someone would be able to help me on this"|
|8||24+||~||Nobody knows how to do it / Need previous research for more accurate estimation||"I have no freakin' idea what you're talking about"|
There is no holy grail of techniques for estimating tasks. That is why our experience, teamwork and techniques like these are very helpful because, in the end, what matters is the success of the project.
Questions, comments and suggestions are always welcome: