It is achieved when skill level is high and challenge level is high.
http://en.wikipedia.org/wiki/Flow_%28psychology%29
Flow is the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. In essence, flow is characterized by complete absorption in what one does. Proposed by Mihály Csíkszentmihályi, this positive psychology concept has been widely referenced across a variety of fields.
Flow theory postulates three conditions that have to be met to achieve a flow state:
One must be involved in an activity with a clear set of goals and progress. This adds direction and structure to the task.[11]
The task at hand must have clear and immediate feedback. This helps the person negotiate any changing demands and allows him or her to adjust his or her performance to maintain the flow state.[11]
One must have a good balance between the perceived challenges of the task at hand and his or her own perceived skills. One must have confidence that he or she is capable to do the task at hand.[11]
However, it was argued that the antecedent factors of flow are interrelated, as a perceived balance between challenges and skills requires that one knows what he or she has to do (clear goals) and how successful he or she is in doing it (immediate feedback). Thus, a perceived fit of skills and task demands can be identified as the central precondition of flow experiences.[12]The way I look at it "riding a bicycle" could fit the description given above. But I would see a world cup downhill mountain biker as being in flow. As such not everyone will achieve a state of flow, so many people will use the term without having actually experienced it.
For programming, maybe uninterrupted concentration would be a better term, or maybe I just haven achieved a state of flow while programming, whereas I feel I have in some sports.
There's even a checklist for "have I achieved flow?" so you know.
Nakamura and Csíkszentmihályi identify the following six factors as encompassing an experience of flow. [3]
intense and focused concentration on the present moment
merging of action and awareness
a loss of reflective self-consciousness
a sense of personal control or agency over the situation or activity
a distortion of temporal experience, one's subjective experience of time is altered
experience of the activity as intrinsically rewarding, also referred to as autotelic experience
Those aspects can appear independently of each other, but only in combination do they constitute a so-called flow experience.Getting in the flow doesn't necessarily mean that you can force it, just that you enable it by removing impediments, such as distractions, since absolute concentration is a precondition for getting in the zone.
It may go farther back than that. But that's as far as I know about off of the top of my head.
It is mostly associated with games (this meaning of the word anyways), especially where exposition of new challenges and use of skills already acquired in-game as to become mechanical are so neatly balanced and tuned to the individual gamer that they tend to evoke a state of flow, commonly described as "parahypnotic" state.
If I had to stretch the analogy to development, especially programming, I'd had to stretch it very far, like the article seems to infer. Your programming flow is, in this analogy, wholly dependant on the actual challenge you are facing (over which you mostly don't have control of), and more or less has nothing to do with you trying to "get into the flow" really.
I agree that it's a fallacy albeit from a different point of view.