A number of sources, most recently ProgrammingOutsideTheCube
and the RingerTape
page, say that many folk find it takes time to get into a state where work flows. Do you plan to get into flow, does it come upon you more as a kind of inspiration, or is it not necessary for you? Do you use tactics to improve your team's ability to flow? Which particular events disrupt flow the most, and how do you solve them?
For me, flow requires both inspiration and expiration, if that makes sense. I need to get out into green places or seasides to drink in what's around me, and then I can breathe that vitality back into my work. Does this happen similarly for others? I think flow is vital for quality work - what's the best strategy to improve it? -- PeterMerel
Interesting but difficult to summarize: http://sifter.org/~simon/journal/20040728.2.h.html
The mental state that psychologists call "flow", and its impact on your project, are well described in chapter 10 ("brain time versus body time") of PeopleWare
. Chapter 30 of RapidDevelopment
quotes heavily from PeopleWare
, and even includes a relevant Dilbert cartoon. Both refer to IBM's SantaTeresaLaboratory
, which was designed, based on scientific studies, as a place where designers could be productive. (Yes, they have offices with *REAL DOORS*; and lots of desk space.)
"Flow" is a mental state of deep concentration. It typically takes about 15 minutes of uninterrupted study to get into a state of "flow", and the constant interruptions and distractions of a typical office environment will force you out of "flow" and make productivity impossible to achieve.
My wife & child have learned to detect, even from a great distance, when I have entered a "Theta Rhythm" state - what you are calling "flow". They do not use this information to benefit my project. -- PhlIp
About 20-30 minutes of Zen meditation once or twice per day should be a great help. Over time, you find that the lesser self
(superego), is progressively quelled to a point where you can consciously step in and out of the flow
. The superego referring not to the seat of our consciousness (ego), but the seat of self-criticism, conscience, and other complex and contradictory artifacts of social conditioning.
I find problems draw me into them. When they draw me in, I get into flow. I find it hard to design without that. It is a state of balancing ideas and arguments and program flow and the state of objects. All I need is a bit of quiet and the knowledge that I am going to have the next two hours to immerse myself. Often I only need half an hour to address a particular problem, but I need to think I am going to have 2 hours. Other times I sit, think and type until 2 a.m.
Telephone calls and meetings and distractions in general are the enemy of flow. One of my colleagues works from home one day a week to avoid distractions. I have heard some places have official no-meeting periods. In the Surviving OO Projects (shameless ad) book, there is a project management pattern related to distractions called Team Per Task, which says "Split the team, and sort the activities so that each team has a primary task with additional sympathetic activities... To increase flow time, distractions have to be reduced...", and then goes on to name some activities that permit flow and that break flow.
I haven't met any people who don't need flow to design, but imagine all types of people exist. Have met lots of people who need it.
Flow to me is evidenced in looking up ten minutes later to find that hours have elapsed. A comfortable environment helps. Lack of interruptions is essential. I am coming to believe that you can train yourself to get into it more quickly, and to recover more effectively from interruptions. -- RonJeffries
has a tack on this sort of thing. In addition to the "everyone has their own office" policy, I've read that they deliberately do not use the phone or go around to people's workspaces. Email is the preferred way because it is non-intrusive. You attend to it when you fall out of flow.
Flow is okay for design, but I often deliberately look for distractions so that design comes at me from the side. The best designs find me - I don't find them. Often by talking to someone or jumping around the room. I get into that state where half my mind is on the problem and the other half is roaming about. Explaining a design to someone else helps me a lot also. In the process of articulating, one part of my mind is distracted enough to let the good ideas slip out rather than keep them under guard.
Certain times of day are more productive for me than others. 10am till 12:30 is the best, assuming I start work around 9. It makes sense for me to schedule less creative stuff for the afternoons.
Is there a difference between flow and being stuck in a rut? In both cases you can be completely absorbed by a problem...
Yes, there definitely is. In flow, you're progressing. One of the hardest things to do is to convince someone to pull away from their task when you see they're in a rut and they keep thinking that if they keep staring at the code they'll find the problem. The trick is to become extremely sensitive to the pain that comes when you aren't progressing. A dead giveaway is cursing. -- RonJeffries
I use to get into flow around 9pm, but nowadays I just get sleepy...
I get into the office around 6:30am. Coffee is brewed, GoodThinkingMusic
is put on my CD player, email is read and then I start writing/designing/coding/etc. No-one is in the office, the sun is just coming up, my music doesn't disturb anyone and the phone isn't ringing.
Once the office comes alive (10am around here), the flow is interrupted.
Sometimes, meetings happen. In design meetings I encourage the use of CRC cards and large whiteboards. I also try and get the largest conference room (for walking around, kicking back and staring out the window). (At my old job) as a team, we reach flow when the cards are in play, or someone frantically scribbles stuff on the whiteboard and we all are in sync (we know what is going to be written before the writer finishes!).
I am a new employee at my job; I am still trying to figure out how to get team flow going.
I was working on a power transmission simulation, when my friends rapped on the window of my office door. As we walked down the hall I asked where we were going to eat. They looked at me with surprise, and told me that at lunch time I had looked so engrossed that they had decided not to disturb me, but that now it was 5PM. My office had a wall of windows no less, and it was winter time, and dark outside.
I have noticed that, during group flow sessions, they are not as intense, but quite durable. One thing that can easily quench group flow is management sticking their heads in the door. Good managers read the signs and quickly withdraw.
Daniel Goleman, in The Meditative Mind
- The key elements of flow are
- the merging of action and awareness in sustained concentration on the task at hand,
- the focusing of attention in a pure involvement without concern for outcome,
- self-forgetfulness with heightened awareness of the activity,
- skills adequate to meet the environmental demand, and
- clarity regarding situational cues and appropriate response.
I have experienced flow in situations as varied as coding, riding a bike, writing fiction, writing music, playing video games, painting, and more. It's generally very satisfying
, and 'awakening' from the zone, when doing creative tasks, the results are often something to take pleasure from. If only I could get into the zone more often.
Goleman's description rings true for me because whenever any of those five elements are missing, I find the zone unattainable - and indeed it can be actively frustrating or stressful, in the wrong circumstances.
An example might be when under extreme deadline stress late at night - the concern for outcome can knock you clean out of the zone (2). Or if you are hungry or excessively tired, you are too distracted (3).
A coding-specific example is when bad design has left you far too many variables to juggle in your head (4).
Another example, outside of coding, might be playing a fast-action game such as Quake, with heavy lag (latency between mouse movement and on-screen response). This destroys the situational cues that guide your actions (5).
I'd love to hear if people have techniques for getting into the zone. -- Canis
Another book: FlowThePsychologyOfOptimalExperience ISBN 0060920432
. After outlining some research and observations, author Mihaly Csikszentmihalyi tries to pull it all together into a life-view promoting this state. In FlowThePsychologyOfOptimalExperience
, it is described how you can have flow with other people or team...
To me, "flow" is a state in which your conscious mind/superego stops telling you why you can't do something and lets the rest of your mind/body get it done. I've never been much on social graces anyway, so with all due apologies to Siggy, my superego checks out rather easily. It's only really bad if I'm on a bus at the time, (what do you mean, end of the line?)
It is often coupled by a pseudo-amnesiac state; eg. when I strike a golf ball well, my last thought is generally something like, "Ok, slow backswing..." and my first thought afterward is something like, "Where did it go?". The backswing thought is part of a set of muscle memory cues / mnemonics which trigger me over into the flow state.
In mental activity, I find a similar set of triggers are helpful. In writing fiction, for example, I generally begin (yes, even in the middle of a longer piece) with my beginning point marked, by writing about my last dream. Generally within a couple of paragraphs the writing merges with the original story and I'm in flow. Occasionally, I'll actually come up with something in this prep stage that bears following up, but that's bonus.
-- Jordan Antonelli
I ran a think-tank session on Flow (called Unblocking :-) ) at OtTwoThousand
, the process of which resulted in a number of proposals for promoting flow at work, which were ranked according to impact and ease of implementation. Outputs and some reflection at http://www.davethehat.com/ot2000/unblocking.htm
. -- DavidHarvey
Kick "brainstorming" around some time, disparaging editorial comments.
I don't understand this comment - I've looked back at my page and find it hard to see how anyone could find the commentary disparaging. And the whole point of such a session is that it is
brainstorming - directed, under time pressure, with a clear goal. What's the problem? If the anonymous poster would care to respond, elaborate (& perhaps identify themself). -- DavidHarvey
I didn't write that and I don't find it totally clear either, but maybe it means "letting ideas run freely without judgment can get you into flow". -- RussAtkind
I used to think that flow was very, very important. I think it is
when I'm programming alone. I find that I don't mind interruptions so much or think much about flow when pair programming. Why is that?
Perhaps because the interruptions are usually related to whatever you're working on? It's different from some manager coming over and asking "What's the status on ABC portion of the system?", when you're actually focused on the XYZ portion.
Yes, but there's more to it than that. Even when the manager does come over to talk about the status of ABC, I find that it's relatively painless to resume work on XYZ once the interruption is over. Why?
When I'm programming alone, I have to hold the entire state of the system, macroscopic and microscopic, all layers, in my mind at one time. Unfortunately, my brain's innate capacity is only barely sufficient for this challenge: (1) requiring me to dedicate all of my memory resources to the task (flow is a prerequisite for useful solo work), and (2) making me very intolerant of disruptions, because they require me to free up processing space, which forces me to discard the information I have painstakingly uploaded.
When I'm programming in a pair, the other programmer is holding half of the state (either macro- or micro-), and my brain's resources are dramatically less oversubscribed. I can handle interruptions easily, because I have swap space free, and can get back to the task without delay when the interruption ends, because I haven't had to drop any working storage to handle the interruption.
If I had a larger brain capacity - well, I'd probably be tackling more difficult projects, and still have the same dynamic going on.
Oh, another thought - when I'm pair programming, I must of necessity keep the verbal and communicative modules uploaded in my brain - which is part of what I discard when programming solo, so as to make more room for the task at hand. If I'm deep in "solo flow", it can take me as much as 30 seconds to reload the parts of my mind that handle understanding and replying to verbal communication. In pair programming, part of the flow is the conversation, so I always have those modules loaded - and most interruptions hit the conversation modules first and hardest.
True, and good points. But there's also a simpler reason: the fact that there is another person sitting next to you and waiting for you serves as an anchor. Think about it - you get a unrelated phone call - when are you more likely to get off the phone more quickly - when working by yourself, or in a pair?
I think I finally figured it out. On the misnamed page FourProcessesOfConsciousness
, I described the interaction between consciousness and the universe as being a cyclical process consisting of four stages: perception, thought, action, and feedback. Flow is a version of this cyclical process where your thought and the universe's feedback seem to take almost no time - it seems like you are doing perception, action, perception, action, in a very
tight loop. That might provide a hint of what it takes to create Flow: you have to get feedback and thought to work as quickly
as possible. Flow would be easier for professionals to obtain than amateurs because amateurs more often have to stop and think about things whereas professionals have experience which makes stopping unnecessary. -- EdwardKiser
Has anyone here tried earplugs instead of head phones? -- DavidSalamon
I made a CD of Brown Noise once; does that count?
(What's brown noise, by the way? I know only white and pink... see http://www.dogstar.dantimax.dk/testwavs/
I have found nothing like good mellow techno to help me get into whatever flow it is that I'm trying to get into. The rhythm helps, I think. -- RobRix
There's also blue (and even green!) noise, which has "pleasing" properties when found in sound and graphics, and is of interest in fractal research. See the "colours of noise pseudo-FAQ", http://groups.google.com/group/comp.dsp/msg/3ae211b7cb0f2a76
These are also discussed in The Science of Fractal Images
(Peitgen) and Digital Halftoning
(Ulichney) -- TobyThain
There's flow at work in art as well; I think flow would probably be a factor in just about anything creative. Anyhow, Betty Edwards describes it fairly well in DrawingOnTheRightSideOfTheBrain
; at least for art, it has to do with which hemisphere of your brain is handling the task at hand. Your left hemisphere just isn't as good at drawing as your right hemisphere is (unless maybe you're an expressionist, but that's another thing entirely). -- RobRix
Australian Motorcycle News (AMCN) Vol 52 No 24 has an article on "Flow" as experienced by Grand Prix motorcycle riders. Wayne Rainey was quoted as saying he had a virtual out of body experience during the racing, where he found himself giggling and laughing while piloting the bike (these things do 200mph btw). The key point was he was in a zen like state of concentration where absolutely everything made sense, everything was easy, everything could be controlled, and nobody could beat him. Riders like Doohan claimed to be in this state for every race, and getting there required an elaborate set of preparations, verging on being ritualistic in their precision. I think for the sportsperson the state of 'Flow' might be a bit different due to the fact it produces a 'whole body' type experience, but I find it interesting that Flow is something shared between two things as different as motorcycle racing and typing on a keyboard. -- LukeBurton
I have done long distance bicycle rides and can appreciate the idea of flow. Usually when I ride to/from work I think about what I am supposed to do that day, or will do tomorrow; this saves me a good deal of time when I get to work. In science we also do the flow process, unconsciously, since our projects always flow from one stage to another. I think flow is the ability to set aside a part of your mind (ie while riding a bike) and thinking about the task at hand, and visualizing solutions for the task. Maybe riding a bike is good flow training. -- Rob Dejournett
I'm not able to go on long bike rides, but when driving I get very into the flow and think and dream and sing and generally act slightly psychotic, but all while driving much better than I do when, say, Dad's in the car and is talking to me about the driving. I find LessTalkingMoreDoing?
suits me fairly well. -- RobRix
I remember one project where I entered the flow in really strange circumstances.
There was a messy Swing code that I inherited. It was supposed to be presented to a potential buyer at 9AM. I was awake, but really horribly sleepy at 4AM, trying to chase out the last bug. I drank really too much coffee.
Somewhere about 5AM I got sick, and threw up all the extra coffee I had, I guess the nerves have done its job. After cleaning myself up I knew straight away where the problem was and how to fix it.
Can throwing up make you get into the flow? -- IvanStojic
Most any kind of mental purging probably helps. Also, as anyone who has thrown up before knows, one usually feels quite "all right and lucid" afterwards - assuming you have something to get rid of the taste, but the whole thing might just be a rush of endorphins
I don't know about throwing up, but sometimes an interruption helps the subconscious sort out a problem. On many nights during the videogame project from hell I'd leave the office, get in the car and start for home, only to have the solution to the latest problem pop into my head on the first hill about a half mile away. Since then, I've learned to harness that interruption process for problem solving. It's a different, subconscious type of thing, not flow at all but (I think) related somehow.
I have a book called "PsychoCybernetics", technically a self-help book, but which brings together quite a few interesting psychological ideas. One that I find the most interesting is the idea that the subconscious is an important tool of your mind. It's relatively "dumb", like a computer, but remarkably efficient (also like a computer) such that if you direct it properly it can solve a difficult problem with a fraction of the effort you'd expend with your consciousness. The book contends directing the sub-conscious is often as simple as feeding plenty of relevant information to your mind about the problem, mulling it over, with or without a lot of conscious problem-solving, i.e. *focusing* on the problem. At some point, you'll have to leave the problem alone - e.g. sleep - and so long as you don't load your mind up with too many other problems to solve, your subconscious will beaver away at it, trying to find a solution. The answer may simply pop into your head as if by inspiration. Granted, that's a very simplistic description (and possibly not-very-accurately remembered) but it often seems to work like that for me. The book also suggests trying to solve problems by conscious effort alone is working against this innate process
Interrupting Failure and ceasing to indulge in artificial remedies can, when followed by a period of reflection on solving what is a tangible, real problem rather than that which is a result of something you may have done to make things worse, begin a solution by putting oneself in a secluded, InterruptFreeZone?
, leading into a mental state where ideas begin to come together, forming intuitive freeform solutions which never come during intense concentrative effort along some preformed path. It often brings you to a simple solution, which when compared to what had been done, leads you to discard the wrestled with, convoluted previous attempt.
lainEnglishTranslation: If you'd stop drinking coffee and work where you won't be interrupted, and start with the end in mind, your mental state might be such that you can end up with a solution. Not only that, but it might be better than what you had been working towards before, since it will be tend to be straightforward, not a tangled mess.
As a growing musician,I can safely say it takes flow to make a professional. It is impossible to produce truly exceptional music without flow. Tone has to be beautiful, internal time has to be kept and then synchronized with the conductor, intonation has to be adjusted constantly, and, most importantly, adjustments must be made to the other musicians, and the music itself has to get played. My brain is not built to handle that many issues at once. I only produce good music when flow, usually after I hear the group around me producing amazing music. Only then do I relax enough to let half of the problems take care of themselves. I play the flute, so I literally imagine the air flowing through my body into the flute and suddenly half my problems take care of themselves. The point is that flow just doesn't happen. I only get there when I know what I'm doing and I'm not thinking about the problems I have to deal with. The best way to play music is not to think about the technical aspects of that run coming up, but to recognize its beauty, and let it take care of itself. -- JasonEspinosa
Proven flow improvers for me: A walk at lunchtime - (Walking in a nature area 20 minutes, or any exercise improves mental focus by 10 to 20%.) Morning time is the best time to discover flow. (Ever read the book "Happiness on $7 per day"?) - Be a creature of habit! One of the main characters (a writer) in the book awakes at 5AM daily and works until 10AM. For me, one of my best flows happen after taking Ginkoba (herbal supplement) and Vitamin B supplement, the night before (gives you vivid dreams), working out the morning, then having a good cup of coffee - Your brain goes into overdrive. -- DonRota?
Certain elements in the UserInterface
of Software can interrupt flow. Should software be designed in a way that supports working in flow? (I say: yes!) Interesting article on this: http://www.acm.org/ubiquity/views/v5i27_bederson.html
What you eat immediately before whatever your activity is can really have an effect; when I was in college, eating a small cereal bar and drinking a glass of juice before an exam seemed to have a positive effect on my performance. Now, I grab a RedBull?
and a granola bar for a similar effect. -- KyleMaxwell
Try juggling. When your mental cogs get jammed up, juggle for 5-10 minutes. Think about nothing in particular but throwing and catching the balls. The cogs will re-oil themselves.
Or do martial arts. It seems that any skilled-yet-mindless physical task helps. I often love walking or biking at random, just to get me away from distractions and let me chew over ideas.
I realized about a year ago that folding origami does this for me, for basically the same reasons...repetitive, focussed, mindless actions. I'm working on a short essay about it now; I'll post some version of it here once it's done. And oddly, I just started learning to juggle, suspecting it also has these qualities (it just looks fun, too). -- DanielBernier
I have found that when I have been wrestling long and hard with a design or coding problem on a project in which I am deeply engrossed, mental processing continues on and off in the background until I go to bed - at which point all outside distractions drop away and are often replaced by a great clarity and relaxation. In this 'zone' I often find solutions popping into my head just as I'm falling asleep - on one memorable night this happened three or four times, each time presenting a simpler and more elegant solution. Having to climb out of bed and find pencil and paper each time is annoying, so now I keep them ready on the bedside table. This seems to be a halfway state between the MentalStateCalledFlo
. I wonder if this kind of experience was the basis of the apocryphal story of the discovery of the ring structure of benzene by Friedrich August Kekulé von Stradonitz (http://en.wikipedia.org/wiki/Friedrich_August_Kekul%C3%A9_von_Stradonitz
)... -- DaveLorde?
I've always thought of flow as 'the zone'. I find that playing Tetris (of all things) can get me into the flow/zone pretty effectively. Something about the falling blocks, optimization of placement, thinking ahead, etc.
The bus, believe it or not, is the place where I can get into flow immediately. I ride the bus to work each day, here in Honolulu. I write on my laptop while riding the bus. It has the right mix of factors ...its a period of time when I am not interrupted, it occurs at the same time every day, it's not too comfortable - which is important for writing and thinking - It's not a sterile, silent environment - often crowded and sometimes noisy. But I was able to write and finish an entire book (America 2076) about technology and the future of democracy last year thanks to my daily busrides. -- Ralph Perrine
I've always thought about flow as the Zen concentration state, when your mind is 100% focused on churning out line after line of code for as long as you can. There are three ways for me to trigger it:
- Hot blood, that is, very intense motivation -- the Japanese nekketsu, you see it a lot in shounen anime. Usually happens when the final projects are around the block, or when I'm about to prove a teacher I'm not an easily flunkable man.
- Food. Tasting something calms you, it's a well-known physical fact. If your mind is burned out after a long coding session, take a little nibble and see how the work starts flowing!
- When at home, beer. Every time I've tried it, I went into some sort of Zen-like trance where all I do for the next hour is writing line after line after line. The first time I tried it, I was learning how to do a linked list in data structures 101, and next thing I knew, it was all done and working!
- Lately, combining a cup of coffee and a cigarette = instant intense concentration for 2 hours regardless of how mentally wrecked you feel. It's how I overcame my last internship at college right before graduating. (Of course, the day after finishing college I literally slept longer than I was awake!)
Hey hey everyone... all conditioning makes us believe that we need to do something or follow a system to have anything we want in our lives. We do not. Our wishes have no choice but to be granted. Any state of flow you wish to have is effortlessly created by you if you want it, you perfect all powerful and all knowing being, and do not let anybody else let you believe that you are any less. In fact, the only way you can create it is without effort ;-)
If you are really struggling to enter the state of flow, chances are it's your subconscious trying to tell you that you are just WorkingOnTheWrongThingAltogether
Smoking's bad, no doubt about that, but it probably saves me four hours a day. Sometimes, I can spend hours reading code that I didn't write and barely understand, and still have little insight into it. It's only when I go outside, gaze off at the trees, and flick my Bic that I suddenly see that the post-increment on line 629 is the problem, and everything would work correctly if it were a pre-increment, and in fact it must've been (indirectly) until someone modified the function, changing a function call to a direct expression in order to fix some other bug. I go back in, tap a couple of keys, and all is right with the world, except for my lungs. Then, with one bug down, I'm in the flow to collapse a whole slew of them.
The only pitfall to flow is that it is precisely when you are in this state that you ForgetToSave
If you've been in that zone for 2 hours and get a crash, there goes your two hours. You're guaranteed a nice DumpShock
On some editors, auto-save may stop working and you may not know it. I ended up getting tired of this and set up an automated 10-minute popup to MakeMeSave?
. It works.
There are different ways of leaving the MentalStateCalledFlow
. The inconvenient one is DumpShock
(where another way is also described).
Interesting things happen if you have to do MentalSwap
: Being deep in one topic (feature, algorithm) and have to go into another one quickly. You can literally see the people swapping data into and out of consciousness. At least for me I can feel it.
When I'm in flow and are asked some question I postpone the answer with a short "wait a moment" (which I manage without leaving flow). I cannot say more and I don't start thinking about the question. All I manage is remembering that I was asked and have to BrainDump?
. When I reach a suitable SavePoint?
(e.g. written down all pending open ends), I will come back to whoever asked me (hopefully) and ask to restate the question.
I think I can fairly quickly enter flow, but often the questioner - giving lots of details - forces me to repeat the first sentence because I first have to - well - swap in the topic at hand.
Do you HaveThisPattern
See also the MentalStateCalledFlo
I think you are trying too hard. The state called flow is easier. Flow is just becoming mindful of the task at hand in a way that facilitates its completion. When I hit flow the music playing doesn't matter, while i hear it it is not important to the task, people interrupting are normal occurrences, I handle the questions as part of the flow, perhaps with a deflection til later.
Flow is a stream, endlessly going by but there are all sorts of things carried by it. The river deals with these items by acknowledging them but it does not grasp onto or attach itself to these obstructions or flotsam it smoothly integrates them into its great work of moving along dealing with each as it sees fit.
Just do, focus on the task, become mindful of the possibilities, flow is easy
I feel as though the concept of flow you all are talking about needs to be seen the other way around. We should constantly be in the stream of flow and only step on the shores of stress and anxiety for minutes. The flow you all have pointed out does not necessarily have to be concerned with the work environment but should be seen as a life perspective. Some of you may be thinking that the thought process alone is a lot to deal with. But I will remind you that the human brain is capable of thought processes not manageable by the worlds leading super computer. The fact that we have a sub-conscious and an unconscious means that we practically have 3 times the processing and hard-drive abilities a super computer would. That is your heart beating the blood running through your veins fighting disease and keeping you maintained.
All I ask is that you constantly stay on the stream and go to shore when interupted.
Programming a computer is - easily, there is not even a contest, there is no second place prize - the MOST DIFFICULT task so far available to humans.
To repeat, programming a computer is simply _the most difficult thing a human being can do_.
Notice that I did not type "most difficult mental challenge" or "most difficult exercise in focussing" or "most difficult mathematical exercise" or "hardest on your brain" or other qualifiers.
Quite simply, if you think of a total single modern homosapien being standing in a field, programming a computer is the most difficult thing that individual can do.
I think way down the scale, something like "hunting" is maybe the second most difficult thing a human being can do. To hunt carnivores, you have to have a good level of mental concentration, that is to say focussing on one thing (not in the same league as programming, but a higher level of concentration than other human activities). To hunt carnivores, you have to be able to "multitask" - keep a number (let's say, five) important factors in mind at once, such as let's say The Wind, Two Dimensional Patterns, Visual Movement Recognition, and so on. (Programming utterly eclipses this: in terms of "keeping a number of things in mind at once" there is nothing even close to the difficulty of programming.You have to keep seven or eight massively complex, and literally perfectly detailed (not vague or general), issues in your head at the same time. You commonly have to pop one incredibly complex "diversion" on to your stack which could last an hour or two, with literally perfect non-loss of fidelity of the other complex tasks waiting underneath, and you have to do that as a matter of course, hour in and hour out, month after month.)
Writing language say, requires you to be continually creative in both large and small patterns, AND adhere to annoyingly strict rules; again programming spectacularly eclipses this: in every single line of computer code other than the most trivial, you are doing what can only be described as inventing something totally new, completely solving a new class of problem, and the rules are platonically exacting.
Doing mathematics requires you to be good at mathematics, doing programming requires you to be good at mathematics all the time. Doing engineering requires a "engineering grasp" or "things" in time and space; when programming you have to have a total, masterful, concentrated "engineering grasp or things in time and space" at every minute and on a number of different levels - simultaneously - to achieve the simplest control over program flow, not to mention invent, develop and master (remembering they must be dot-perfect, not "general") algorithms.
In recent centuries humans have become good at precision work - like making mechanical watches. However programming is the last word in precision work: because in fact you are moving around electrons or other atomic-level particles. You are in fact creating a massive "pinball machine" for electrons, with literally billions of gates and bouncers. Astonishingly - it's almost impossible to believe - if ONE is wrong, the whole thing won't work.
it is a great example someone mentioned about riding an ultra-performance motorbike. That is a fantastic example, because it comes close to suggesting the staggering power, "dangerousness," of programming. You're affecting the way that one billion PCs work, 100 million iPhones, 10 billion TV sets, 50 million Mario games, the landing gear of two million aircraft, 100,000 nuclear bombs, 10,000 pacemakers, twenty million Toyota brakes, or perhaps if you happen to be writing say network code or telephony you're affecting - what other way is there to describe it - the entire "cellular-level" functioning of the whole electronic network of the surface of the planet, all at once. All of this at the exact control of ten homosapien fingertips.
This sort of "concentration of effect" has never ever existed before on the planet. Previously if you were hammering a nail in a railroad track and you stuffed it up, you only made that one train crash. With the industrial age, it became possible to make a mistake in say a mould which would affect the hundreds of items produced from that mould. Today a single programmer can move the electron pinball system on a million, even 100 million, devices.
Even on a trivial level, programming is, in fact, the task that "takes most time in the day." It is nothing to get lost in a project and spend 20 waking hours slaving on it. Previously say, writing a novel, has been a task where people would stay up late working on it because you need so many hours of concentration to get it done. Programming eclipses this. I guess that it is "natural" for the human organism to really concentrate for only a maximum of perhaps an hour - if even that. What non-programmers consider working (3 or 4 hours at a time of hard concentration) is much tougher than the "natural" way the human organism works. But the arrival on the planet of programming pushes "concentration needs" simply to the maximum possible, limited by sleep (and then you work subconsciously while sleeping for a few hours): hence the cliche of living on a few bottles of cola and in pyjamas while programming something really hard.
There has never been anything like this before on the planet, no one has ever worked that hard, there has never been anything that difficult to work on.
The best way to describe it is like this: humans have _never before_ done anything difficult.
All previous tasks you just "knock about" for an hour here and there, and with a very small portion of your mind at use.
Only with the invention of programming has the human organism been put to the test of doing something difficult that requires every aspect of your mind and body to reach levels of effort seen in no other human task. What would previously have been exceptional-event-level mastery of time, space, motion, "invention level" mastery of those things, if you will, - is required from minute to minute, continuously, as a matter of course, to program anything.
So yes, thinking about the "flow" state is particularly interesting in the example of programmers at work, building their electron pinball machines.
- Johnny Fat
I enter flow state when working on something completely unrelated to the task I actually want to do. And at the end of the flow, I can't help but wonder how the heck I shifted from task A to task B.
Also, being in flow state feels like singing in a group, and everybody gets the right note.
- Émile Jetzer
"Flow" is clearly displayed in those who have a legitimate diagnosis of ADD/ADHD. Psychologists often refer to this flow as "hyperfocus". Unfortunately, this hyperfocus is commonly exhibited as "unproductive hyper-focus" in most people with ADD/ADHD as they have difficulty prioritizing the items that require the flow.
- Andrew Garcia