February 13, 2011 by huionn
I think most developers have similar experience of “flow”:
- high degree of concentration
- loss of sensing of surrounding
- distorted sense of time
- high productivity
According to Wikipedia,
“Flow is the mental state of operation in which a person in an activity is fully immersed in a feeling of energized focus, full involvement, and success in the process of the activity”
Mechanism of flow
In every given moment, there is a great deal of information made available to each individual. Psychologists have found that one’s mind can attend to only a certain amount of information at a time. According to Miller’s 1956 study, that number is about 126 bits of information per second. That may seem like a large number (and a lot of information), but simple daily tasks take quite a lot of information. Just having a conversation takes about 40 bits of information per second; that’s 1/3 of one’s capacity. That is why when one is having a conversation he or she cannot focus as much of his or her attention on other things.
For the most part (except for basic bodily feelings like hunger and pain, which are innate), people are able to decide what they want to focus their attention on. However, when one is in the flow state, he or she is completely engrossed with the one task at hand and, without making the conscious decision to do so, loses awareness of all other things: time, people, distractions, and even basic bodily needs. This occurs because all of the attention of the person in the flow state is on the task at hand; there is no more attention to be allocated.
For developers, it is important to stay as long as possible in flow state to be productive:
We all know that knowledge workers work best by getting into “flow”, also known as being “in the zone”, where they are fully concentrated on their work and fully tuned out of their environment. They lose track of time and produce great stuff through absolute concentration. This is when they get all of their productive work done. Writers, programmers, scientists, and even basketball players will tell you about being in the zone.
The trouble is, getting into “the zone” is not easy. When you try to measure it, it looks like it takes an average of 15 minutes to start working at maximum productivity. Sometimes, if you’re tired or have already done a lot of creative work that day, you just can’t get into the zone and you spend the rest of your work day fiddling around, reading the web, playing Tetris.
Developers crave a state known as flow… All developers know this state: it’s when you are so focused that time disappears, you develop an almost symbiotic relationship with the machine and the problem you are attacking. This is the state you’ve been in when you say, “Wow, have four hours passed? I didn’t even notice.” The problem with flow is that it is fragile. One distraction pulls you out, and it takes effort to get back in. It also suffers from inertia. Late in the day, you have to fight harder to get back to that state, and the more times you are abruptly pulled out, the harder it becomes. Distractions kill your focus on the problem at hand, making you less productive. Fortunately, you can effectively block distractions in a few simple ways…
~ The Productive Programmer – Neal Ford
In the wikipedia about flow, I found there is an image of mental states. In Chapter Seven Seconds in the Bronx of “Blink” by Malcolm Gladwell, the author explain in length about the characteristics of mental state “Anxiety” and “Arousal”.
“… exteme visual clarity, tunnel vision, diminished sound, and the sense that time is slowing down. This is how the human body reacts to extreme stress, and it makes sense. Our mind, faced with a life-threatening situation, drastically limits the range and amount of information that we have to deal with. Sound and memory and broader social understanding are sacrificed in favor of heightened awareness of the threat directly in front of us.”