Do you really know how to stay focused?

Software Engineering Team Lead and Director of Cloudsure
(Ported from my old blog called Thinky)
Often I go to work and come home exhausted. When I reflect, I feel as though I achieved very little. When left alone I am able to code for hours on end and achieve quite a lot. So what is going on?
I find that my time is spent more with people than it is with writing code. When I get a chance to write code, there are constant interruptions. I am not going to focus on why this happens in this post but rather how to stay focused and minimise the interruptions when actually writing code. Also, this doesn't have to solely apply to developers.
Credit: This post was inspired by a lightning talk that I attended. It was about focus and was presented by Indran Naidoo.
Staying focused
These are some of the suggestions he shared with the group:
-
Create a TODO list
Create a TODO list and keep true to it. Use a medium that you are comfortable to work with. This can be paper, sticky notes or even a digital medium such as Wunderlist. Do this even if you have an Agile board of some sort. You can break down your tasks even further, prioritise and keep track of them. Your tasks can also be non-sprint related like replying to an important e-mail or contacting a third party.
-
Focus on one task at a time
When you start working on one of your tasks, focus only on that task. Don't try to multi-task and try to deal with your interruptions. This could cure scatterbrain.
-
Time box
When you are in a large business, you cannot dedicate all of your time to the tasks you want to do. You need to plan around a tight schedule. Allocate a specific amount of time to a task you are working on an focus during that time. Many people I have spoken to (including Indran), highly recommend the use of a Pomodoro. The idea is for you to have a focus "sprint" for a number of minutes (traditionally 25 minutes) and stop to have a short break. This is repeated throughout the day and is supposed to improve mental agility.
-
Grow your focus gradually
This does not happen overnight. You need to teach others around you how to interact with your newly found dedication to focus time.
Dealing with interruptions
- Emergency or crisis issues should be dealt with immediately and is an interruption that cannot be avoided unless someone else can pick it up.
- Create a working agreement within your team regarding focus time.
- Use visual aids or reminders to let others know that you are focusing. This could be a sign or ornament on your monitor. Use an actual Pomodoro timer. Use your earphones with or without music. If you do play music, make sure it is not too loud as it might distract others. @Joshilewis suggested http://musicforprogramming.net.
- Minimise digital noise. Close your e-mails. Put your phone on silent without vibrate.
- When you are interrupted by someone, politely let the person know that you are currently focusing on a task and will get back to them later. Make sure you get back to them.
- Dedicate specific times where you check your e-mails and messages.
- Be aware of your calendar for that day so that you don't miss important meetings. Plan accordingly.
Retrospect
Indran ended the talk with the following striking words: Act. Assess. Adjust. In Agile we reflect on what went wrong, what went well and how can we improve. This can apply to your focus journey. Try to do things that can help you focus. Reflect on how things have been going and make adjustments and improvements where you can.
Extra Resources
- The Cost of Distractions on Developers! by Tom Lydon - A must read!
- 10 Tips to Manage Your Scattered Brain by Manal Ghoshain
- How to Stay Focused: Train Your Brain by Nadia Goodman
- Why programmers work at night by Swizec Teller - Funny read and you may pick up some focus tips in the comments.
- This is why you shouldn't interrupt a programmer comic by Jason Heeris