While many well-intentioned people tend to think of software development as a mechanical process—a mere transcription between thought and code—this is so far from the truth as to emit wry laughter from those more knowledgeable. A software engineer’s job is to continually and effectively derive solutions out of the void of abstract problem spaces: an inherently creative and often unpredictable task. It isn’t an easy job, and to perform it effectively requires hours of uninterrupted concentration.
The problem we face is that uninterrupted quiet time is slightly more difficult to acquire than five kilograms of plutonium. Most offices are set up as an open environment, which, all in all, is a Good Thing™. However, it can become problematic if the background noise is excessive or if co-workers too frequently stop by for visits. On hectic days, concentration is as hard to grasp as the memory of a dream after waking. How do developers compensate for these distractions?
If background noise is keeping you from concentrating, invest in a good pair of headphones. Don’t buy ear buds, as these will become uncomfortable after several hours and are less effective at blocking out extraneous sounds. Choose an ambient soundtrack that won’t distract you from your work. Classical music and trance are usually good choices in this respect. Just don’t choose something that’s going to put you to sleep after an hour (unless your management is especially tolerant of slumber).
If the problem is a co-worker (or even your boss) who is too often checking in on you or just stopping by to chat, honesty is the best approach. Simply say that you’re working hard and need to concentrate, and this is really all that is needed. It’s necessary to be clear about this because the difference between a complicated task and a mundane task is not at all apparent to someone who’s just glancing over your shoulder. Be clear about what you’re doing and why it’s important that you need to concentrate.