When you are a programmer, learning is part of the job. There are dozens of technologies and frameworks we want to and need to master. But often we miss mastering our greatest resource – ourselves.
What works best for you? What helps you most when problem-solving? Where do you keep tons of information you work with every day? How do you organize them?
It is valuable to self-reflect and occasionally test out some new productivity raising tips and tricks.
Here is a list of mine:
1. When stuck, make yourself a cup of tea
There are two main modes of thinking, focused and diffused. Focused mode means concentrating on whatever problem you are trying to solve. Diffused mode is actually our natural mode, a relaxed thinking state. It is the diffused mode that is key to reframing, finding other ways, and innovating.
I have learned to combine focused and diffused modes of thinking to tackle large and complicated tasks. When I get stuck solving a problem, I get up and go make myself a cup of tea or coffee. The goal is to completely stop thinking about the problem and start walking and moving, which is crucial for me. Changing the immediate environment, locomotion and thinking about something else allows for the creativity of the diffused mode of thinking. Almost every single time, an idea of what I could try next just pops into my mind. And it’s just the idea I needed to go ahead.
2. Do not keep things in your mind
I have learned to put on paper ideas and thoughts that come up during my problem-solving process.
This allows me to focus much better on the task, not having to stop my flow and significantly change my course when a valuable thought comes to mind. I can release that thought to a safe place where it won’t get lost and it will be reevaluated later. Also, I don't have to carry the thought in my mind for minutes or hours, so I have more working space in the RAM of my own mind.
I write down all the small to-dos that come up during the working day, too.
3. Keep your notes separated – temp and perm
Beware of your note's temporal significance. Are they relevant just for the current task? Are you going to need that information in a couple of weeks? Make sure you keep your daily scribbles separated from important information you will go back to.
But how can we know every thought and idea's temporal significance in the moment of writing them down? More often than not, we can't. But we don't need to at that very moment.
I keep a block of paper on my desk. I write almost everything on the block (business meeting notes, my solution designs, big and small, scribbles that help me think, the piles of ids from the database that serve me in the testing of the functionalities I am developing). At the end of the day or every couple of days, I go through the block. Most of the written information I no longer need, so I tear those papers out and carry them to the recycling bin. The 5% I am going to need later, I write down in a notebook. A notebook keeps my permanent notes and I manage to keep it organized and find information quickly.
If you could go digitally, and not use paper, you could optimize this process even more. A text file or a notes application is where you write everything down, and you delete it at the end of the day. The permanent file is where you copy-paste the temp file's important and permanent notes.
4. Do the hardest thing first
Whether it’s a bug you need to solve or a conversation you need to have, don’t procrastinate the hardest thing you need to do in a day. Postponing a thing that you are a little anxious about doesn’t help. You carry a burden on your back from the beginning of the day. It exhausts you without you even noticing. Don’t waste your energy. Deal with the hardest thing first.
5. Finish well
What do you do with the last 15 or 20 minutes of your workday? How are you with not completing the task at the end of your working hours?
I hate leaving with some work undone. I used to try finding a small task and started solving it, hoping it will take no more than 20 minutes. It often wouldn’t. So, I would stay overtime because I wanted to go home feeling accomplished and finished. But wouldn’t I have solved it faster the next morning? Sometimes I have had to give up feeling frustrated and run so I wouldn’t be late for my private arrangements.
If you are anything like me, don’t start a new task when you have only 15 or 20 minutes before going home for the day. Instead, refactor your code. Make it cleaner. And go through your daily notes. Maybe there are things you need to check or test, emails you need to send, or a new task that should be added to the project tracking software.
This allows me to go home feeling great, and return the next day fresh and ready for new tasks.
Every individual functions differently, so not every productivity raising tip will work for you. But don’t hesitate to test out the tips that make sense to you. And be free to change and tailor them by yourself.
A clear and unburdened mind is a programmer’s greatest tool. So, take care of it. Make adjustments that help you get in the flow and stay in it. It will raise not only your productivity but your feeling of personal satisfaction, too.