You are working on a new credit card fraud detection algorithm when your Yahoo Messenger alert starts blinking on the lower right corner of your Windows desktop. It’s your Systems Analyst asking for a meeting for a new credit card report. “I am free tomorrow 10 am” is your answer. After closing the YM window, you get back to your Eclipse editor and look at your code. A few minutes later, your colleague in front of you answers his cell phone. You can’t help but hear the list of ice cream flavors they were arguing about. You stop working for a while. After your officemate hanged the phone, you tried to get back at your program. But as you were just trying to remember why you have ‘account’ in your code, your male co-workers started converging on one area and started laughing out loud.
What was it you are doing again?
You are a smart software developer and you need a lot of time alone to finish the new credit card fraud detection algorithm. Unfortunately, only you and Einstein know that.
Programming is one of the most pleasurable moments any software developer will experience aside from sex. Unlike sex where you need at least 1 partner to enjoy it, programming requires an extensive period of time alone — something that is often forgotten even by fellow software developers.
Programmers produce their best code when they are in a ‘zone’ (others call it the ‘flow’). During this stage, developers are fully concentrated in their work as if they are in their own universe. They lose track of time and forget that their last meal was 8 hours ago.
Programmers need at least 2-3 hours of concentrated time to produce sensible work. Less than that, programmers rarely produce something important. There are moments that you go for another 5 hours but sometimes, after doing a lot of creative work, you just spend the rest of the day doing non-brain-intensive tasks like answering support inquiries, reading jokes, and surfing the Internet for the latest scoop on Paris Hilton.
Programming involves managing a lot of tiny details in your brain like variables names, parameter sequence, and where you are in that fraud detection algorithm. It is difficult to juggle these things if every 5 minutes or so you get interrupted by a phone call or laughing colleagues. This is why ‘time alone’ has a big impact on productivity among software developers. Companies like Microsoft and even small shops provide developers with their own private offices. Before you barrage me with MBA studies on productivity in an “open door everybody hears what others are talking about on the phone” study, let me ask you first if you have done any programming work. Writing a 100-page specification does not count. I am talking about dealing with arrays, pointers, recursions, hashes, joins, stack traces, Unicode. If you have not, please don’t interrupt me right now 🙂
When a programmer tells you they want to work late at night until morning the next day, it is not because they hate the sun but simply because it is much easier to get in the zone when the rest of the world is sleeping. Even in the office, there is very little possibility that somebody would call after 7 pm so you would rarely be interrupted by a phone call.
Getting in the zone is difficult to attain and even harder to hold onto. Just getting in the zone takes an average of 15 minutes of uninterrupted time. So if you get interrupted every 10 minutes, you will never reach that productive 3 hour period. And you will just have to spend your 8 hours at work answering emails, listening to ambient noise, and wondering why you have ‘account’ in your code. Even a 1-minute chat in your instant messenger can get you knocked out for another 30 minutes.
The key to reaching the zone is to avoid communication. To get started, you must give up instant messaging, phone calls, emails, meetings, and answering coworker questions. You must also protect yourself from ambient noise.
You can easily turn off stuff that you have control of like instant messaging, emails, and mobile phones. Meetings are often scheduled so if somebody asks for your availability, give the period that doesn’t overlap with your ‘zone’. Much better if you can set a ‘no interruption’ period among your co-workers. That way meetings won’t affect each other’s zone.
Ambient noise like those coming from your officemates’ keyboard can be solved by giving yourself a nice headphone. Rip some music from your Josh Groban collection and you now have your own ‘digital noise reduction system’.
Dealing with a coworker’s questions is more difficult. There is no incentive to ignore your co-workers unless you want to get ostracized. Helping a colleague is also another way to increase your good karma points. However, if you want to get productive you must give yourself uninterrupted time even if it means telling people to respect your “Do not disturb” sign on your cubicle. (You can also do that in your instant messenger) Don’t worry about people perceiving you as rude. People who knows the nature of programming and productive themselves will surely understand what’s going on when you are in the ‘zone’.
We are also guilty of interrupting ourselves. Sometimes when we are stuck in our work, we change tasks like surfing the Internet, reading a book, or updating our blog. Just as it is important for other people not to interrupt you when you’re in the zone, it is equally important that you manage yourself that you stay focus on the programming task at hand. Oftentimes, it is more difficult to tell ourselves to shut up and work than to tell our co-workers to “leave me alone”.
Don’t confuse working alone with not interacting with colleagues. You also need to set a time that you will be available to your team and customers. The key is to determine when you want to get interrupted and when you don’t want to, and to balance the time alloted for each.
So how would you set the no-interruption time? The simplest way to do it is to set up a no-interrupt time and make sure everybody follows – no instant messenger, no email, no “Hey”, no phone calls, no meetings. Just work, work, and work.
“The unspoken word is capital. We can invest it or we can squander it.”
— Mark Twain’s Notebook