This post already appeared on adrianperea.dev
There are only so many hours in the day, so how can you make sure you're making the most of your time?
It's easy to get lost in a sea of code (even clean code!) and completely lose track of time. That's why before tackling any coding project, you need a plan of attack.
This post will walk you through 9 simple tools and strategies to boost your productivity.
You might think that you're good at juggling things in memory. But research has shown that we can only have up to 7 items in our short-term memory at a time. So avoid mental mapping! Don't try to keep everything in your head when trying to understand code.
Write it down. Draw diagrams. Draw flow charts. Pen and paper works best for me. Find out what works for you!
Make sure your brain is doing what it's best at: processing. Leave everything else to auxiliary tools.
Whiteboard programming is the practice of solving a problem outside your text editor. You do this by writing down what you're trying to solve and breaking it down to individual steps. You can write it using pseudocode or natural speech. Whatever works for you!
But why do this? Whiteboard programming offers the following benefits:
- It makes sure that you understand the problem completely
- It allows you to break the problem to individual steps
Once you know the steps to solve your problem, everything else is a matter of syntax. Programming, then, will be a breeze.
Learning tests are exactly what they sound like. They're tests that help you learn third party libraries.
Writing tests for libraries may seem anti-productive (how can more work help productivity?) but it's not! Writing tests assures your understanding of the library.
Once you start using it in your production code, you can make sure that everything works as you would expect. So, you will be able to write your code with confidence.
As an added benefit, if a library gets updated, you can run the tests and immediately see if anything breaks.
An object at motion stays in motion! Program a lot, and keep on building! The more you program, the more your mind gets attuned to programming, the better/faster you code!
Not all productivity is active productivity. If you're tired, the most productive thing to do is to rest. If you're stuck at a problem, the best way to solve it is by taking a walk to clear your mind.
The pomodoro technique allows you to systemize this. The technique uses a timer to break work into 25-minute intervals followed by a short rest. After four work intervals, you get to take a longer rest. A short rest usually lasts 5 minutes, and a long one lasts 25 minutes.
If you followed tip #2 and broke down your problems into steps, it takes no effort at all to map them to work intervals. For longer tasks, it helps to assign more than one work interval.
I hear from a lot of other programmers that 25 minutes is sometimes too short of a work interval. That's very true. Once we get into a state of momentum (tip #4), it can be counter-productive to force ourselves to stop.
If 25 minutes is too short for you, the good news is you don't have to follow pomodoro to a fault. But you should learn from its principle: take breaks! Your mind will thank you for it.
I use Focus To-do for my daily pomodoro needs. But there are already a lot of other apps out there for different platforms.
Manual time tracking is no more than tracking how much time you take to perform different tasks. By doing manual time tracking, you get better at estimating how long tasks take.
This is essential, because then you can get insights like:
- How much time you've actually spent on a project
- Which tasks take most of your time
- Why do some tasks take a lot of your time (are you getting distracted? Do you need more practice doing that particular task?)
Once you know patterns in your behavior, you can then make steps in knowing what problems to solve!
You can use any application that you like that can keep track of time. I use Clockify. It can break down tasks into projects, and offers free analytics.
Manual time tracking is for general tasks. Automatic time tracking is for programming.
Automatic time tracking tracks the following:
How much time you spend programming
Which languages do you spend most time on
Which IDE do you use most of the time
I use WakaTime to do automatic time tracking. It integrates with a ton of IDEs and text editors. For Visual Studio Code, all you need to do is sign up (for free) and download the extension. After that, you'll be able to see your stats in their web dashboard.
As a bonus tip, the best -- and possibly hardest -- way to keep yourself a productive developer is to be kind to yourself.
Our jobs are difficult! There will be days that things will be overwhelming. There will be days you will feel imposter syndrome. During these days, the last thing you need is kicking yourself while you're down.
Take a step back, take a deep breath, and relax. You're doing fine.
Keep on coding. We’re all waiting for your next big thing!