This is one of the hardest things a developer can do as it builds expectation in business which you may or may not be able to meet. Depending on the business you are dealing with, it may even be important to write down each estimation explicitly so that they can track it thouroughly and any excess time required you just won't get paid for.
So it really is different for each developer and their situation so I won't dig too deeply into that, but the main idea behind all of them is basically getting control over your time and development process.
So there are a few steps to get there.
The What and The Why
Is your task detailed and clear enough for you to be able to see the whole process ahead of you? Is it sufficiently split up into smaller pieces so it's not one big task that really should be an epic (a larger descriptive task that just generally describes a feature that the sub-tasks define more clearly). And if it's a full-stack development, does the task require it to be split up further or is the change small enough to be contained in the task (since there are interconnected dependencies)
Each specific development task should be small enough for you to be able to express psuedo-code for it that takes just as long to read as the specification. It's kind of like converting human-readable-text into, for the lack of a better term, nerd-speech.
Also, do challenge your client/product-owner in the task itself, what is it they're trying to solve and why it has to be solved the way they've described? Is there already another tool available for that purpose. Why reinvent the wheel? Maybe it's incorporating that existing tool into your application, but atleast you will then have an understanding of the requirement and what business need it meets.
The How
Now that the task is clear enough as to what is expected, do you know HOW to do it? If not, reflect back to when you were studying, or learning a new paradigm or pattern in coding... how long did it take to learn that and what was produced out of it. Because if you consider that you can learn and solve the problem at the same time, you can be quite efficient.
If you know what to do, how often do you do it? Is it in the back of your mind or do you need to refer to other pieces of code for a refresher?
The When
In terms of your overall work-load, when in time can this be performed? Are you already overencumbered with tasks so this has to fit into the next sprint?
The Where
Now this is just to complete the 5 questions, but if you are new to the project or workplace, or maybe you're a freelancer working with a new client, do they have any process tools for you to follow up on your progress with. JIRA or similar ... The physical "where" I hope would be in your chair infront of your computer.
And in these corona times, at home.
Stay home. Stay safe.
Top comments (1)
I started on this article a few days ago and I had a different goal in mind when I started on it, but I can't for the life of me remember the whole idea I had so I just finished this article based on what I had already started :P