As a software developer, or even working in other IT fields, you might get asked very often how long you need to perform a task, a series of tasks, or achieve the development of your solution. Being able to answer in a pretty accurate way will make you look more professional than other engineers who aren’t.
If you’re working as a salary man or woman, the project leader will need to know when he can expect the different parts of the software to be delivered, or when the bugs will be fixed. If you choose the freelance path, knowing how long a task requires of your time will allow you to make the best quotations and avoid the risk of working “for free” because you made wrong calculations.
So here are a few tips to become more accurate in your estimations when it comes to project or task duration, but also on how to improve your speed on development projects.
This article was mentioned in JetBrains’ Java Annotated Monthly (October 2020)
Start keeping track of every task you perform
When you’re coding, time can fly really fast. You don’t think about what surrounds you, you’re totally immersed in your code. You might get the impression you had the job done in just a few minutes, maybe an hour, when it’s been hours, half a day, almost the entire day…
As soon as you start learning programming, keep track of the time you need to perform a task, might it be a school project, an internship project, a task at work or a personal project. Split the work done in precise subtasks, note the time where you start and where you stop, then summarize everything in a notepad or a file. That way, you can evaluate the time by type of task (front-end, back-end, and even more precise: database connection, models, services, controllers, security, IU, and so forth) and the time you’d need for a whole project.
Keep in mind that the first time you’ll use a new technology or perform a new task, it will always take way longer than the following ones, so also take notes of the challenges you had to face in each particular case.
Git commit -m push
Git is a great tool even for individual purpose. It allows you to securely save your code, but the version history is of great help for various reasons. In this case, committing your changes after each task or subtask allows you to notice your rhythm and the time used to perform each one. The Commits view allows you to check your commits per day, so you can tell how many tasks you’ve performed on each date. I encourage you to document your commits the best you can, enumerating everything you’ve done, and to cut your commits into little pieces, like every time you achieved a task or you debugged a problem. (This can also be of great help if you started messing up with the code and you want to come back to latest safe version. Very. Helpful.)
The other advantage in keeping up with your projects with a versioning system is that you’ll be able to consult your previous projects in an easier way. Imagine you face an issue you already encountered in a previous project. If you documented your commit, which contains only that precise part of the development, you’ll be able to refer to it to find the solution instead of doing the whole Google-Stack Overflow-try-fail-try-fail-Stack Overflow-try-almost succeed-try-fail… loop all again. Way faster!
Writing your own tutorials, just for you or to share with your coworkers, will also allow you to perform tasks quicker and in a more efficient way.
Let the machine do the job for you: Rescue Time
If you only want to quantify the amount of time spent on a project, you might use an automated solution. I first installed Rescue Time in order to lower the time I was spending on social networks, but I found out it was also a great tool to tell me how much work I had provided on the week and be aware of the efforts I was putting in my freelance job at the time. Just be careful because opening your IDE or any other software on your computer will make Rescue Time start counting time, even if you’re not at it, and you don’t want to bias the results.
Rescue Time also allows you to work on your productivity and lower the distraction time on your computer, much recommend this tool!
A few more tips to develop softwares faster
Some might argue that doing the job faster will make you work more. But if you want to evolve in your career, earn more for less working time as a freelancer, or even get the job done quicker to go for that table soccer game because your company happens to have such an equipment in their hallway, becoming faster is of great utility.
Learning blind typing might also improve your physicial speed at coding. Might seem silly, but it’s not at all. This, as much as learning the shortcut keys of your IDE and the general shortcut keys of your OS. You might have developed some skills when it comes to type fast and almost not looking at the keys, but learning actual blind typing can help speed up even faster. Just type “learning blind typing for free” on Google, or check Typing Jungle.
Alright folks, let us know your own tricks to evaluate the time you’ll spend on a software development project or how you got faster at it!