Coder’s High
David Auerbach’s term for achieving a level of pure happiness while programming
In this article on Slate, David Auerbach describes “an intense feeling of absorption exclusive to programmers.”
One of the things I miss about programming is the coder’s high: those times when, for hours on end, I would lock my vision straight at the computer screen, trance out, and become a human-machine hybrid zipping through the virtual architecture that my co-workers and I were building. Hunger, thirst, sleepiness, and even pain all faded away while I was staring at the screen, thinking and typing, until I’d reach the point of exhaustion and it would come crashing down on me.
— Source
Some commenters pointed out that the feeling is not exclusive to programmers, and can be better characterized as a general Flow State. Auerbach addresses this and calls programming a special kind of happiness. A nonprogrammer chess player described a similar feeling, but coding “regulates the trance.”
Coding regulates that trance by linking it to an ongoing process of production and goal-directed achievement…You’re boosted by the tight feedback cycle of coding, compiling, testing, and debugging, and each stage pretty much demands the next without delay.
According to the New York Times, Auerbach is a former Microsoft software engineer who is solely responsible for introducing smiley face emoticons to America. For him, books, movies, games, and writing all pale in comparison to coding.
Exclusive To Programmers?
There is something somewhat elitist about calling the feeling exclusive to programmers, though I do not think this was the intention of the original piece. I doubt that Andrew Wiles, upon completing his work, thought: Damn it, why did I waste so much time on math? I could have been making a game instead!
What I want to describe is a term I will make up called “coding bliss,” which does not describe the continuous feeling of programming in a flow state. Rather, it describes the singular moments of programming in which a person achieves something and feels really, really good about it.
Coding Bliss is similar to the feeling a student gets when the study material clicks, or a chess player when he/she successfully executes an inescapable checkmate. Someone of Auerbach’s caliber, I imagine, experiences Coding Bliss so often that it can be strung together into a 24-hour-long marathon. For most people, probably, the feeling is more rare.
Anecdotally, these are the conditions I would describe for how to attain coding bliss. Obviously they will vary from person to person, and I envy people who experience this much more often than I do:
- Coding Bliss occurs when you solve a problem, most commonly by implementing a new feature
- It has to be something that has never been done before, though I use these terms lightly. This is not to say that you invented something revolutionary — it could be as simple as using a specific technology to meet a client’s specific need. What matters here is that you are not simply recreating someone else’s work, the way you would while following a tutorial
- The problem you are solving has to be sufficiently important. Maybe you are up against the deadline, or maybe other people are dependent on your work. In other words, your code cannot exist in a vacuum
- It has to seem adequately challenging. Maybe your boss said that it likely cannot be done, though they are still using you to gauge level of effort. Maybe one of your coworkers tried it and gave up. One of the easiest ways to kill happiness in programming is by feeling like what you did was easy
Closing Thoughts
At a career fair, one software engineer excitedly told me about a time he realized he had not showered in days. That’s how absorbed he was in a problem and that is when he realized programming was for him. I recall feeling put off and wondering if maybe this field is not appealing to many people at all.
But in hindsight, I can understand what he was saying. He was not gate-keeping, as in “if you do not feel the intense desire to program every second of your life then get out.” He was trying to explain why programming can be so fulfilling and absorbing.
Is the feeling you get when you accomplish something while programming, unique to programming? Probably not, but programming creates a lot of conditions for the feeling. Instead of being more subjective, in something like creative writing, programming creates its own self-contained, stimulating environment.