Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?
Programming IT Technology

Finding the Programming Zone? 654

SlashDotDashDot asks: "As a developer for 20+ years, I've developed a fairly fine tuned way to find 'The Zone' for optimal programming - a combination of furniture arrangement (PC and chair), lighting and music. I also have a pretty good sense of what time of day is best for working on a particular set of problems. But this is what works for me. My company is growing and I'm needing to mediate working conditions between my clients and consultants. This has me wondering what others have found important for finding 'The Zone' in their programming lives. How fast can you get there? How long does it last? What do you do that helps keep that state? What are the major interrupters?" We also touched on this issue in a similar article, last year. However, many of you may have ways of attaining "the zone" that don't depend on any of the factors listed above. If you have a method that works for you, please share. It may work for others.
This discussion has been archived. No new comments can be posted.

Finding the Programming Zone?

Comments Filter:
  • by WetCat ( 558132 ) on Monday April 22, 2002 @06:06PM (#3390388)
    Window please! A real window!
    • by deadmonk ( 568008 ) on Monday April 22, 2002 @06:47PM (#3390707) Homepage Journal

      Bah! Screw daylight. The Zone in which good things happen (for me, at least) is one in which just about any marked input to the senses is reduced - the room is warm enough to be comfortable sitting still, no bright light to distract the eyes and ambient tunes to cover rude neighbors or people in the hall. My penchant for darker inside offices (no glass) earned me the title Caveman in at least one past position.

      The key here is four walls and a door. I've heard the lame excuse that 'an open environment promotes communication' - what you end up with is being pinned like a bug under glaring lights listening to the dork in the next cube yack at his wife eternally. Sure you can communicate until you're sick of each other, but nobody can concentrate on code..

    • Windows are overrated. I didn't ask for one at this company, since I was one of the newest employees when we moved to a real office, but they gave me one.

      I spent 2 weeks trying to figure out how to keep the horrible glare from the sun off my screen. We have these pin-holed blinds that allow enough light in to burn out my eyes, and my boss doesn't like it when I stack up a bunch of boxes to block out the light... I've had to move my huge and unwielding to an ergonomically suboptimal position so I can stand to look at it during the day. People always joke that they can find me a windowless cube, and unfortunately they always think I'm joking back when I tell them that I would love it.

    • by rmohr02 ( 208447 ) <mohr.42@[ ].edu ['osu' in gap]> on Monday April 22, 2002 @07:22PM (#3390969)
      I've got real windows. Somewhat barren terrain. Ahh, there's zerglings storming my command center! Build marines! Oh, wait, that's not my window. Never mind.
  • Close the door (Score:2, Insightful)

    by hij ( 552932 )
    I am fortunate enough not to be in a cubicle. The best thing that I have found is to close the door and turn off the lights. Once I get going it doesn't really matter what the atmosphere is like. The hard part is just getting started and avoiding interuptions. The rest takes care of itself.
  • Need I say More?
  • by rnicey ( 315158 ) on Monday April 22, 2002 @06:08PM (#3390401) Homepage
    Personally I remember not having a job and being really really poor and having to eat lots of pasta.

    I look out my window at my new car and ask myself if I want to keep it. Zero to zone in approx 20 seconds.
    • Personally I remember not having a job and being really really poor and having to eat lots of pasta.

      I remember having to eat Ramen, and that stuff's not *even* pasta.

  • I need quiet (Score:5, Informative)

    by Tony Hammitt ( 73675 ) on Monday April 22, 2002 @06:10PM (#3390409)
    And to have some reasonable assurance that
    people will not be bothering me for a few hours.

    In short, I need to work at night when my family is asleep. Too bad this conflicts with my work schedule and pisses off my wife...
    • I need to sleep at night, all night, and work only during the day, preferrably only in the office. I also need to be able to unplug my phone and put up a do-not-disturb sign. None are an option though..
    • I agree. I can work for hours on end if not bothered. Music, Radio, TV, and conversations are the big distractions.

      If I'm left alone and I'm otherwise into a coding problem, I can code for 18 hours straight with only short breaks for water and sammiches.

      Oh, and definitely stay away from the soda pop and junk food. That crap kicks the shit out of any zone I may otherwise be in. Nothing worse than feeling like you actually have Coke/MountainDew syrup pumping through your veins. My brain (and yours) needs water, lots of it. Caffine also kills the mental focus I need to work on things. And also dehydrates me even more. Oh, and glare. So give me some good lighting.

      Um yeah. Put me in a dry, dark cave with bread, water, and a couple of incandescent lamps. I'll code whatever you want.

      Strike that. I'll code whatever *I* want :). Yeah, the problems that interest me the most are (naturally) the ones I zone on the best.
    • And to have some reasonable assurance that people will not be bothering me for a few hours.

      That's funny, I've always found concentration to be detrimental to my programming abilities. There's a reason why so many programmers tend toward Discordianism.

  • Sustinence (Score:2, Funny)

    by Anonymous Coward
    Programmers can't work without the proper nourishment. This includes but is not limited to:

    Cheap Beer
    Beer nuts
    Malt Liquor.

    I guess food couldn't hurt either.
  • by Anonymous Coward
    An occasional masturbation break never hurt.
  • Here's how I do it. (Score:5, Informative)

    by ciryon ( 218518 ) on Monday April 22, 2002 @06:12PM (#3390435) Journal
    Optimal condition is:

    * Rather dark and gloomy room
    * Big monitor at high resolution and many xterms prepared
    * Huge MP3 playlist set to random
    * One big cup of coffee (machine close by)
    * Unlimited supply of colas in the fridge

    I'm at optimal performance just when I normally should go home from work. Or when I work home, just before I really should go to bed.

    • by Bouncings ( 55215 ) <ken.kenkinder@com> on Monday April 22, 2002 @06:37PM (#3390636) Homepage
      One more thing: Add the following entry in /etc/hosts
        • One more thing: Add the following entry in /etc/hosts

        This particular piece of advice is not recommended if you are an employee of OSDN working on the production Slashdot machines.

    • by Tack ( 4642 ) on Monday April 22, 2002 @06:48PM (#3390719) Homepage
      It's interesting to see how much in common a lot of people have, and also how widly varying it can be. Here's what works for me:
      • Most importantly, the problem has to be interesting to me. I can't enter The Zone unless I truly am determined to solve the problem. Sometimes even boring problems can be made interesting once you spend a couple hours tackling them, but typically you'll get better results if the problem is genuinely interesting. (This is why the scratch-the-itch motivation of free software works so well.)
      • I don't hack on coffee; I hack on diet coke. Lots of it.
      • My musical mood changes from hour to hour, so I don't ordinarily set up playlists for more than 45-75 minutes, but I do normally listen to music the whole time I'm in the zone.
      • Agreed: big monitor and many terminal windows are a must. If you can't have at least 6 terms on screen at once, you'll get distracted by toggling between virtual desktops. Sometimes I have up to 12 windows on screen.
      • You just need a fast computer. No one wants to wait long for compiling simple changes.
      • Lighting for me has to be dim, but not dark. I prefer a single, tungsten 60W bulb with a lamp shade on my desk. It provides a nice, cozy warm light and offsets the light from my monitor to prevent eye strain.
      • Everyone has certain things they do when they're thinking about a solution to a particular tough problem (or sub-problem). Maybe you lie down for a few minutes; maybe you pace around the room; maybe you go to the gym and work out. Me? I take a long, hot shower. This yields very excellent results for me. And I have come up with some pretty damn clever solutions under the nearly-scaulding hot water. :)

      How long does this last? This often depends on a few things also:

      • External motivation: do I have others around motivating me? I don't mean a boss squawking at me about deadlines, but rather other hackers I can bounce ideas off of, to help keep the problem into perspective, and help keep me interested. Or, am I getting paid?
      • Running into roadblocks: when the hacking goes smooth and I don't come across any major bugs or roadblocks, I can hack for weeks. But if I hit a serious bug that even a hot shower can't solve, a lot of times I wind up putting the project on the back burner. (Of course, if this is a project that I'm getting paid to do, the motivation keeps me going).
      • Distractions: if I am without uninitiated distractions, I can hack for much longer periods of time. Some distractions are okay, as long as I am the one who initiated them. Sometimes I'll stop hacking to go to the movies, or go out to dinner with some friends. Sure, when I do that, I'm typically mentally detached from what I'm doing, but I usually force myself to have fun. Then when I return to the problem, I often have a fresh perspective that helps me continue.

      When am in The Zone, it is a curse. I can't think of anything else but what I'm hacking on. (This is a problem when I am hacking on a personal project and go to work.) I usually just have to ride it out, keep hacking, until something happens that I put the project aside for a while, and then I usually repeat the whole process again in the future some time.

      So that's how it works for me. :)


    • My optimal programming environment:
      • Laptop on the beach
      • Tall glass of lemonade.
      • Attractive young lady who doesn't speak English rubbing my feet
  • I personally find programming more comforting in my house. I can sit in my own chair and lean back and prop my feet up on my desk and not deal with a chair that keeps my back perfectly straight for 10 hours at a time. I have my computer setup the way I want it with no admin restrictions set forth on me. You dont have to worry when you accidentally click that link that everyone will look at your monitor. Also nothing beats shitting in your own toilet without worrying if your boss is in the stall next to you when you have a case of the runs.
  • I think your working environment is less important than the right state of mind. If I like my work, I can focus on it in the middle of an elementary school playground. I have a friend who codes from home; whenever I call him it sounds like he's working in a jungle. I ask him what the noise is and he asks me what I'm talking about. His kids are screaming and crying all over the place.

    Just like great athletes, conditions don't matter. They get in the zone and it's game over. Anyone see Steve Yzerman in the Red Wings v Canucks game last night? He's hobbling around on one leg making everyone else look like grade schoolers. Amazing
    • But Steve Yzerman wasn't having his game interrupted 20 times per day with phone calls from customers bitching about features that are broken because management felt it better to shove the product out the door instead of spending the up-front time to get it right, and the meetings that follow that mostly consist of management hand-wringing and complaining that the product has too many bugs. Forcing your engineers to take regular customer service calls that would not be necessary if they had been given the proper time to write the code is one sure way to kill productivity.
  • by antis0c ( 133550 ) on Monday April 22, 2002 @06:13PM (#3390443)
    I can't sit down and program for hours unless I have a good chair.. I have to feel as if I'm sitting on nothing.. Uncomfortable pressure points will surely annoy me the entire time I'm attempting to program. It's the key to getting into the zone entirely.

    Next to that is a good mouse (if you're doing any GUI work or Graphics with the program) and Keyboard that has that great feel. It's different for everyone, I like my keyboards to click where I can feel I've hit a key. I find I have less typos that way.

    And finally, ample supply of drinks and snacks readily available within an arms reach, otherwise I'm forced to break my concentration to get up and to refill my drink or snack. Some good music helps too, with headphones if you aren't alone, it helps you tune out the rest of the world around you.
  • No distractions (Score:4, Interesting)

    by MiTEG ( 234467 ) on Monday April 22, 2002 @06:14PM (#3390448) Homepage Journal
    As has been mentioned in some of the above posts, one of the most important things (for me, anyway) is avoiding distractions. Things like snack machines, pool tables in the office, etc, may improce employee morale, but they also tend to be a distraction from real work. Once I get focused and start working, temptations such as those really aren't much of a problem.

    Probably my biggest issue is with noise. It could be my farely ADD-type tendencies, but almost any noise beyond what is found in a normal office environment makes it really hard for me to work. Music may be great for the mood, but I just can't work unless the music is classical or something else really light. Also, if I have an office near a window, it could be a problem if the the windows aren't soundproofed enough and I have to listen to the conversations all the smokers have on their breaks.

    • It could be my farely ADD-type tendencies, but almost any noise beyond what is found in a normal office environment makes it really hard for me to work.

      You know, it's the same for me too. I think of myself has having borderline ADD tendencies, but perhaps what it is a hightened sensitivity to stimulation. On the other hand, once I've "bitten into" a problem, I can go for prodigious amounts of time on it, in my younger (and unattached) days sometimes days without rest. I've often wondered whether these two things, sensitivity to stimulation and the ability to enter a kind of programming trance state were interrelated.
    • Re:No distractions (Score:2, Interesting)

      by Hotsphink ( 519665 )
      I am the same way, except the lighter the music is, the more it distracts me. I much prefer something like Nine Inch Nails -- anything that's noisy and sounds like utter crap is good. If I like the music, then I'll start paying attention to it instead of my code. Stuff I don't like is good for drowning out background noise. Vocals are bad unless they're so mangled I can't make out anything they're saying.
    • Re:No distractions (Score:4, Interesting)

      by Darth_Burrito ( 227272 ) on Monday April 22, 2002 @06:40PM (#3390658)
      Things like snack machines, pool tables in the office, etc, may improce employee morale, but they also tend to be a distraction from real work.

      Yeah they are a distraction, but sometimes that's just what you need in order to get out of a rut and back in the zone. When I've been beating my head on a problem for a while, the best thing is often to stop, turn off the monitor, and go for a 5-10 minute stroll outside. The first half of the walk I don't think about anything. After the halfway point, I start thinking about the problem and I've usually got a good guess on how to solve the problem by the time I get back in the office.

      When I was in college, I used to do the same thing using the pool tables in the dorms. First game clear your head, second game solve the problem. Maybe it's just me, but I'm usually in best form after a break physically away from work.

      The kinds of things which bother me are interruptions, not being able to play my music sans headphones, sharing an office with someone, loud servers/noise, and bad flourescent lighting. The worst for me though, is sitting near a high traffic area where people are constantly talking outside your door or moving by the periphery of your vision.
    • by dimator ( 71399 ) on Monday April 22, 2002 @06:43PM (#3390683) Homepage Journal
      it could be a problem if the the windows aren't soundproofed enough and I have to listen to the conversations all the smokers have on their breaks.

      Smoker 1: So, we started smoking to be cool and popular, but now all our clothes stink, our lungs are charred and black, and we're the only two dipshits standing out here feeding our addictions while everyone else is inside.
      Smoker 2: Yep.
      Smoker 1: (takes a puff) Is this what you expected?
      Smoker 2: (takes a puff) Nope.

  • Igloo cooler full of assorted caffinated beverages
    Shoe-box full of Butterfingers, Snickers, and beef jerky
    Enya playing in the background.
    • Whoa there Feng Shui. I'm of the school that says work shouldn't resemble a polsci frat house picnic. Once you start getting above a bare minimum of ammenities, you get into the realm of goofing off. Work should be fun, but that doesn't mean it should be massages and comfort food. A lot of the work involved with computers can be avoided by making a well informed decision with a level head, which is trumped when addled by sugar and caffeine.

      In fact, we've got a guy who, just like you, stocks his area with goodies in an attempt to produce more. He bangs away at his keyboard from 9 to 5, then finds himself here on the weekends when his spaghetti code turns out to be undercooked.

      Don't do what Donnie Don't does.
      • Having sugar and caffine near to hand doesn't turn your workplace into a frat house. Having your desktop images automagically selected from alt.binaries.erotica, OTOH...
  • by BeneathTheVeil ( 305107 ) on Monday April 22, 2002 @06:15PM (#3390468) Homepage Journal
    well... the one thing I find, is that my monitor can't be near a wall... ie, I have to have it so that, when I look past the monitor, I don't see a wall right behind it. If I do, I find that my creativity tends to hit a block. If there is no wall, it tends to flow a bit, and circulate around the room (much like a virus? perhaps). Strange? Maybe... but it works.

    Music wise... it has to be something that doesn't require active listening, but it can't be boring either. Classical and opera tend to work very well as good background music. If it's a game I'm coding, I'll usually put on the soundtrack to a game, as I find that gets me thinking about games, which helps me to make the game.

    Finally, the chair is something I don't have a preference for. As long as I can sit it, and don't find myself fidgiting too much, it's good enough.

  • by MemeRot ( 80975 ) on Monday April 22, 2002 @06:16PM (#3390469) Homepage Journal
    Need I say more?
    • Re:Crystal Meth (Score:3, Insightful)

      by grmoc ( 57943 )
      you forgot the od-
      Crystal MethOD ...
    • Re:Crystal Meth (Score:4, Interesting)

      by G-funk ( 22712 ) <> on Monday April 22, 2002 @07:11PM (#3390873) Homepage Journal
      Althought the parent was modded funny, I have to add my 2 cents - I like to code, but I'm not a marathon sit-at-the-pooter-for-2-days-straight kinda guy, like a lot of the people here are. Except when I have to, and I get a little speed. A small dose of speed (usually drunk in a shot of water, enough so you barely notice you've taken any) actually works wonders for my productivity. When the deadlines come up, it can often help me work all night at home, then go to work and work all day, and still be doing something useful until 5 o'clock.

      Good stuff really, although we should be thankful it's illegal or we'd all have 25 hour days all the time ;-)
  • by 4of12 ( 97621 )
    • Wake up very early.
    • Heavy aerobic exercise.
    • Brew large pot of dark coffee.
    • Start work 2 hours before everyone else gets there.
    • Midmorning break for a snack.
    • Knock off at 3 to beat the rush home and have time to relax before bed.
  • by quantaman ( 517394 ) on Monday April 22, 2002 @06:17PM (#3390479)
    What are the major interrupters?!?


    You just asked the major interrupter!!!!

  • I find that the zone is primarily a matter of having reasonably good tools to work with (I get irritable if I'm not given a fairly recent version of XEmacs, for example) and the chance to work with few interruptions. I don't multitask well and having to constantly context switch to handle questions asked by others really ruins my zone. As I have become a senior member of staff and project lead, these interruptions have grown dramatically.

    The best answer to my zone problem would be to have a door that I could shut when I'm working on something that requires intense focus, and open when I feel like I can handle a question (think of the door as a literal interrupt mask). Sadly, I don't have a door; I live in cubeland. I'm senior enough to rate a door, but there aren't enough doors to go around.

    As for the lesser important elements to establishing the zone, I like a comfortable chair, a decent set of speakers or headphones, and a carpeted floor so I can take my shoes off. I hate shoes and kick mine off as the first step to getting to work. I'd go barefoot if I could.

    I like to keep the lighting low, and my preference is to work with the lights off, with only natural light through my window and my pair of flat-panel monitors to light the room. Again, because I live in cubeland, it's hard to work with the lights off; even getting to work at 6 AM doesn't help because some of my lights-on coworkers also arrive early and don't understand why I want to work in the dark (these coworkers include one fellow who analyses code by printing it out and coloring the paper with many different colors of highlighter).

  • My zone... (Score:4, Insightful)

    by dasmegabyte ( 267018 ) <> on Monday April 22, 2002 @06:18PM (#3390489) Homepage Journal sometime after 5.

    Seriously. I get most of my work done after everybody leaves...nobody shooting the sh_t or asking me questions or for status reports. There's an emotion around here that open floors equate productivity, but that's just not true...I get more done the hour after the boss walks out than I do in an entire day of his polling and sneaking.

    Speaking of which, this post is cutting into that time...gonna make it short.
  • Judging from most of the programmers I've talked to (including myself), I think that the morning is definitely not the time to be in the zone. The night-time is the right-time for programming success. It brings CS graduates back to their late-night programming sessions trying to tie all the loose ends up in their current project.

    I'm not saying that this is a steadfast rule, I'm just saying that perhaps allowing different workday shifts like 9-5 and 3-11 would be good. You'd have two hours of overlap for collaberation, and people who fear mornings would be more apt to be in the zone in their "primetime."

  • EXTREME PROGRAMMING! (Score:5, Interesting)

    by eVarmint ( 62178 ) on Monday April 22, 2002 @06:19PM (#3390498) Homepage
    When programming alone, I find that the "zone" is an elusive beast that can be found for about an hour or two each day, on average. Some days more, some days less.

    Pair programming, a subset of extreme programming, largely eliminates this problem for me. When I pair up with another developer, I can regularly find the zone each day and stay in it for 4-6 hours. As a project manager, I introduced extreme programming and my team quadrupled their output overnight. And this is with six of us sitting in a garage with cheap office furnature.
    • As a project manager, I introduced extreme programming and my team quadrupled their output overnight. And this is with six of us sitting in a garage with cheap office furnature.

      Right. I think what you are saying is that when you stopped whipping them in your garage and gave them some actual human contact, they were a little happier huh? Maybe you learned a lesson that treating programmers like human beings pays off in the end.

      A good office environment meets the needs of the workers. Good social contact, this is why nerf toys are popular. Some time to relax, play games, free perks like soda don't hurt either. If you make it fun, you can expect a lot. Quadrupal is nothing. Next try fixing your furniture.

      And it's already well advertised here. I think anyone who's been programming for 20 years has probably heard about it - here if nowhere else.

      For me, "finding the zone"=="taking the phone off the hook". But unfortunately that's a super extreme way of losing my job.

  • I find that IRC helps.
  • I need quiet - pure unadultered quiet, which unfortunatly *never* happens here in cubicle-land.

    What I want to know is: Those $300 Bose noise cancelling headsets - Can you use them without piping a signal into them to get pure and clean quiet? Or are there any other alternatives other than those massive earmuffs that construction workers wear?

    • Re:Quiet! (Score:3, Interesting)

      by T3kno ( 51315 )

      Absolutely, I used to have a pair of those $100 Sony Noise Cancelling headphones (before I stopped travelling 38 weeks a year, and after my dad stole them from me) that I would wear without a cd-player sometimes just for the noise cancelling. They could turn a 737-500 with a screaming kid next to me into a very quiet relaxing environment that I could read without distraction in.

      The Bose headsets look REALLY nice, and I'm thinking about gettting a set, but I work from home now, and am alone listening to techno or a dvd, which is the optimal work environment if you ask me.
    • Re:Quiet! (Score:2, Informative)

      by dogbowl ( 75870 )
      yea, I've got a middle of the road Sony noise canceling headphones, and I've probably used them just as much without music as I have with music.
      Theres a switch to turn the cancleing on/off.

      One time, I had them on (with no music) and a stardess walkup to me and asked a question directly towards me .. I couldn't hear a word she was saying! Ahh .. bliss!

  • (1) Get plenty of rest. You can't get the creative juices flowing if you're tired and thinking in a rut. Once they start flowing, you won't be needing the rest.

    (2) Avoid interruptions. No beeper, no cell phone, nobody dropping by to chat. Get away from the internet if you can. A laptop is good for this. I move to the local coffee emporium to get started, then when my laptop is discharged and I'm fully charged with caffeine, I move to the public library's quiet study area, where i can plug in power. When the library closes I move to a loft over my garage. It's a short trip between each one and it gives just enough of a break. Since I've had children, the days of multi-day hacking sessions are gone though; I pretty much have to take some time in the early evening with them, then after they're in bed it's back to the old ball and chain.

    That's pretty much all I need: rest and privacy. There is one third aspect that is helpful to me, although maybe not to everyonhe.

    (3) Customer contact. Not during the programming debauch, of course, but before hand, to clarify exactly what I want to achieve, and put a human face on the problem. Of course, if you hate your customers, its better to avoid this ;-) In any case, some incubation time to have clear and well chosen objectives is good.

  • Leave Me Alone!!!!! (Score:5, Interesting)

    by mo ( 2873 ) on Monday April 22, 2002 @06:22PM (#3390518)
    Ok, on the whole I like dark lighting, private offices, headphone music (classical). But I'd sell all of this for one thing. Leave me alone. It takes me up to 45 minutes after sitting down to really get into what I'm coding. If I have an interruption every 30 minutes I will get nothing done. Of course it's very diffucult to structure an environment where people can ask questions when they want without bothering all of the other coders who are in the zone. Here's some ways to make this easier:

    * set up an irc server or get everyone on IM. If you have a question, IM it to somebody instead of interrupting them with a phone call or personal visit. If they are in the zone, they can wait until their train of thought winds down to answer.

    * Catered, delivered meals are a diabolical way to squeeze more zone time out of your employees. Nothing is better for me (and the company) when somebody brings in a bag of burritos when I'm in the zone. Delivered dinner is the best way to explioit me for more unpaid work.

    * Good CM and documentation limit the amount of interruptions because people can consult the docs instead of, "Ask Bob, he's the only guy who knows how that works."

    * Let me work funky hours. We've got one guy who gets here at 7:30 AM, another who shows up at noon and stays till 10:00 PM. Why? Because there are large chunks of time where nobody is around to interrupt them. This can wreak havoc at your company if you don't do the above documentation, but it can work out very well if you do.

    Yeah, private offices, screen real-estate and Aeron chairs are cool, but I'd throw them all away for a full day without interruptions.
  • But working as a consultant you learn to get used to working in all kinds of situations. You are fortunate indeed to be able to mediate work environements for your consultants.

    Heck in one place I spent a week working in a hallway and if it wasn't for my trusty laptop I would have been twiddling my thumbs. Other than that I do my most productive work off site at home where there are less meetings and other such interuptions.
  • by geoffsmith ( 161376 ) on Monday April 22, 2002 @06:25PM (#3390535) Homepage
    Nothing is more distracting than a web browser. And virtually every programmer has got one. How many people reading this comment right now should be working?

    It's even worse if you do web programming for a living. There is no hope.

    • As a Web programmer myself, I completely agree. I'm testing my stuff, and the "SD" button looks so appealing. :)

      I've found that if I use a different browser, like Opera, just as long as it doesn't have those buttons, everything is fine.
    • My browser probably does more to extend my zoning than anything. Seriously, when working on a real problem, I'm always needing info off of deja (err google groups) or other online sources. Of course if I can't find the answer after 10-15 minutes, all hope is probably lost and soon the browser magicly finds its way to slashdot. Part of the key to preventing this from happening is to set your browser's home page to something that won't distract you from your work (google groups).
  • For me.... I need to have my favorit lava lamp going. Some atmospheric drum and bass for the ambiance. Soft lighting, with a gental colour temp (aka not flourecent). My Herman Miller Aon chair, my Bush desk.... and 68 degrees faranheight. Oh and did I mention this groove period must either be at the first 3 hours after I wake up, or the last hour 1/2 before know must go to bed. Seems the mind is most creative at the extream ends of the day.
  • Music is a very important part. I always need something playing in the background - silence is absolutely killing me.
    It seems that the best kind of music for programming is something without any lyrics, because they tend to draw you attention from the problem. My personal choice is electronic music - techno, drum&bass, ... . I have lots of live sets from various DJs (hawtin, liebing, umek, cox, ishino..) and listen to them all the time. Instrumental heavy metal and classical music also work just fine.
  • by dant ( 25668 ) on Monday April 22, 2002 @06:30PM (#3390583) Journal
    For bugfixing or pounding out an implementation of an existing design, I have pretty much the same formula as everybody else seems to (massive caffeine overdose, dark, familiar music, and ZERO interruptions--work from home if you can).

    But for design work, I find I do my best stuff in a completely different environment.

    First of all, get away from your computer. If you're doing design, you should be envisioning shapes, graphs, and so on--you should not be thinking about code. Do not look at; do not touch it. Look at a whiteboard or stare at the sky while you're doing this.

    Next, do something (other than caffeiene) to stimulate your metabolism. Play a few games of foosball, or take a shower, or have a cigar. I've done some of my best design work while standing in the shower.

    Finally, let your subconscious work on it. Keep thinking about the problem as you go about your day, but don't stress out about not making any progress. A day or two into it, you'll have an epiphany and realize that it's all very simple.

    • First of all, get away from your computer

      I couldn't agree with that any more. I can't count the number of times that I've gotten so fed up with a little bug in some abstract function and not 3 minutes after walking away to do something else (usually coffee-related) the answer just jumps out and it was so simple! It almost makes me want to not go back to the computer, unfortunately that's where the problems start, and we get to the next topic I wanted to cover: prime coding hours:

      Yeah, I do some of my most productive work between the hours of 12:00AM and 3:00AM on a Sunday night, but that's usually due to the fact that an assignment is due the next morning (since I'm still apparently "learning" this stuff). However, the only reason that this is happening is because I wasted the weekend with other pursuits.

      Finally, music is everything. I personally like to start off with whatever's been going through my head for the last week, but by the time some serious coding comes up, it's time to kick on the Hard House radio streams, and get something with a lot of mindless bass going. Personally, I think I do better coding then, but that's just an opinion.
  • At least for me, the state of mind is the most important thing. The environment is unimportnant, secondary thing that I don't even notice. Switching between bug fixing/question answering state and development state is a big one, and it takes time.

    In bug fixing state, I can multitask efficiently between multiple small size tasks, do them together, answer a question in a middle, etc.

    In development state, I am really concentrated, and if someone asks something, it is very difficult to concentrate a sudden support question, and if interrupted, it takes time to get really back into development state.

    If the development state is difficult to reach, I need music. Something heavy, Metallica seems to work best.

  • I could list some of the conditions I prefer when I'm in the zone (some good loud music in my headphones, a bottle of caffeinated beverage nearby, etc). But none of that matters. The short story is: When I'm in the zone, I could be outside in cold weather with poor lighting conditions and on a crappy laptop, and it wouldn't stop me from doing some great work. If I'm having trouble reaching the zone, no amount of external stimuli is going to bring me there.

    "The zone" is in your head. For me what brings me there is usually motivation of some kind. It can be money (as in salary), but it usually isn't. Most of the time I'm just excited to see how it's going to turn out when I'm done; once I'm in the zone and start coding, I'm not going to stop until I can see some sort of tangible result.

    When I'm having problems reaching the zone it's usually because that tangible result is too far away in time. What really causes problems is if a part of a project is so big it's going to take two days of coding before I'll produce anything useful; I try to avoid those.
  • Distraction in the form of interruptions, physical discomfort - hunger, thirst, cold, heat, ergonomics, additional responsibilities like supporting users, meetings, worrys about money, lack of research materials, stability of and ease of use of integrated development environment... all these things detract from the coding experience and getting in The Zone(tm).

    Things that make getting in the zone easy:
    Tools that make sense and are powerful.
    A keyboard that is intuitive.
    Easy to use programmer's reference.
    Stable OS that doesn't crash all the time taking yer whole programming setup down with it
  • Retirement (Score:3, Insightful)

    by N8F8 ( 4562 ) on Monday April 22, 2002 @06:37PM (#3390633)
    I figure in another 12 or so years my kids will be grown and out of the house and my wife will finally stop talking to me. Short of that I figure I'm sill "practicing" my craft till conditions become ideal.

    Even after ten yeas of marriage my wife still doesn't "get it" that each interruption costs me at least 20 minutes to get back into the groove. Thank god the programming I do for a living isn't really complicated.

    I find my ideal times for working are from 10am-noon and 5PM to 1AM. Not particularly good when you have a family.
  • Da zone... (Score:2, Interesting)

    * a comfortable enough workstation that I don't get uncomfortable in 20 minutes or so of intense activity

    * a source of music just loud enough to block out office noise, but not loud enough to make me notice it. (If it's music I really *like*, I'm in trouble, since I'll pay attention to the music.)

    * A phone with a ringer that I'm able (and allowed) to shut off and/or let calls go straight to voice mail.

    * an email client that I'm allowed to configure to not notify me of arriving emails

    * a cubicle out of the way of major foot traffic

    * orientation in the cubicle so that I don't feel that people are looking over my shoulder (I don't care if i can see them coming -- what i hate is the feeling that i'm being "vultured" -- a sure fire productivity killer for me).

    * the ability to get up, walk around, and think through things. given a 5-minute walkaround (not, mind you, an excuse to visit my neighbors), i can begin to get in the zone before I start coding / debugging / whatever.

    phone and email are the worst -- especially when they're combined with a mandatory response time standard set by the company.

  • When I was just starting out, I'd slip into the Zone almost without effort. Now, after nearly 20 years as a professional, it's becoming more and more difficult. I can still turn out some fairly spectacular code when I'm on, but getting there now involves so much caffeine that my stomach reacts badly. I only do it for emergencies these days.

    It doesn't help that Whoop-Ass, which is the only energy drink I've found that really works for me without tasting like, well, ass at the same time is apparently no longer sold in California. (Neither is any other Jones Soda product AFAIK.) I think I'm going to have to import my own supply.

    Distractions certainly don't help. /. is among the worst. :/

  • Most of the posts so far have focused on creature comforts. The NUMBER ONE THING that gets me out of the zone, though, isn't a creature comfort or lack thereof. It's FUCKING SPEC CHANGES (or a lack of specs). Holy crap, nothing else even comes close.

    I'm most in the zone when a lot of time is spent defining a good spec up front, and having good management that doesn't allow the client to break it with constant changes after coding has already begun. Then I can just bear down and WORK and turn out a clean, easily-maintainable piece of software, as well. Otherwise, it's spaghetti crap code that is hell to write, maintain, and debug.

    On the creature comfort side of things, a nicely-equipped computer is nice. It doesn't have to be a dual-SCSI, dual-CPU monster, but a 512MB of RAM and a nice monitor go a long way. With cheap RAM and monitors these days, this shouldn't be a problem... only another $200 or so over a barebones setup. Also, make sure the vid card and the monitor can both work together at high resolutions and refresh rates, please! Some offices "splurge" and buy cheap 19" monitors, but workers are still stuck at 1024x768 at 60hz or some shit. ;-)

    Being able to wear headphones to block out office noise is a must, too. That sounds like a silly demand, but I once worked at a place where headphones were verboten!
  • nice topic (Score:3, Interesting)

    by sniggly ( 216454 ) on Monday April 22, 2002 @06:53PM (#3390744) Journal
    • Dont laugh - I got the music midi files from descent 1 (the game) and have been coding to that - brings back memories from when programming wasnt work
    • Comfy chair!
    • 19" or greater monitor!
    • Code when you want/need!
    • Code at Home!
    • Take your fav keyboard & mouse along with your laptop
    • When you get an idea, GO AFK, once the idea gets some time to ripen you'll be all charged to tackle it
    But most of all make whatever you program a positive experience for your users. There's nothing like a "wow dude well done" from a happy user.
  • Comfort zone (Score:2, Insightful)

    by tz ( 130773 )
    In the afternoon or evening, I can get in the zone almost immediately. And I can often stay nearly indefinitely, as long as I'm not forced out. I can handle only so many interruptions - the worst are those that pose another problem that I can't immediately work on but can think about. My mind will try forking and multitasking. Other interruptions are less severe (to get something to eat, etc.), especially when I can control when to do them - after finishing a major section instead of in the middle.

    An office with lots of linear desk space to each side with a printer nearby (which supports the HP small lineprinter font) and highlighters (when I refactor, I usually take the listing to another room and start marking). A nearby caffeine supply, usually a large cup of coffee, or something else so I don't have to feel thirsty. A way to silence my phone or otherwise insure only critical calls get through. Basically freedom from external or internal distractions.

    A large, LCD screen. Something like the Apple 22" Cinema is optimal, but a large CRT with subdued lighting is also OK. I want to see several pages of information onscreen. Overlapped or iconified windows don't count. Otherwise subdued lighting, full spectrum, and/or task lighting. Especially with CRTs - they tend to bloom and blur at higher brightness. A comfortable chair - this might be a posture chair or stool. The idea here is to prevent fatigue, generally, and from having to fiddle with the UI to view what I need to.

    A reasonably fast computer. My train of thought derails if I break too often. The toolset I use is fast at grepping or otherwise searching and editing and recompiling. When I finish with a set of changes I should be able to keep focus.

    Flexible time. Some people are morning people, others are afternoon people. I am a night person. This is good in that I can work productively until 4am if needed, and in fact I can't sleep much earlier if I keep thinking of solutions or things I want to try. Often I can keep going until I finish something then realize how tired I am and realize that the eastern horizon is rather bright. But if it is too early, I can't get started. I can find 60 ultraproductive hours per week, and sustain that, but few of them occur between 9 and 5.

  • the anti-zone (Score:3, Interesting)

    by kisrael ( 134664 ) on Monday April 22, 2002 @07:00PM (#3390788) Homepage
    Lately I've been having some intermitent trouble with the anti-zone; where you just can't get jack-squat done. You hit slashdot, Usenet, go through various sites, anything but the task as hand.

    I'm getting it under control, but sometimes there's just this huge inertia you have to overcome. But luckily that's intertia in both the difficult-to-start form AND the easy-to-keep-going senses of the term.
  • weed and beer. mostly weed. well, and beer.
  • by mccotter ( 185752 ) on Monday April 22, 2002 @07:03PM (#3390815)
    I work from home and code on the ground. There is something comforting about being close to the earth.

    I don't see how people can code while sitting at a desk for 10 hours straight.

    All I need is a bean bag, a six pack of diet pepsi, and a few exercise 'pep' pills with ephedrine (I ususally code after working out....yes there are bodybuilding geeks out there).

    If you get tired you just mute your computer and plop your head on the laptop. I promise you that it is PURE joy.

    Don't knock it till you try it....
  • My own list.. (Score:2, Insightful)

    by Forkenhoppen ( 16574 )
    I find that, of all things, listening to cheesey pop music, or something with a good beat helps me function through the day... though I should point out that the main and major component that gets me in the zone is headphones. Get yourself a good pair of high-quality headphones, and only wear them while you work. Pump something through them that'll keep you awake, and the blood pumping, preferably something either without lyrics (Crystal Method, maybe Moby) or with really stupid, cheesey lyrics that you've heard over and over again already. (I prefer Aqua myself.) If a slow song comes on, take a break! Just the fact that the song has come on will have already altered your mood, so take the break while you can. (Unless, of course, you're really in the zone, in which case you won't care and you'll just skip ahead..)

    I should point out that if you're using winamp, you really need to get one of those hotkey plugins so that your windows-c is mapped to pause and windows-b is mapped to skip ahead. Otherwise, you'll spend too much time when skipping the slow tunes, and it'll knock you outta the zone. (Besides being helpful in skipping songs, it'll also help if you're too deep into the zone, and really need to think about something.)

    Last thing I'll mention; water. Make sure you have water nearby, and you're drinking it. Besides it being healthy for you, keeping you dehydrated, and keeping you from drinking caffiene, (which despite what most people'll tell you, will actually drain you of energy and shorten your zonage) it'll also force you to take regular breaks (to use the washroom) that won't affect your zoneage! (I have discovered that this is perhaps one of the few ways to force oneself to take regular breaks that doesn't continuously break my zoneage. As amusing and silly as it may sound, I highly recommend it. : )

    So anyways, to summarize, my tips:
    - good high-quality headphones
    - up-beat music (not too up beat, though; avoid raver stuff that messes with your aural depth perception; it'll just distract you..)
    - good winamp plugin for hotkeys
    - water!

    Oh yeah.. and I find that being in a bad posture helps too. But I'm not gonna recommend that to anyone; I'm already experiencing the negative effects of that one, so..
  • Entering "Zone" (Score:5, Insightful)

    by MegaGremlin ( 216264 ) on Monday April 22, 2002 @07:15PM (#3390906) Homepage Journal
    For me, maximizing my time in the "Zone" is dependant on one major thing - physical fitness. The more energy I have, the longer I can work - and work well.

    I have a fairly easy system for achieving this.

    1.) I get up every morning at 5:00am and run 3-5 miles,
    2.) Shower (very important step, do not omit.)
    3.) Eat a good breafast (generally a piece of fresh fruit and some "healthy" cereal.)
    4.) Eat a healthy lunch.
    5.) Get out of the office during lunch, for a mental break.

    I avoid artificial stimulants at all costs.

    I find that I generally have much more productive time than the other people in my team, and don't spend 10 minutes on the hour servicing a coffee habit. My mind is clear all day. I don't suffer from the afternoon slowdown.

    Granted, I do fall asleep fairly early in the evening (around 10:00pm) but I provide more work to my employer, on a time schedule that is convenient to him.

    Think about that when the next round of layoffs begin.
  • use IM not phone (Score:4, Informative)

    by GunFodder ( 208805 ) on Monday April 22, 2002 @08:54PM (#3391487)
    The phone has to be one of the most distracting elements in the modern office. If you and your team use an instant messenger instead you can really cut back on the distraction factor. I find I can hold my concentration better through a chat session than a phone conversation.

    And stack your meetings on particular days if at all possible. This is often difficult since in many office cultures the managers proclaim meeting times and the workers learn to live with them. But if you have a choice then try to put all the distractions on the same days.

    And for all you managers out there don't schedule a meeting that ends close to the end of the day. If the meeting ends at 4 and most people leave at 5 chances are your workers are doing only two things between 4 and 5: jack and shit.
  • by Lurgen ( 563428 ) on Monday April 22, 2002 @09:30PM (#3391720) Journal
    I thought long and hard before posting this comment... it's a bit on the harsh side, but being a part of the IT industry, I feel I'm entitled to offer an observation (as most /. readers are!)

    There are far too many IT employees, especially programmers, who are under the misconception that they are something special. There are many industries and jobs that involve enourmous levels of creativity and innovation, however I can't think of many that contain so many whining graduates.

    Take teaching for example. Every day, a teacher is required to educate their students. They don't get the option of saying "I can't find my zone, I'll be back in a few hours". The don't have the option of rearranging their working environment to suit themselves (as opposed to suiting their students/team). Sure, you can point out that teachers are generally following a process that is predefined... so are programmers though.

    Looking back within the IT community, take a look at the higher level support engineers. When a server farm catches fire, triggers the sprinklers, and dies a gurgling death, do you really think it would be appropriate for any of them to say "the room just doesn't _feel_ right"? Nope - they have to get the job done.

    Programming, for the most part, is a case of following the yellow brick road. The road is paved by your team leaders, in most cases, and when it isn't there is very little stopping programmers from following the processes and methodologies they claim make them special ("I have a DEGREE!").

    And what about childcare workers? Have you ever considered what it would be like working in an environment totally designed in favour of creatures half your size? I happen to know one or two of these people, and let me tell you that they never bitch or moan about their working environment not being ideal for their "thought process"!

    Face it - we're nothing special. We carry out a job, and not a very hard one at that. Sure, once in a while we need to demonstrate flashes of brilliance, but based on the ones I know, the vast majority of IT workers probably shouldn't have jobs in the first place.

    Be grateful you have the opportunity to work in a field that pays well, offers good working environments, decent job security (those who lie to themselves, and believe that we are any less secure than the rest of the world are fools), and cool toys to play with. Personally, I feel lucky to have the opportunity to work within the field.

    (Incidently, I sit in a cubicle that is rather small, at a desk that isn't particularly comfortable, with a window behind me that casts glare all over my screen, in an open plan office. I can hear my team chatting with their wives, the aircon is unpredictable, and the lighting annoys me. But I get to work in a field I love. Personally, I think I'm winning here)
    • You demean all programmers by implying that there is no skill spread between them.

      And any programmer who thinks that a Programming Methodology that was handed down from On High (defined as either somebody with an MBA or a PhD) is good for all things, is in the wrong line of work. It's a craft, not a skill.
  • Herbal remedies help (Score:3, Interesting)

    by awptic ( 211411 ) <<moc.xelpmoc> <ta> <etinifni>> on Tuesday April 23, 2002 @12:50AM (#3392603)
    After reading about people who've had a positive experience with herbal remedies, I decided myself
    to try a few. Ginkgo, in particular, is popular for increasing mental focus and memory; Ginseng too
    has a simular but more subtle effect. Wow! what a difference they have made, I'm now able to concentrate
    on a problem without losing focus for much longer, and my overall mood has improved. Seriously,
    give them a try; at worst they don't work, there haven't been any side effects associated with either.

Help! I'm trapped in a PDP 11/70!