It's hard to obtain and maintain that MentalStateCalledFlow
. Many activities, such as meetings, user documentation, adherence to standards, workplace distractions, etc, etc, etc, make flow harder still. In your development process, identify the activities that disrupt flow, and modify them until they don't.
For example, consider getting rid of the telephone. Maybe provide your programming team with a secretary to manage appointments and generally buffer interruptions, and to do routine work. (The nature of "routine work" for programmers led Brooks to suggest a librarian as team member in MythicalManMonth
As we've described elsewhere, PairProgramming
is a good flow-preserver, for two reasons:
- People are more reluctant to interrupt two people working together.
- When there is an interruption, one partner can field it while the other maintains flow. Upon return of the partner, s/he can quickly sync back up since the flow pattern isn't lost.
and I visited a large Chrysler object project. We were in a conference room with about 20 people, half a day or more. Every time there was a phone call anywhere in the entire building, the receptionist came over the intercom announcing the call. It was impossible to hear whoever was speaking in the room. The same announcements were of course made in all the programming areas. We suggested standing on the table and ripping out the wires, but no one had the nerve to do it. --RonJeffries
A shame, maintenance would never have noticed the snipped wires. See Also: LordOfTheFlies
I find that interruptions to flow are one of the most frustrating and stressful events I encounter. If they persist over a period of time, I even become afraid to get back into flow, for fear that I will be interrupted again. --TimKing
Depressing, isn't it?
Sadly, in non-ideal worlds not all Flow interrupting activities can be fixed. When this happens, the next best thing is to get back into Flow quickly. Some ways to do this are - When the interruption occurs:
- immediately make a note on your WhiteBoard? as to what you were thinking about when the interruption occurred. Then you can more easily RestoreState? after the interruption. If the interruption is due to someone walking into your office, this will also inform him that you were busy.
- set a break point on any line(s) of code currently being examined. For text in a document, select/bold it.
- Minimize all windows to the desktop then selectively bring up the windows you are currently dealing with. Many times programmers have window/app groups related to more than one task, this narrows it down. Or use a desktop switcher applet and keep only appropriate windows organized by task.
As a contractor (xref SoloProgrammingXpWorkarounds
), my approach for avoiding interruptions to MentalStateCalledFlow
is to work odd hours. Most of my productive work occurs from about 8PM at night until 2AM-4AM in the morning. Sure, it annoys family and friends when I don't wake up until, say, noon. Additionally, clients can never get hold of me until the afternoon. But, with the exception of emergencies, there should never be a reason for someone to get ahold of me 'at any
time.' Essentially, I enforce no-interruptions by working when no one will interrupt me, and sleeping through all the YAGNI fires of the morning with the phone unplugged. Don't try this at home.
I admit, it's not a helpful idea for 8-5 programmers. But even as a solo programmer in a corporate environment, I found that my net productivity during the day increased substantially when I worked 9-6 (or, when I could get away with coming in late, 9:30-6:30). After the distractions went away after 5 (no phone calls, nagging coworkers, boss looking over the shoulder, etc) the 5PM+ hours became my flow time - and with a pushed-forward schedule it still allows you to keep to the FortyHourWeek
. The same works well for a 6AM-3PM schedule, though I personally have trouble ramping up to Flow that early in the morning.
I do a 7:30 to 16:00 day, and I can also attest that the hours before 9 are really good for a lack of interruptions. -- JoeWeaver
Surprised that no one mention the #1 flow-inducing drug, caffeine.
I'm not sure it's actually flow-inducing. It's certainly a stimulant, but it may contribute to flow disruption by inducing jitters.
- Aha! I have an answer, from a meditation instructor (LeShan?
, I think or was it Bhente?), where disturbances can be as disturbing: Decide what to do about interruptions and accept them before sitting down.
A moment to visualize being interrupted and handling it gracefully works. I don't always follow this advice, but have had luck in not being so perturbed by disruptions when I have followed it.
For example, if I'm expecting an important call, but sit to do meditation, I decide beforehand to break meditation if the phone rings, and then I'm not disturbed at all. Alternately, I decide not to answer the phone, and if it rings, it is only a minor disturbance.
And, of course, being not perturbed by breaking attention means you will be in a better place to get back to it.