I work in an open-office space. I am a pretty social guy. I love that I can feel that my co-workers are around, interact with them, and ask them questions in person. However, sometimes when my mind is focusing on solving a coding problem, an urgent bugfix, or think abstractly about application design, I need to dive deep into a subject for a long time. I start to explore different ways to make my development day productive, and I want to share what have been working for me.
Being a productive programmer means that we know how to measure, how to focus, and how to divide and conquer a big task.
To become more productive, we first must know how to measure productivity. Establishing a concrete measurement can guide us to make better use of our time. We can start tracking our time and give ourselves a week where we log every single hour of our work day. In fact, this approach isn’t new to many of us. Some companies require timesheet for billing reasons. We can develop the similar timesheet for productivity.
Another technique that I find very useful is called “Pomodoro Technique.” This method divides time into 25-minute sessions; each session is a work unit, and we take a short break after each session. After a day, we can count how many Pomodoro sessions we finished. I use this method to track my development time on a daily basis.
Programming requires intensive concentration on a subject. With so many distractions around us, it takes effort not to multitask. However, to maximize our programming throughput, our brain needs to get away from distractions. Even in an open space, there are certain things we can do to minimize distraction. I’ve been doing the following:
Buy a noise-cancelling headphone. Noise-cancelling headphones are not cheap but well worth the investment. I have a Boise acoustic headphone and I love wearing it when I am programming. I also inform my co-workers not to interrupt me when I have my headphones on, and they can leave a chat message if they need to reach me.
Divide focus session using “Pomodoro technique.” I follow 25-minute session and take a break after each session. During the break, I will walk around, try to relax, and also catch up on chat in case someone needs my immediate attention. One nice thing about Pomodoro session is that I can always catch up with others and make sure nothing urgent is left unresolved for too long.
Shut off chat, social media, even Internet. That 25-minute should be away from any distractions. In the beginning, it was tempting to check social media during the session. I did my best to resist the urge and focus on the task at hand; the urge diminished eventually, and I find each session more productive.
We know how to track productivity and how to schedule focus session, we also need to develop a habit to make each focus session productive. When we face a complicated task, it may appear overwhelming because many things need to be taken care of for it to work. For example, if we are developing a feature for an iOS app, it may require many things to work, such as API connection, user interface transitions, and so on.
When facing a complicated task, we can divide it into smaller tasks, and conquer smaller pieces individually. We can take a step back and think about what are the smaller steps we must accomplish, WRITE THEM DOWN, ONE BY ONE, and check each sub-step off as we go through them. This checklist technique can reduce mental overhead and make sure that we don’t miss any steps, and also allow us to go back and check history in case something goes wrong.
For example, let’s say we’re developing a feature within an auction app that allows users to submit bids. The technique may be like this
As a user, when I log on the app, and I saw an auction item, I should be able to bid on an item
We can break it down to the following checklist:
This checklist allows us to focus on each step and make increment progress along the way, and this techniuque is also discussed in detail in the book checklist manifesto.
Making ourselves more productive is a joyful process. We should put attention towards how to work smarter every day. In the comment, feel free to share thoughts on the post, or share others productive tips with us!