You better lose yourself in the music, the moment
You own it, you better never let it go - Eminem
I enjoy programming the most when I am in what I like to call "The Zone". In the movie Social Network, they refered to it as being "plugged in". Infact I have come to realize, all cinematic moments of hacking/programming is when the coders are in a state of what is academically known as FLOW. This is not a true representation of a programmers life. We spend a lot of time thinking, sometimes head banging and depending on where you work or what you are working on, you may spend time brainstorming with others. Just a fraction of our time is spent typing and a smaller fraction of that actually in the zone.
In most of my years programming, I always thought the ability to zone out and get into this trance like state where you are physically present but you are not really there was a fluke. Once in it you are not really hearing the music you are listening to or even concious of how much time has passed but they are all still part of your experience. Then when you wake up and look at the code you wrote, you may even marvel at the work done, like you where not there when all this glorious code was written. I imagine this is some variant of a runners high. I always thought this was just a sign of how much I liked programming and I got lost cause it was fun. I guess it is also because I enjoy coding, but I never really understood it as a state of mind until I was introduced to the psychological term by one of the engineers at my first job and then later watched Mihály Csíkszentmihályi's TED talk on it. After this realization two things happened. The bad thing was that I stopped feeling special, in hacker terms we would say I stopped feeling "elite". The good things was that I realized this was not just something that "happened" to me. This was a state of mind I could engineer. I went on a quest to see what series of events gets me to this state and I found it. Below are a list of things that when some or all are put together brings out the "elite" hacker in me.
- Music matching my mood
- Relatively quiet but active environment (noisy section of a library)
- Complete understanding of the tasks I need to complete
- Complete knowledge of the steps needed to complete them
- Comfort in programming language or framework
So anytime I can, I always try to code in the zone.