I want to share my top productivity tips I’m using on a daily basis as a software developer.
Table of Contents
Distractions are the root of all evil when it comes to productivity. A recommended book to read on this topic is Deep Work: Rules for Focused Success in a Distracted World by Cal Newport.
When I’m working the last thing I want is to be interrupted, so I’m following some nice “distraction hygiene”.
I’ve stopped the sound and vibration of all notifications on my phone, 24/7. It never makes a sound except when somebody is calling me. Regularity, when I decide, I check if there are new messages. This way I’m not interrupted.
The same rule is applied to my desktop computer. Skype, Viber, WhatsApp, Slack, Facebook Messenger, Google Hangouts are muted. See the next point.
Separating personal and work environments with Virtual Desktops
This is a huge one and it went through a couple of iterations before I settled on my current approach. The main idea is to separate the personal/distracting environment from the working environment and to switch between them. Once done, I can switch between them on a time-boxed Pomodoro style and they don’t interfere with one another.
By personal I mean Gmail, messengers like Skype, Viber, WhatsApp, Facebook Messenger, Slack, Hangouts, a web browser window with tabs unrelated to work, Simplenote, Spotify, Google Keep with daily tasks, etc.
By professional I mean my employer’s email and messengers (without push notifications), my IDE, SnapTimer for Pomodoro sessions, a web browser windows(s) with tabs, related to my current task, Sticky Notes to write ideas for after the current Pomodoro session.
Switching between virtual desktops on Windows is done with CTRL+WIN+ARROW (left/right). Moving windows between virtual desktops happen by dragging it once you hit WIN+TAB.
There are some rules.
If I want to open a new browser tab, I do it either in the personal or the work web browser window on the right virtual desktop, depending on its purpose.
While working, the work-related messenger is minimized and all push notifications are stopped. When I exit a Pomodoro session, I take a look at it and answer the questions. From time to time after several Pomodoro sessions, I switch to the personal virtual desktop to take a rest, browse the web and answer any messages that have accumulated.
In the past, I used to develop my own software to hide and show particular windows (mostly messengers). The idea was to cut personal stuff and all the distractions from multiple messengers for a time-boxed period of time and then show them again. Separating those two “worlds” into their own virtual desktop completely solved this issue natively in Windows.
If you are not familiar, a Pomodoro session is a time-boxed slice of time in which you should work on your current task no matter what. In order to enter the flow state, all possible distractions should be disabled and you have a timer that tells you when the session is over. Once it is over, you can take a rest, do some other stuff or you can start another session if you feel committed that you have the required mental energy to continue.
During the day you switch between laser-focus Pomodoro time slices when you achieve deep work and rest periods of time in between. I tend to time-box them both as a quick “web search for a minute” can turn into 2 hours endeavor in a blink of an eye.
The utility can act both as a countdown timer and a stopwatch. It can show or hide the seconds. I prefer them hidden as a changing text every second is distracting.
I usually do 20 or 40 minute Pomodoro sessions. Inside a work session no messengers are allowed (even employer’s ones), no switching to the personal virtual desktop is allowed and if I stand up to take a rest or somebody comes to talk to me, I hit pause.
Sticky Notes during a Pomodoro session
Sometimes during a session my mind constantly bombards me with “important stuff” like what I have to do after work, to buy something, to search the web for something, to call somebody, to research something, to write to somebody about something and so on. Each time such thought arises, I write it in the Sticky Notes Windows app to deal with it later. This way I don’t forget it and I get it out of my mind, but I also don’t interrupt what I’m doing in the middle of a session for a “quick” web search that breaks the flow.
Once a session is over, I can start another one or I can take a rest by doing the tasks I have accumulated.
I like to work in a quiet environment. Traffic noise is a no-go. Open spaces are a big no-go. Talking people around are a huge no-go. And no, trying to overshadow all those with a metal blasting headphones is a no-go too.
I’ve invested in a Bose QuietComfort 25 noise cancelling headphones the moment they were released and I love them. They are super comfortable, insulate external noise very good and are one of my best purchases ever. Of course, it is always better to have a quiet working environment to start with than trying to cancel it down.
Listening to music most of the time results in worse productivity compared to a dead silent room, although I prefer music to hearing somebody talking. Naturally, I like to work in silence, but when I’m working in an office, my headphones are a savior. At my home I hardly use them.
I love my QC25 so much, that I just ordered the latest wireless Sony noise cancelling model for the same serene experience when training at the gym, in the metro or walking on the street. Cables are so 90s and I need a battery for the noise cancelling anyways, so… 🙂
First Things First
It doesn’t matter how effective you are at doing something if you are doing the wrong thing. I definitely recommended two books
TL;DR, you should always start with the most important, most difficult and most urgent task, i.e. “the biggest, ugliest frog”. Our minds often go for the easiest tasks first. We tend to get immediate satisfaction by doing several easy tasks rather than start with the elephant in the room. It seems productive that we’ve just completed 3 tasks this morning, but were those 3 tasks really critical? Were they the most important task we have to do (and usually the most difficult)? Often this is not the case.
That’s why I have a priority list. Heck, it’s not a list, it’s a four-quadrant “Eisenhower Decision Matrix” for importance vs. urgency! (image by By Davidjcmorris – Own work, CC BY-SA 4.0)
The ability to assign priority to a task and never start a task with lower priority when one with a higher one is waiting in the queue is a very important key to success. I’m not always perfect, but I strive to follow these rules.
The best possible hardware
I want my computer to be really fast, lightning fast. Waiting for a machine is never something you need to do given how inexpensive modern hardware is. I’ve come a long, long way, but I love my current Ryzen 3950x with 16C/32T, 64GB RAM, 1TB NVMe SSD and 3 monitors. 90% of modern software development is just fine with a fraction of this power but I think a developer should never settle for slow hardware.
Some time ago I migrated to a three monitor setup both home and when working in an office. I never ever want to go back. My current choice is Dell U2415 1920×1200 16:10 with thin bezels and no PWM. This aspect ratio is better when working with text. However sooner rather than later, I’ll migrate to a larger 1440P monitor set.
Optimally your monitors should be a little bit below you eyesight.
My choice is the Logitech C920 HD Pro Webcam. The video quality is excellent and the low light sensitivity is good. It’s not cheap, but it is worth it.
Some would say that the web camera is not important at all, but I strongly disagree. I’m a professional who is doing a lot of Internet calls and I like my clients to have a good experience when communicating with me.
It has an integrated microphone, but the microphone quality of my Bose QuietComfort 25 headphones is better. In fact, it is so good that I decided not to buy a dedicated microphone that would clutter my desk.