So, the movie The Social Network introduced to the general public the concept of programmers being “plugged in.”
That is, that there are times when you must not disturb a programmer, because they’re doing Great Things.
Well, it’s true. There is a different state of mind that programmers (and probably a lot of other professions) have. The concept of being plugged in goes by many different names. I prefer to call it being in the zone, or zoned out. However, the reason why you shouldn’t disturb a programmer who is deep in their code, is because it just plain sucks.
First, let me explain what being deep in the code is like.
… um… It’s like when you…
Okay, no, it’s easier to describe the taste of salt to someone who has never tasted salt. If you have been in the zone, you know what it is, and if you haven’t, then it can’t be described to you.
However, I can describe the things that I notice after I come up.
Time passes oddly. A person can lose several hours, thinking only a dozen minutes have passed.
Abstract concepts spring up easily. It becomes as easy to think of a database as it’s easy to think of a grain silo, and a connection to that database is as easy of a concept as a truck where the driver has to carry the right forms to get the right goods. Equations spring to mind. It becomes as easy to see a program as it’s easy to see an assembly line or a supply chain.
The world disappears. You can’t hear anything unless it is truly startling (which is why programmers tend to wear ear phones… to drown out anything that might be startling). You can’t see anything except what is on your screen… and even then, you’re not paying attention to the words, you’re thinking of the concepts behind them. There is nothing but the code… at least, until you run out of coffee or have to go to the bathroom, or your wife calls you in to take out the trash.
Understand? Good.
With this view of being “plugged in,” “in the zone,” or “deep in code,” we can now discuss what it’s like to be distracted.
It sucks.
Imagine you’re in a dream… Could be any dream… well, not a nightmare… you’re just in a generally calm dream.
You’re walking along in the dream. Nothing eventful is going on. Life is good.
Then you fall over in your dream and wake up. You’re wide awake, fully alert, and you have that sickly feeling in your stomach from a sudden surge of adrenaline.
You don’t know what has been going on around you, you’re totally disoriented with your fight-or-flight instincts kicking in, still partially paralyzed from sleep.
That’s a lot what it’s like to distract someone who is deep in the code.
Like I said, it sucks. If you have to distract a programmer, treat them like you’d treat a sleepwalker… Get their attention, let them come out of their trance, then after they’re awake you can tell them what you want to tell them.
Some programmers react violently to being distracted. They don’t tend to keep jobs, though, and are few and far between. Some programmers tend to get resentful of being distracted. They need to get over themselves. For a little while, they’re programming, and what they’re doing is the most important thing in their universe, and then along comes reality to remind them that there are other things in the universe too. The thing for them to remember is that they can re-enter the zone, that the zone is always a temporary state, and the more they deal with reality, the less often reality distracts from the code.
How does one enter the creative zone, so close to Nirvana, etc?
Simple: Do something creative that you’re genuinely interested in.
The more you do it, the longer you’re able to hold on to that feeling.
The benefits? Um… It feels good.
It really doesn’t create more inspired code. Inspiration creates inspired code, and you can be inspired no matter how lucid you are. (Honestly, the more lucid you are, the better the code, over the long term.)
It doesn’t make you write code any faster. People who say it does are under an illusion caused by them just not paying attention to the time. Being deep in the code distracts you from paying attention to the time, it doesn’t warp time itself. While it is harder to be distracted from programming while in the zone, being disciplined is far more reliable and far more effective at keeping a programmer productive.
So, really, there is no reason why a non-programmer should keep from distracting a programmer who is “plugged in.” There are no benefits for the program, no benefits for the company, etc.
But, even with no objectively measurable benefits, it is awfully kind to let someone in the zone keep on working in the zone.