As a software developer, or even working in other IT fields, you will 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 they 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 estimations.
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: it’s called being in the flow. 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 file. This way, you can evaluate the time by type of task 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.
Keep on updating your file with each development you make to get a good average, but also because the time you’ll need will probably evolve with time.
Git commit -m push
Git is a great tool and you might be underusing it. It allows you to securely save your code, but the 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.
The other advantage of keeping up with your projects with a versioning system is that you’ll be able to consult your previous projects. Imagine you face an issue you already encountered in a previous project. If you documented your commit well, you’ll be able to refer to it to find the solution easily instead of doing the whole Google-Stack Overflow-try-fail-try-fail-Stack Overflow-try-almost succeed-try-fail… loop all again.
Writing your own tutorials, just for you or to share with your coworkers (or on your blog), 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 reduce the time I was spending on social networks, but I found out it’s also a great tool to tell me how much work I’ve done during the week and be aware of the efforts I was putting in my freelance job at the time.
Just be careful that opening your IDE or any other software on your computer will make Rescue Time start counting time, even if you’re not actually using it, and it would bias the results.
A few more tips to develop softwares faster
First almost obvious advice is to keep on training. The more you execute the same kind of task, the faster you get. So every time you’re bored, think about practicing (like solving Java, Kotlin, JavaScript, Python… problems with JetBrains Academy, challenging yourself in any programming language with CodeWars…).
Learning blind typing might also improve your physical speed at coding. In addition, learning the shortcut keys of your IDE and the general shortcut keys of your OS and using your keyboard instead of the mouse improves efficiency.
For blind typing, just type “learning blind typing for free” on Google. You can check this solution for example: Typing Jungle.