Finding the Programming Zone?
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.
Window please! A real window!
I hate to tell you, but coding isn't like writing a novel. There are set ways to approach and solve a problem, and if you tell your boss that you can't work right now because it just isn't coming to you, you're out of a job. This is ridiculous.
Nothing consistently gets me into a programming mood. Sometimes I want to code, sometimes I don't. I think the best way in a corporate environment to encourage people to code is to give them the freedom to decide when to code. Of course, the project needs to be done by a certain date, but perhaps this week the coders want to work from 2am to 6am, and that's it. Don't make them come in during regular business hours if they don't want to. Maybe next week they'll code from 6am to 6pm, and make up the time they lost this week. Also, if you absolutely must have coders around during the day, be lenient about when they can arrive and leave, and if they don't feel like coding, allow them some distractions. Buy a couple arcade machines or allow counter strike games on the LAN. For me, if I don't feel like working, I won't work. If I have to sit around somewhere and don't feel like working, I don't want to be bored.
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.
Ciryon
I need liquid crack to get me in the Zone... BTW Liquid Crack is Diet Coke. I gave it that name when I tried to quit. When you first try to quit its easy, but an hour later, the beast is on your back and you give in, weeker then befor. Now I just feed the beast and try to keep it from growing...
Business News and Resources: www.usasource.net
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 goatse.cx 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
sHi
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.
..There's a-dooin's a-transpirin'
all I need is some caffiene (coffee or mt.dew depending upon the temperature of the room), and headphones and loud music (disturbed is the best so far), this way I can listen to the music, focus on coding, and avoid distractions. This usually keeps me in "the zone" until either 1) The caffiene wears off, or 2) I have to pee.
I SURVIVED THE GREAT SLASHDOT BLACKOUT OF 2002!
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.
The future isn't what it used to be.
I can make myself work if I have to, but I don't enjoy it. I've found the best way to keep my motivation up is to make sure I devote some time to do something that's only for me. In my case, I play the drums and practice daily for about two hours.
My point is- it's important not to only have one thing (work) to be excited about or you get caught in the ups and downs of that one thing. If you have a couple things they help balance each other out.
Igloo cooler full of assorted caffinated beverages
Shoe-box full of Butterfingers, Snickers, and beef jerky
Enya playing in the background.
Nothing for 6-digit uids?
Sitting in my boxer shorts in a nest of cables surrounded by RAID and System towers pumping out enough heat to poach an egg. The fiber-optic network in my bead room has been a sore point in more then one attempted relationship.
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
What I've found is that I wouldn't ever be happy with a job wheree I have to code for preasure. My favorite time is at nigth, listening to some alternative or rock music, a big mug full of Iced Tea, some candy bars or cookies and just do whatevere i like...
That's why I preffer not to have a programming job anymore, I hate when being preasure of doing something and I just can't get in the mood to have it done in that moment...
What are the major interrupters?
Telephone calls, background noise, and other people. Working odd hours tends to resolve this.
Slashdot: come for the pedantry, stay for the condescension.
I think music/noise is the biggest constructor/destructor of the zone for me. I will listen to either music I know really well (so I don't get caught listening to the lyrics and hence distracting me), or wordless music (classical, trance, ambient, etc). This tends to work well for me. I also have to take my phone off of the hook, disconnect any IM programs or auto-email checkers. Any little thing on my machine that can pull me out of the zone while I'm coding I need to purge. Light doesn't seem to have much of an effect on me. I also like to code alone, but with some sort of person/advisor/boss/mentor within walking distance...in case I really get stuck.
I drink to prepare for a fight; tonight I'm very prepared. -Soda Popinksi
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.
Need I say more?
Sure, anyone can go from zero to hero in a matter of seconds if they want to knock some code out, but I disagree with anyone who says that writing code isn't an art form. Tell me to come up with a picture of a person and someone might scribble a smiley on a napkin, someone else might paint the Mona Lisa........sure they both do the trick, and taking a balanced view one may be overkill, it all depends on the purpose. My point is however, any monkey can bash code out at the keyboard, but is it the most efficient/elegant/etc. code that could have been used to accomplish the task??
I too am a developer (for 8 years).
From college CS on, I have worked best from about 11PM to about 4AM with blaring techno (Richie Hawtin, Cari Lekebusch, Christian Vogel, etc). However, I will never be able to reconcile these habits with my current employer. So, I estimate my schedules given my current productivity, and if needed I work during the day, and then work later at night. I'm certainly comforatable with that.
Working those odd hours does not enable the company to manage me effectively, and I can't be a resource for my fellow employees. If I signed my paychecks it would be a different story.
The Zone seem to be evasive when you can't decide what the best solution is. Even a tiny amount of indescision will mess u up. Oh, and for me, absolute silence is best. One of tose nice noise cancelling headphones are best, since a house in the country with noone around is not the best environment.
"Provided by the management for your protection."
What are the major interrupters?!?
Hello??
You just asked the major interrupter!!!!
I stole this Sig
Good lighting, not being pissed off at my boss. A whiteboard, room to pace and some quiet. I was happy working 30 hours on and 6 off when I had my happy bottle of rum sitting on my desk and no phone. Of course, going from time and a half to doubletime on the third "day" at work was pretty nice too. But a good chair, a 4'x8' whiteboard, halogen lamps and a pair of headphones worked great. Shared the office with a rather strange person. We got along well so it was all good.
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).
--Jim
...is 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.
Hey freaks: now you're ju
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."
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.
Browsing Slashdot for hours on end often helps me...
:-))
(yeah, right
-Mike
This sig no verb.
I find that IRC helps.
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?
My zone involves a 6-pack of Cherry Coke (or Dr. Pepper, or Root Beer) A box of crackers, party mix, goldfish, etc. Xmms open with my playlist (a good trance song really gets me coding). I like my blinds closed with as little glare as possible. And probably my doors closed so that I have fewer distractions. It is also good (though not required) for it to be very late at night. I do like some background light, but just no glare. Non-Flourescent over-head lights really do the trick. It is also a necessity that I've got a good project to work on. I don't get into coding unless I'm genuinely interested in what I am coding. If all the above requirements are met, by the time I am halfway done my second cherry coke and a quarter of the way done my goldfish, I am riveted by what appears on the screen and won't get up until I've either got to pee real bad, or am being yelled at by roommates.
__________________________________________
Take comfort in your ignorance.
Grandmaster Plague
- continuous filtered coffee, of the the good Italian kind
- my illuminated aquarium to my left
- my TV to the right playing clips of Britney Spears
- my ADSL on continuous standby, as you never know when the urge to play online chess will overcome you
- Kazza Light running in the background stealing stuff from the net
- my loyal dog at my feet, of the Cocker Spaniel kind
- oh yeah, and when I go to work I give all this up sit in a boring cubicle - they might wonder why I'm never in the zone there
- did I read somewhere that you can take your dog to work at Google?
ma vie est un équilibre sensible de vin, de nourriture et de la programmationconsider coffee a lubricant that helps one penetrate the coding zone
I must be some sort of AD because any distractions at all will seriously mess me up. Closed room, no colleagues / games / TV / web access / etc seems to work best for me. The trouble is enforcing this sort of environment ... for myself alone, never mind enforcing it for multiple people who work this way..
Oh yeah, large quantities of caffeinated and insanely-sugared beverages always helps.
"How can you claim that you are anti-crack, while still writing a window manager?" — Metacity README
(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.
;-) In any case, some incubation time to have clear and well chosen objectives is good.
(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
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.
No to sound cheesy but I really enjoyed _Zen and the Art of Archery_, the story of an American who is a professor of German philosophy teaching in Tokyo. He studies Zen through archery (as opposed to swordsmanship, tea ceremony, flower arangement, etc) and has a perspective that is fairly easily digestable to the average Western reader. It made me move past my perception of Buddhism as just a religion for crystal wearing, new age music loving, aging hippies. And without a doubt it has helped me find my coding "zone".
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.
For me, the way to get into the zone is to have a good definition of the problem I'm solving and to have an immediate deadline (positive deadlines work, too; e.g., "finish this by five and you get an extra $250"). If I've got those two things, I can work while sitting on a bed of nails, with a strobelight behind my head and a copy of Metal Machine Music blaring over the speakers, with my feet soaking in a tub full of piranha and electric eels. You should try it sometime; it's exhilirating.
On stereophonic equipment, the monaural sound obtained through multiple channels will enhance your listening pleasure.
WARNING -- this is a seriously unsorted rant with just scattered facts, it may need some analyzation to understand ;)
;)
Im most effective when i am in a clean enviroment, plenty of room to just look around, also i find im more effective and "inspired" if the enviroment around me has changed. IE moved furniture, something that keeps me motivated and happy in thought
If someone disrupts me, that ruins the happy thought and I must kill them, that or invoice them for the time they have caused me, and the time im going to take to get back into my comfortable enviroment zone thingy
Caffine helps, but only for so long.
Big meals beforehand ruin my concentration.
Idle noises and video that wont draw me in, but keep the world around me sane (IE TV on low volume, watching something interesting, however that that i've seen before -- Check HBO comedy channel (HBOC)) help immensly.
Music that i've heard and am comfortable with helps, new music hurts.
Being at night helps, not because of the darkness, more because its quiet and nobody can bother me.
Lighting should reflect my mood
Having pants and socks on helps -- shorts and no socks ruin my work ethic for some reason -- this is only applicable to when im working at home. for some reason i'm fine in shorts @ office.
there's probably more, but its all rotating around my comfort and happiness zone.
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.
By Tom Demarco and Tim Lister. It gives real world examples, research and solutions. It isn't extreme but makes the case the most corporate cube farms do not lead to productive work envronments.
Don't enforce start/stop time rules but enforce the rule that you have to attend the meetings you say you are going to attend and you do the work you say you are going to do. If a problem arises, don't wait a few days to tell the PM, because the PM needs to mod the schedule ASAP in order to keep client expectations in line with reality. Telling your team mates where you are (in your coding) is just plain and simple manners.
I've found that I really have a hard time programming with a lot of other people around me, because I tend to get distracted easily, especially when they're working on and talking about the same (or similar) project as the one I'm working on.
I need a programming room, one that I only enter when I need to sit down and do some serious coding or design. Under no other conditions may I enter the room... When I enter, I wholly concentrate on the task at hand, and when I leave, I un-focus. The walls are covered with whiteboards and there must be a high but comfortable chair, plenty of space to spread out and walk around, and most importantly, music, with the ability to turn it off and change the song on a whim.
And of course, a tennis ball to bounce off the walls while I think...
...this isn't a problem. Once you have the solution for a problem, writing the code for it is straightforward. If you're working on a large problem (or any even somewhat complex problem), you need to DESIGN your solution first. This means making flow charts, diagrams, and assorted things. Then, you need to create pseudocode for the project (most of the time...if you have done the design stage well enough, this usually isn't necessaey). Once you have a design like that, the code should be straightforward in ANY language. Coding is not THAT difficult. It's the design that is. Once you've figured out the problem and its solution, you're 9/10 of the way there. Coding it up is the EASY part.
Most notably cow-orkers who aren't there as part of a pair-programming process. With office mates having conferences in the same room one is trying to get work doine productivity is easily 25% of what it can be otherwise.
The article had/advised the following:
I think the author noted that you eventually reach a tolerance level with all this stuff, so use in moderation, or when you absolutely have to.
If anyone knows the volume and issue number please let me know.
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.
It isn't a lie if you belive it.
Involves a comfy chair, loud mozart, a big monitor, and a bag of doritos. Oral sex when the wife is willing
CAn'T CompreHend SARcaSm?
Ok, I'm not a programmer, I'm an admin but a zone is a zone.
First, it depends on what i'm working on and my mood. If I'm working from home, it goes like this: Pepsi or coffee, 2 packs of cigarettes, BIG ashtray, and (here's the important part), some Grateful Dead on the player.
If I'm in the office, I like the quiet so I wont be distracted. [this is the part that wont work for everybody], I turn off my hearing aid. Absolute silence, just me and the keyboard. No phone, no conversations, no nothing. Just turn my Ear off until I need it again.
Still gotta have the Pepsi or coffee though.
Being deaf has its advantages.
for me... myers's rum, and coca cola, with lemon and ice... the more the better... oh yea, and a big ToDo.txt file that outlines the future methods and members of my classes...
OS X rocks!!!
As a developer for 18+ years, I have developed good enough work habits that I don't need any artificial "zone", or whatever, to get or keep me motivated. If a developer cannot sit down and start being productive in whatever environment that they find themselves in, then the person either does not have a challenging enough assignment, or enough training or experience for the challenge.
"Send an Instant Karma to me" - Yes
The perfect ammount of caffiene. too little and I don't start. Too much and I'm fucked, I'll stare into space for too long.
/etc/hosts file.
Same goes with irc, slashdot, and other news sites. You need a little bit of destraction, but keep it to a minimum. If you find you're constantly flipping between your code and slashdot waiting for the next article, it is time to put '127.0.0.1 slashdot.org' in your
Lists also help me consentrate on what is needed. Do not get sucked into writing a library which will make everything much easier. Let the library write itself. Hack your code up, then when you see yourself reusing it, yah you have a library!
Remember to get a little bit of killing in every day. I like to kill yuppies, as they often have cool gadgets in their apartments. Also they tend to live alone. It is helpful if you put plastic down before you kill them. Makes it easier to clean up the mess. If you are worried about the mess, don't be afraid to burn their place down.
Still working on perfecting this as only recently have I begun to really start paying attention to "activating" that "Zone" you speak of.
The most important factor for me being able to enter the zone is my emotional health. Any drama from home and such can quickly render me completely useless.
The second most important factor to me is people staying out of my face and just letting me work. When I get sucked into the "status meeting" bullshit and have a bunch of little weenies watching over my shoulder (and getting jealous and snitty and backstabbing) then that'll fuck my game up for sure.
Of course my work environment is important but my biggest complaint with this is the noise level that can rise in cubicle land.
Wish I could have a private office but I'm not a manager so I'm relegated to the "pit".
Finally, one last big thing -- I have a habit, particuarly these days, of compulsively look again and again at news sites, expecting the End of the World to happen at any second. This generally raises my anxiety level the longer I do it and requires some self discipline and control to break out of this habit.
mje0w!!!1!
Music is a very important part. I always need something playing in the background - silence is absolutely killing me. ... . 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.
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,
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.
There are also set ways to write a novel.
This is fine if you want a formulaic novel.
There are set ways to doing matematics...
but that dosen't mean that creativity is never involved in mathematics when developing a new solution or heuristic and creativity is not nessicarily reliable.
___
It's the end of my comment as I know it and I feel fine.
I have been programming for about 3 months now, even though i am still learning a lot when i did my first real project i learn a lot on what helps me get from point A to point B. I like to have my desk cleared with a sheet of loose leaf and a pencil. This comes in handy if i need to plan something out. As for music something like epic trance is probably the best for the job. Since i goto school durring the week the best time is around 4-6 on friday, i have the weekend to look forward to yet i can still go out to a movie or what have you. As for drinking, red bull is the shits for doing any sort of work. Anyone else have a setup like this?
Carpe meam simiam!
Probably the best time to code is when slashdot goes down :) THAT's my biggest distraction...
"If at first you don't succeed, lower your standards."
Programmed for what seemed like days, started in the afternoon, then looked out the window and saw that it was dawn. Looked at my code for what seemed like the first time, and for the first time, compiled and ran.
Zarro boogs!
The code looked like kobold cobblers threw it together, but it worked.
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.
Lunix - check
...
Problem thought through - check
Time line - short
VIM - ready
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.
-- If no truths are spoken then no lies can hide --
Doing something interesting. That's a sure fire way to get me in the zone. It's not too hard for me to acheive, since I can find anything interesting -- even mowing the lawn.
The trick is to stay in the zone for as long as possible. I listen to music on the iPOD, which keeps me out of the flow of conversation in the office around me. Normally rock or dance music, but to be truthful, although something a bit more classical and soothing does make me more productive - I've seen a number of people who swear by Mozart. Listen to internet radio, or a big MP3 collection so you don't have to change CD's / minidiscs etc. Having to pick the next tape can throw you.
Contrary to other many other programmers, I prefer to work during the day, since I don't have the problems getting terminal time. At night, you start to fall asleep. Unless it's really interesting.
Take a break to eat / drink / leak etc when you hit a gumption trap. The distraction nearly always gives you the perspective to get going again. Don't take a break to go to a meeting
Make you desk comfortable. Make your desk big. That way you can fit keyboard, mouse, monitor and the manuals in from of you. Use a good monitor, mouse and keyboard. No good trying to program with a bad back. The chair is probably more important here than the desk. Make sure it has arms. Work in a room with a window.
And finally -- work with a rubber chicken on your desk. Those guys rock at GUI design.
There was this period when I was working for a startup before we had an office. I had a nice fat laptop and did almost all of my work at this Irish style pub in Albany. Black and Tan; good Churchill cigar; it was heaven. Even the meetings I had there were fun.
Then they got an office in downtown SF. Suddenly it was nothing but pure headaches. The only way I could get anything done was to pull all-nighters.
At least I had that one short month.
No artist tolerates reality. -- Nietzsche
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
Codifex Maximus ~ In search of... a shorter sig.
When I was a teen, just being awake was conducive to hacking and writing code and working on hardware. As I get older, I find myself more and more preoccupied by daily "life stuff".
;) ) often lets me refocus more clearly later on.
I find a good walk, or bike ride, or workout (vertical or horizontal
There's no set of rules, though. Sometimes just good night's sleep helps.
"The zone" is a mental state and so what you're really trying to do is influence your emotional and psychic state to be one conducive to programming. Although furniture and lighting make a difference I think the more important aspect is to create the right type of mood, or rather to affect your mood to move towards programming. At different times I can have tremendous nervous energy, be sleepy, vacuous or relaxed. It's about making those states work for you. When I have a lot of nervous energy I have to be sitting in a chair that lets me sit tall and direct myself forward. When I'm in a relaxed mood I honestly program best sitting on a couch or reasonably comfortable chair with the television on in the background. I can program 90 quality hours a week like that with no problem. So if your workers cannot work at home, make the work environment adjustable to a person's mood. Then talk with your employees about their ability to concentrate, what would help them concentrate and suggest to them ways to reminds themselves why it is their doing what they are doing (money, stock, or some silly belief in what the product stands for - whatever works for them). The best thing for me is to just think for split second about the fact that I'm programming to keep my job and I'm trying to keep my job for the money. Great motivator, especially in this economic clime.
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.
"God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
For me, I need a well lit room, with absolutely no sounds (i.e. no music, no telephones) and a steady supply of snacks and soda. If you're like me, and work from home in an apartment building or townhouse, then the quietest time is midnight to five in the morning....ah, bliss. :-)
- Live in a small town: I found that city life -- and city traffic -- adds several hours a day of frustration to my life. I commute five minutes to work and anywhere else I need to go. My cars last longer, my money goes further, and life is just generally simpler. Admittedly, more than a little luck was involved in finding a good high tech job in a small town. Try a college town.
- Casual wear: I avoid work environments where I need to wear a suit and tie. Dressing and laundry are harder for me than most people would believe (though not most ADD people). I can wear jeans and a tshirt every day of the week.
- Exercise: I've found that a moderate amount of exercise in the morning clears my brain. Sloth make programming harder and high-end exercise doesn't seem to improve anything.
- One yellow sticky: This is one of my favorite ADD-busters. I always keep one yellow sticky posted next to my computer reminding me of what I'm working on. (No, not the same yellow sticky, I rotate them through. :-) ) That sticky has a single short sentence saying what task I'm trying to accomplish. My mind tends to wander, and office-mates, phone calls and Slashdot make it wander even further. My yellow sticky helps me come back to the task at hand.
- The right combination of caffeine, sugar, and ramen: Just in case the exercise statement above made you think I'm a health-nut, this should dissuade you. If I find that I can't get my wheels turning, a latte or hot-chocolate usually helps. Ramen is also an important part of my brain helpers... it just seems to perk me up and sustain me for several hours.
- Break problems down into ever-smaller problems: when I hit the wall with one of those nasty programming tasks, I avoid panic (a big problem for me) by breaking it down into ever-simpler tasks. Sometimes they become as simple as "log in". I find that as long as I continue to make some progress -- however slow -- I can usually slog through any problem.
- When the going gets tough, quit: If I really just can't get my wheels turning, I just give up for a while. I peruse Slashdot, go exercise, or (if politically possible) take a nap. I usually find that if I get away from it all for a couple hours I come back rejuvenated, often with the problem already subconsciously solved.
- When I get into a groove, go with it: If my wheels are turning and the code is flying, I go with it, all night often. It's hard enough to get into the groove without throwing it away when I find it.
- Most important of all, go with what works: Throughout my life I've had to listen to people tell me what I really need to do to concentrate. They were all full of shit. None of them understood the difficulty of having ADD. One of the most important epiphanies of my life was when I realized that I study and worked better than most people if I just do it my way. I tend to work in ten minute bursts and then screw around for a couple minutes. That works for me and the hell with the people who say "pace yourself, don't work in bursts". I stay up all night often even though most people find that somehow "wrong". Go with what works for you and the hell with everything else.
I'm still experimenting in trying to find the optimal conditions, but I at least note that the Zone differs very greatly depending on what I am doing.
For design work, which typically involves heavy analysis and general thinking, I need it very quiet, and lots and lots of light. Big freakin' notepad (white is best), with mech pencils.
For coding, after all the really heavy thinking has been done, I typically want blaring music - almost invariably I play stuff from The Prodigy; especially from "The Fat of the Land"; especially "Breathe", "Smack My B---- Up", "Funky S---", and "Mindfields". Something with a fast beat sets a good pace for my fingers on the keyboard, but I simply can't think if I play that stuff while trying to design. And I haven't tried it, but I wouldn't be surprised if I'd like dark for coding as much as I like light for design - but it'd have to be at least light enough to read by, in case I need to refer to something in the design. Maybe some sort of twilight'd be best.
I always program better when I am wearing shoes. As soon as I take them off my brain turns off.
This has always worked really well for me :)
Mt. dew and a snickers!
* 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.
mmm... yeah... You see, we're putting the cover sheets on all TPS reports now before they go out...
To my way of thinking, the only barrier to the zone is physical deprivation of some sort (e.g. sleep) or fear. Sometimes, working on the problem can be hard because you've let it intimidate you. If that happens, then it's time to turn off the computer and work on the problem on paper. Go back to the computer when you've developed some idea of how to start.
"The zone" isn't artificial, but it may come more naturally to some than others. Consider yourself lucky.
Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
Many slashdotter's have referenced their environment (dark, quiet, your own chair, your own machine, etc..), and these are very important. But the problem is, after a few days at your new job, or in your new office, you've already got these things set up and you're still not in the 'zone' from 8 to 5.
Mental preparations need to be in place if you really want to achieve something. I start out my day with a healthy dose of slashdot. Read about techy things, read up on the latest programming project, get those wheels spinning. And then take 5 minutes, grab a random piece of code, and optimize it. I find that the moment that I pull off something clever, I'm in the Zone.
Also, once you get to the zone, leave it often. Smokes work great here. Hit a snag? Run into a road block? PHB's getting you down? Take 5 minutes and have a smoke. 5 minutes away from your computer, staring at something other than your code, often free's the mind up. Leaving the cubicle helps you 'think outside the cubicle'. And that my friends, is where the Zone is.
Do it doug.
the zone is something internal and comes spontaneously, like a good hair day. the immediate surroundings are of no consequence in my opinion. if only there was a way to steer that "good wave" , make it last longer...
All I need is a set of headphones and music to tune out conversation, ringing phones and the like.
That and a constant IV drip of some flavor of caffeine.
EXTREME PROGRAMMING is edgy!
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.
.
Let's not stir that bag of worms...
if some of you need absolute silence then why dont you just get one of those headphones that produce white noise.
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. :/
And the brethren went away edified.
1. An office with a door.
2. The phone ringer off.
3. The email client shutdown.
4. My web browser shutdown.
I have ADD and just seeing someone walk by my office is enough to distract me.
5. Lots of empty desk space.
It doesn't stay empty for long, when I'm in deep code I have manuals open, scrach paper all over, and it looks like a bomb went off.
6. A really comfortable desk and chair, the monitor at the right height...
It really sucks when you develop a major knot in your neck from bending over to look at the monitor.
7. Room for the feet to strech out. I hate kicking machines, and pulling cables when I strech out.
8. A fast machine, a big monitor, and a good editor (Visual Slickedit preferred).
The more text I can fit on the screen at once the happier I am. The faster the machine, the faster I am.
9. A bunch of scratch paper.
I'm always needing to write down small things. A variable name here, memory address there, variable values from the debugger, the stack pointer right now. I always need paper.
10. Liquids - Water, soda, whatever, it needs to be the appropriate temperature and on my desk.
11. Food - When I'm having to work late food better be provided. I'm not staying late if I'm hungry, and I'm not spending my money for dinner when the company is getting free overtime, and I'm not doing chasing things down to do the re-imbursement paperwork. If the deadline isn't important enough for the manager to make it easy to work on the project then the project isn't important enough for me to work overtime on it.
are all i need for optimal coding conditions.
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!
OtakuBooty.com: Smart, funny, sexy nerds.
- 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.Of those to whom much is given, much is required.
"No distractions, no distractions, no distractions, no distractions"
I can't harp on that point enough. It takes upwards of 30 minutes or so of munging code around to get in the groove and spit out decent code, whether that code be C, C++, Java, HTML, you name it. If I get interrupted, that's another 30 minutes or so to trace back a few pages of code, sometimes going back a few files as well, to pick up my train of thought again.
"Jesus saves, but everyone else in a 10 foot radius takes full damage from the fireball."
I haven't been in the zone for about 3 1/2 years.
Two words: "Mountain Dew"
Thanks for the post - Much to my surprise, I have also described this state as being "In the Zone" and I found it odd that someone else has referred to this state of high development productivity with the same terminology.
I work in a small office with 2 support people and a lot of foot traffic and phone ringing. I found it so "zone state destructive" that I purchased a pair of noise cancelling headphones. I highly recommend noise cancelling headphones in a noisy environment.
A. Coward.
Even when my boss sneaks up on me and find me fucking around I'm able to makes some excuse like: "I'm just trying to find examples!"
Hollow words will burn and hollow men will burn.
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.
.. is to sit at the computer and start coding, no need to arrange anything anywhere..
The Truth: There is no string:)
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.
SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
i must concur: if you can understand the music,
.02 cents :)
enough to sing along or have it register as anything
beyond 'just music' you are taking away from your overall
concentration.
this is why ambient / electric-ish type of music
is preferred among people, because there's nothing
really to pay attention to beyond 'just good music'
or 'just good beats'.
my
kyle
--even a broken watch is correct twice a day.
I get into the zone for my development, when its late at night and i was almost on the virge of sleep. My best programming is done from midnight to 4:00 am. Also, i do it laying in bed with my trusty HP laptop that is running XP (linux has hardware problems). Phone calls & emails ruin the zone. Also music, it needs to be rock & rap, something with a good strong beat, stuff i am decently familar with and can sing along to.
Personally, I think that most of "the zone" is just a state of mind, not necessarily what is around you. Personally, I have two phases of tearing through code, hardware design, whatever...
1) Chain-smoking thought phase: Pretty self-descriptive. I essentially get a bunch of white paper, a good writing surface, and chainsmoke in front of my fishtank, tearing through whatever planning and basic design needs to be done.
and then,
2) Production: Once I'm confident my plan will work, and I can assemble it all without having to think too much, I plop myself on my machine, put on some good tunes(Akira soundtrack, something energetic that makes you want to destroy), and go at it. Assuming part 1 went well, debugging is usually quick.
Eh, it works for me. Just chunk up everything into manageable pieces, and tear them a new one in a quick swoop.
Of course, my most productive hours are 3am-6am. So, I could just be insane.
-- i could eeeeven eat a baby deer. falalalaalalala lala!
-agent oranje.
weed and beer. mostly weed. well, and beer.
MARIJUANA, SHROOMS, X: ONLINE?! - E
- Live in a small town: I found that city life -- and city traffic -- adds several hours a day of frustration to my life. I commute five minutes to work and anywhere else I need to go. My cars last longer, my money goes further, and life is just generally simpler. Admittedly, more than a little luck was involved in finding a good high tech job in a small town. Try a college town.
- Casual wear: I avoid work environments where I need to wear a suit and tie. Dressing and laundry are harder for me than most people would believe (though not most ADD people). I can wear jeans and a tshirt every day of the week.
- Exercise: I've found that a moderate amount of exercise in the morning clears my brain. Sloth make programming harder and high-end exercise doesn't seem to improve anything.
- One yellow sticky: This is one of my favorite ADD-busters. I always keep one yellow sticky posted next to my computer reminding me of what I'm working on. (No, not the same yellow sticky, I rotate them through. :-) ) That sticky has a single short sentence saying what task I'm trying to accomplish. My mind tends to wander, and office-mates, phone calls and Slashdot make it wander even further. My yellow sticky helps me come back to the task at hand.
- The right combination of caffeine, sugar, and ramen: Just in case the exercise statement above made you think I'm a health-nut, this should dissuade you. If I find that I can't get my wheels turning, a latte or ho-chocolate usually helps. Ramen is also an important part of my brain helpers... it just seems to perk me up and sustain me for several hours.
- Break problems down into ever-smaller problems: when I hit the wall with one of those nasty programming tasks, I avoid panic (a big problem for me) by breaking it down into ever-simpler tasks. Sometimes they become as simple as "log in". I find that as long as I continue to make some progress -- however slow -- I can usually slog through any problem.
- When the going gets tough, quit: If I really just can't get my wheels turning, I just give up for a while. I peruse Slashdot, go exercise, or (if politically possible) take a nap. I usually find that if I get away from it all for a couple hours I come back rejuvenated, often with the problem already subconsciously solved.
- When I get into a groove, go with it: If my wheels are turning and the code is flying, I go with it, all night often. It's hard enough to get into the groove without throwing it away when I find it.
- Most important of all, go with what works: Throughout my life I've had to listen to people tell me what I really need to do to concentrate. They were all full of shit. None of them understood the difficulty of having ADD. One of the most important epiphanies of my life was when I realized that I study and worked better than most people if I just do it my way. I tend to work in ten minute bursts and then screw around for a couple minutes. That works for me and the hell with the people who say "pace yourself, don't work in bursts". I stay up all night often even though most people find that somehow "wrong". Go with what works for you and the hell with everything else.
is to get out of your mind. Focus on your work with no agenda. Your mind limits you in many ways but it can be overcome by getting out of it. The mind is not a useless tool but rather only part of the complete tool and it is time to integrate every part of you.
Tom E
Being able to see anyone nude with a mouse click away. So i think the overall answer for this would be "Being a male.".
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....
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..
There's few things I hate more, but what incredible motivation to have to get something done by a certain date/time. I'm sure a bunch of you will agree that you find yourself forced in to "the zone" when your work is due the next morning.
I suppose it all has to do with how you deal with pressure and how self-disciplined you are, but I found that I could harness the power of said "zone" when I set deadlines for even the smallest tasks that otherwise would only be in the form of a to-do list in my head. Granted, it makes life easier when I've got a lot of Iced Tea, Jolt or Cola at arms reach, have little or no distractions, am comfortable and have the repetitive beat of some fine techno playing in the background.. But when you come to that point where you're afraid to look at the clock because you just know you're running on limited time -- boy do things click!
Of course it all falls apart in to a horrible disaster of dreaming up excuses (be it to your boss or yourself) and your stomach eventually knotting up in to a big ball of stress when you just can't find that 'catalyst of motivation' (tm) to get you in to that "zone".. But hey, it comes with the territory!
I I hit a streak where I can not get motivated I buy something new, I guess I get excited to use my new mouse or sit in my new chair and then I can relax and hack away, Note the more expensive the better,
an icy mug straight from the freezer
a 2 liter of Pepsi
lighter
sack of some really kind ganja
1.5 foot bong
pack of cigarettes
and finally, queue up a few bitchin' live Grateful Dead shows in xmms
This puts me in 'the zone' every time, YMMV.
im still undecided about this.
.. get some sleep ... then when it comes to me, or time is running out, i sit down and write it out, talking outloud, sometimes explaining it to people who may or may not understand, and then i write it.
.. the biggest part is getting the 'mindshare', and then you can just live in your own little world and pump it out.
my current method is:
when i find a particularly twisted problem, i'll think about it, then do something else or nothing at all for a day or two
I don't know if all of that could be condensed into just talking/writing it out in the first place and doing it, though i often convince myself i need the "back burner" thinking time.
as for the environment, when im just starting, i need absolute silence, not a lot of people moving around, and i need to be at a desk or similar setup.
but once I start going, it doesn't really matter
When I need to get into the zone, I need a semi-dark room, my laptop,... and streaming Internet radio! That is a must. And depending on what my mood is at that time, I can change radio stations when I wish. I've got a whole list of stations for different moods.. from groove and indie rock, to smooth jazz, to alternative. I can't stand a repetitive MP3 playlist.. I always need "new music", and Internet radio fits that bill just fine. Of course, that assumes you're bandwidth-endowed. :-)
:-)
And yes I agree with some of you that web browsers are the prime distraction! Ok gotta get back to work...
I respect much of what is said - but hacking real systems requires you to listen to the users. Yup, close the door from time to time but always be willing to listen to your users the rest of the time (too many users? nominate an elite group).
Even when they talk crap you are confidence building, and learning stuff that should be passwed on to trainers etc. even if you can't incorporate it.
Without their feedback you aign't gotta chance. (Sorry for the anon coward, I'll create an account next time).
So, where do I start?
otherwise you're not programming. You're just coding. I get my machine to grind out code.
Since I program in Smalltalk and write code generators for other languages (or even for Smaltalk,) you're obviously talking about a lower level of productivity that I have progressed far beyond.
God, it must suck to be you.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
The zone for me is always achieved when the pressure is at it's highest, the cigarettes taste the sweetest, and there nothing in the world that can interrupt me. I'm not sure this is something that can be sought but rather just happens when most needed.
For interesting things, motivation isn't a factor. But for the most part, we are coding uninteresting things, even when we're coding stuff we want to code. Sounds like a conflicting statment, but it's true.
I don't know about other people, but for me, I become very demotivated when I think about large boring projects with many boring moving parts. So I have to force myself to sit down and hack away at the boring moving parts in a "brainless" manner.(note: When I say "hack away", I mean the thought process of designing solutions to later be implemented, not the actual process of coding itself) Sometimes I get into the zone, other times I don't. Regardless, progress is being made either way, even if it means I'm designing and discarding bad ideas.
My guess is spend less time trying to find "the zone" and more time trying to produce "results." There are such things as brain food, chocolate, red bull, and coffee that may help someone reach their zen like state. There are also things called regular sleep, 3 meals a day, and getting to work on time that work just as well... BTW - get rid of the X-tReMe programming book.
I have found a lot that change is often a really good thing.
;-)
Perhaps laughable, but I have three keyboards that i keep connected to my dev machine (one split, one regular, and a touch type) and use each one on average at least once a week. The change in keyboard, since it is the main interaction that I have with my computer, keeps things feeling "fresh". Now, I throw this about keyboards out there, but even the rest of my coworkers laugh me for it.
Also, in keeping with the general idea of change I normally change at least every 30 minutes how I sit in my chair. As sitting in the same position for too long causes me to feel fatigued and tired much faster than moving positions.
Lighting. Basically, when I start a long stint of programming I like to have little to no light. But as time drags on and I become tired I progressively add more light as it helps to keep my focus and from falling asleep.
Sometimes is a distraction, but it's usually an excelent tool: My bookmarks menu is:
* GTK+ Documentation
* GTK+ Tutorial
* GConf manual
* Guide to teTeX documentation
* Python 2.1.1 Documentation
Besides, I use several automatic documentation tools for my code which generate HTML. They are a big plus to productivty.
See we really just need to relax the rules about viewing porno on work machines and all those silly ideas about "public decency". A well-timed "release" can do wonders for one's focus. Good thing I work from home...
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.
But the one thing that COMPLETELY annoys me and slices my train of thought in half...
Argh! Brrrrrrring...brrrrrrrrrring....brrrrrrrring. Can anything be more annoying than the phone? Yeah, when the people on the other end are relentless in their quest to sell me a new mortgage opportunity (I wish I could tell them to look elsewhere than a 14-year-old who spends 100% of his income on computer stuff).
Anyways...interesting thread. I hope it doesn't become a "write-only" one like these show-off ones often do.
qslack.com
two or three weeks of pr0n, Flash games, noodling around with "play" projects, and /. set me up for 1.5-2 solid hours of really productive work.
Some of you seem to be missing the point that coding is very similar to book writing.
There are several similarities:
Creativity - if you don't have this, then neither coding nor writing will succeed.
Finding the zone - most, (if not all), book writers PREFER to NOT be disturbed. This disturbes their train of thought. Writers, (like coders), like to envelop themselves in their story so that they can write better. Similarly, if a coder is on a train of thought they don't want to be disturbed either.
Style - whether you're writing a novel, or cutting code your opinion and style will ALWAYS surface. Whatever you write will always be an extension of yourself.
Debugging - You debug code, you proof read books. Same thing!
The only differences I can readily think of, (correct me), is the fact that on big projects you have several coders, as opposed to writing books you always, (almost always), have one.
Of course this highlights the question, "Are you talking about novels or other books?". Well, I think both apply.
Also, all this doesn't mean to say that a good book writer will be a good coder - it's a different thing. Coders need to have both sides of the brain well developed, (technical AND creative).
-- main(s){printf(s="main(s){printf(s=%c%s%c,34,s,34
First off, there's gotta be a need. Example:
"Code-Boy, we need the web-page updated"
"Code-Boy, I've gotta get my DNS bindings back up"
"Code-Boy, where's my fscking database?"
Then, there's the frame of mind. Usually it hits the best level just after dusk, after dinner, on a night that is not a school/work night. Complete relaxation, with the creativity flowing, nowhere to be, the day is officially over.
It's best if I've got a tall, cold glass of Cherry Coke at hand, and also a glass of water, just for health concerns.
Next of course, music is Über-Important: some Chemical Bros. and Gorrilaz sets it up nicely. That plus my patent-leather chair makes it comfy.
Lastly, and MOST important, it's best if the girlfriend is not in the house at the time. I feel like too much of an @$$ sitting there in Da Zone while she sits there and stares at the back of my neck in boredom.
All in all, it comes down to several key factors that come together to create a shell of complete and total immersion into my work. Comfort, relaxation, and no distractions.
"Sometimes you have fun, and sometimes the fun has you"
My favourite/most-productivity-inducing music comes from:
I find I program slowest when listening to:
...he's the biggest interrupter you could imagine!!
..... but of course it jsut doesn't work like this :0p
.....um where was I?
Whenever I get anywhere near the zone he's gotta come and talk to me for ages about things that are totally unrelated to what I'm working on and then it takes even longer to get back to the zone after he's finished.
I think it's import for managment to realise that they can't just barge in and interrupt production staff at a whim whenever they choose to.
What we've tried to do in our office is to regularly set aside some time when production staff can be interrupted
Oh well back to work
Why do today what you can put off until tomorrow?
I fall out of the zone if I have to wander outside and stand in the rain/snow/cold to have a cigarette...nonsmokers really don't know the value of a smoking room.
I can understand the need to get into some kind of perfect frame of location to go with your frame of mind, but the kind of stuff I program at work are simple straight forward network tools. It would be about as necessary for me to have the "zone" set by live strippers and James Brown to write network tools as it would for me to an LDAP search on an orphan in our Active Directory.
A lot of angles come into this as well. Some people really need to focus on something to be able to learn it. Some of us don't, we just read the syntax, try the code, try some sample code, and see how it works, then use it. Generally it comes back to how well you know your language I feel.
But then you have to work out a problem that is damn right crooked. There's no straightforward apporach to it, perhaps because it's never been done before(I haven't found a project like this yet). Or maybe you are just trying to code something and you aren't really looking for any help from those who have mastered it. So you crank up the legs on your lazy boy, get your Spinal Tap on the stereo, get 3 live llamas standing around you, yank out your prised microsoft split key keyboard that reduces yor typing speed by 60WPM, flip on your pride and joy 21 inch ultra barrel screen mitsubishi 12 year old monitor, and then you are finally ready to code gorilla.bas, without help of any kind. Just you, whats in your head, and maybe an old turbo basic book by Sams.
This is my sig. The post is over.
Many people here have listed "no distractions" as their #1 requirement for zoning.
I agree, with the following two caveats:
1. I need a minor distraction every 45-60 minutes to remind me to give my hands a break. Otherwise, I'll get an RSI relapse.
2. Sometimes, I end up thinking very hard about a problem - so hard that I fail to see the obvious "almost as good" alternative. I am stuck down in the weeds, when I should be looking for a solution in the bigger picture. I do have the bigger picture in my head but I am concentrating so hard on a small part of it that hard I do not realize I should step back.
My solution? CD player and headphones.
Every 45-60 minutes, you have to change the CD. Time for a hand break if you haven't taken one.
If I am concentrating on something too hard, eventually the music will distract me enough to make me reevaluate the situation. I find music, used this way, a gentle enough distraction that I slip back into coding extremely quickly.
Of course, listening to music doesn't address problems related to co-workers bothering you... other people have good ideas there.
I also find a well-chosen set of headphones filters out a lot of the ambient noise, even if you aren't listening to music.
There's always one more bu6
As a college student who regularly throws together 1000 lines of code every two weeks for CS projects (no, 1000 lines isn't much in absolute terms, but it is when you've got four other classes to deal with), I find that I do my best work when I have a list of tasks in front of me, and I can move down that list and knock them off one by one. Obviously, this is somewhat difficult to do sometimes, but having something like:
1. Write class Movie blahblahblah
2. Write class ArtsyMovie:public Movie blahblahblah
3. Write class Theater blahblahblah
That's what makes me go into the zone. It's that feeling that I'm making clearly definable progress. Generally, if I can keep moving for 3 or 4 steps, I'm good for 3 hours of work. However, if I get interrupted before then, the process starts all over.
Obviously, lots of Mountain Dew and big monitors are useful, too. If I'm working on a particularly bad-ass project, I'll flip on my second monitor so I have somewhere to stash extra windows.
-Erwos
Plausible conjecture should not be misrepresented as proof positive.
I have one word for you: "Opeth" and lots of it.
Just turn the volume all the way down. Works for me.
At least for me. Until I'm in The Zone. Then once I'm in The Zone, its just things in my peripheral vision or people talking around me.
:).
Best thing I have found is a good pair of head phones that act like ear plugs when you don't have any music playing in them and facing your desk to a wall.
Low lighting helps keep visual distractions down as well. The right music keeps my mind on the task at hand. Also the kind of music depends on what I'm working on.
I find that trance CD's that have been mixed all the way through are the best. Having the same or similar beat through an entire CD keeps my mind focused. Singing on tracks will also distract me, so just instrumental. On the plus side I played drums when I was in high school so the constant beat helps time my key strokes
-magister-
Give them monochrome monitors, flourescent lights, Muzak, and steel chairs. No cubicles: you need to see what they are up to. Chain them to their desks and if they don't produce give them a touch of the whip. When they do produce reward them by shutting off the Muzak.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Pardon me for being such an old fogey, but is being edgy good or bad?
This guy that was in one of my comp sci classes had this great idea for providing cheerleaders for programmers at his workplace. He had some problems convincing management of the productivity benefits, however.
This sig is umop apisdn.
I used to code, smoke & think, code & test, smoke & think,.
I'd code till I got stuck, I'd smoke and think about it till I got an answer, I'd then go back and try it, and move on until I got stuck.
I coded about 90% of the time and smoke about 10% of the time. I always had a whiteboard or a piece of paper with me when I smoked, and I wrote almost as much code out there as i did in here.
but ever since I quit smoking I've been screwed. It just isn't the same.
plus I can't stay up as late without the nicotine, no matter how much caffeine I have.
I'm thinking about changing careers now.
Dark room, radio blaring, few liters of pepsi. thats all it takes for me. oh, and the clock saying 3 AM.
Question
http://www.ironfroggy.com/
The "Zone" a trance like state I remain in despite bodily needs. I WELCOME distractions! Don't try to break apart coding, creativity, the iterative process and learning. Coding on the edge involves on-the-fly creativity. Don't forget that the code you write is leveraging that third party API that you are trusting to work. Be ready to change your architecture, be scared, very scared. You may have to write the driver yourself! Best music for programming: http://www.somafm.com/ Use stream ripper to load up your hardrive when the net is slow or you need a fix unconnected. Brian
nope, caffiene won't do it alone. I don't mind a cup of coffee or two, but two much and I get scattered and easily distracted. Tons of weed is what we've used here for about 5-6 years. For me, I need a few hours of non-stoned coding, but once I start getting fatigued, a joint an hour is the only way I can keep coding until the early morning. Great for finding bugs. It's not just me either, a lot of other coders I know break pretty regular and they all hit the roof for a joint, or if they're at home, even better, you don't have to break (except maybe to roll)
Having said that, if my desk has papers, pens, phones, and knicknacks scattered across it, it seems to quarter the chances of me getting into the right frame of mind. Not that I'm a super organized person by any stretch of the imagination, but if I have a ream of printouts scattered across the desk in a disorganized fashion, I begin to feel anxious and claustrophobic. I don't know why, maybe it's visually distracting or something.
At one point I had one of those L-shaped desks where the monitor sits in the corner with a bookshelf on one side. One night I had to actually stop what I was doing and remove all the books from the shelf cause it felt so confining.
Coding with that anxiety feeling sucks.
- Jonathan
Hmm, I can understand how one might find certain environments or moods to be more suitable than others for programming, but in general I've never found I had a "zone". Of course, I haven't really put much thought into this... I arrange my furniture in the most logical and aesthetically pleasing way possible. My computer goes on my desk, wherever my desk might be, and that's where I program.
;)
Certainly many things affect my mood and how I think, but I find that if I had a zone, it would simply be wherever I feel my mood is best expressed. The environment doesn't necessarily make it easier or better for me as far as thinking goes, but if my environment doesn't fit my mood, it tends to be a distraction.
Although, that one guy is right too - when your boss tells you to code something, he doesn't care much about your personal mood or ideas.
Or maybe not - must have room to swing cat.
Chemical: Red Bull, Adderall (dextroamphetamine HCL), Lots of Water, Healthy Food snacked on at least once per hour.
Aural: Chemical Brothers, Crystal Method, Prodigy, etc, etc. Some good punk and rock is nice to mix in.
Visual: 19"+ Sony Trinitron E400 with a decent amount of light coming from behind and to the side of my desk. No flourescent, nothing directly behind causing glare. Muted sunlight may also work.
coding? HA! if i ever got the chance too... (well, i guess i get to do SOME, but not as much as i'd like too)
I write code.
Stop stalling around and start programming, you lazy fuck.
Here's what works for me:
:) ;P )
Design:
When doing design there are a number of things I consider critical for me to be efficient.
o) Having the exact input specs available (either knowing them or being able to look them up very quickly).
o) Knowing what output is expected, what the end user will want out of this project.
o) Someone to bounce ideas off when I want to.
o) No interruptions, including meetings, newbie questions (sign on door works well for that), or incoming nerf fire.
o) When the above have been met, either
a) dark room, music loud enough to drown out the surrounding world, or
b) long walks, preferrably in average weather where I don't really notice what the weather really is like (i.e. not too sunny, not rainy, etc)
As for coding, my recipe is fairly "standard":
o) Dark room, and if really dark, turn down the brightness on the monitor as well
o) Lots of screen real estate
o) Virtual desktops. Code on #1, reference code on #2, misc stuff on #3, browser on #4 (for instant net lookups of RFCs and what not). And, of course, xmms on all
o) Hotkeyed E-term (or other transparent terminal) so that I can quickly run a couple of "intrusive" commands
o) Vi (let's not get in a fight over vi vs emacs, but I can tell you that vi runs fine (6sec startup time) on my 386. Emacs doesn't
o) Music. Normally one or two songs on infinite loop. The intro (and install) tune to the pc version of Magic the Gathering is a favorite. Only ~30 seconds long, but perfect on infinite repeat, especially when crossfaded. Other than that, techno is a good choice for me. As can Enya be. Depends on mood, although fast paced is normally most effective.
o) Phone off hook (or used for dialup access).
o) Doorbell disconnected (well, it always is anyways).
o) Huge supply of chilled Coca Cola, within reach.
o) Something to munch on (choc sultanas are good). Chips don't cut it, it gets the keyboard all greasy.
o) A comfy chair (there is a reason I spent $400US on mine!)
o) Having something interesting to code. That, would be the most important thing of all.
I think that pretty much sums it up though. Once in the zone I can stay there for 12-20 hours without a problem (unless interrupted of course).
My only zone is pressure....somehow it's much easier to "solve problems" when you have no other choice: a deadline in an unreasonably short time just does it.
I have done stuff in exams I would have no idea how to do normally!
ah well--if only it was different, if only I could finish the thing 2 weeks in advance and then better it in the remaining time...
f
yours ever, fz.
* PA/Paging System. Make sure that there are no speakers overhead if the paging system is used regularly -- or that the volume can be adjusted. Some of my co-workers cut the wires to a speaker because it was too loud and couldn't be turned down.
* Hall traffic. Around break time, lunch time, and quitting time, the main hallways can become noisy. A few thousand people exiting the building will raise the noise level. Depending on location, the developers may end up becoming admin assistants for the clueless. ("Tell so-and-so to call me when he gets back.")
* "'Scuze Me" Syndrome. Sometimes it's easier for a non-tech person just to walk over to developers and make a request (or demand). Whether it's due to close proximity or lack of procedure, having a user in your cube and waiting for attention can knock most people out of the Zone fast. Water coolers are the biggest motive; no one wants to put on a new jug, so the closest person usually gets harrassed continually.
* Meetings. Knowing that there are only a few minutes before a (pointless) meeting makes it hard to focus on anything, much less get involved in anything detailed. (Ignore this one if a deadline is approaching :)
* Lack of space. Developers need enough desk space for open manuals, code listings, and output printouts. Ideally there should be enough space in a cube for two people to work together on a problem. Having to comandeer a meeting room for a design or debugging session is a time-waster.
* Centralized Resources put "way over there". Manuals, printers, and office supplies should be kept near developers and easily accessible. A three-minute walk to get a printout is good exercise, but something of a damper for productivity. Having to scrounge for pens, post-its, notebooks and other inexpensive office supplies wastes time and energy.
focused, but you got your wits about you? or is it more like when you smoke pot and start scrubbing the tile with a toothbrush, while the house burns down. because all you can see is the tile. and only the 3 inch square in which you are scrubbing...but boy, can you see that 3 in square in amazing 3-D realizm...that is, until the song changes or the CD ends. Then you forget what it was you were thinking about in the back of your head and realize you are really freakin hungry. Krispy Kreme anyone..man I could go for some Oreos right now.. Oh yeah, man cookies and creme ice cream.
For my zone I need:
An old style IBM clickety-clack keyboard without the stupid Windows key
Heavy Metal Blasting in my face
Lots of daylight during the day and dim light at night
Ample Floor and deskspace for notepad and books
More Heavy Metal blasting in my face
Lots of squishy things to play with
Lack of any quiet
Interuptions Include:
E-Mail
Slashdot
Junior Engineer's Questions
Senior Engineer's Questions
Dumb Questions from a sales guy
QA's Illusions
Picking a new Heavy Metal CD when the last one finished
Pointless Touchy Feely meetings
Unexpected INT3s
Windows XP trying to help me by asking if it can delete my desktop shortcuts
Actually I don't think writing a novel is like writing a novel either, in many cases. Piers Anthony liked to include little snippets of his personal life in the back of his books for a while. Maybe he still does it, I don't read his stuff anymore.
After reading those snippets and looking at the sheer volume of his writing you get the impression that he pretty much churns out novels like VB forms. And when you look at the output volume of other commercially successful writers you realize that they do the same thing.
These writers don't suck; in fact they have worked on their professional writing to the point that the creative juices are a smaller part of the process.
http://www.drugs.indiana.edu/publications/iprc/fac tline/ritalin.html
Anyone snorting or injecting Ritalin is crazy in the head.
Liquid Crack means Malt Liquor!
...the more you know!
I wish I was in the "zone".. but alas.. I am reading slashdot (which is what I do when I am *not* in there)..
anime+manga together at last.. in real time.
"I hate quotations. Tell me what you know." -Ralph Waldo Emerson
I work almost exclusively at coffee shops, but not that I like coffee or anything.
When I take a break in an office, I spent a few minutes reading slashdot and feel slightly refreshed.
But in the coffe shop, I spend a few minutes talking to some hot girl studying. And then I feel really refresehed.
And I work more. I'm much more willing to think "Yeah, lets go back to the coffee shop for anouther couple hours" as oppose to "lets go work in our slightly dark offices again"
In fact, I'm pretty sure if I ever own my own company, I'll just give the employees starbucks cards, cell phones, and laptops. Screw this whole office or cubical bullshit.
Ben
Coding IS like writing a novel, and requires an almost precise mind set for a coder to produce brilliant code. Good code is not far off this mind set... And if you aren't anywhere near that... Just forget it... You will come back the next day and spend 50% of your time working out just WTF that function was written for, and YTF you did it in such an abstract way.
In many respects, coding is harder than writing a novel. For a start, the constraints of a novel are rather wide. It has no direct task to perform, and a reader will read it regardless of how strangely it is written... Its just called "Style".
Code however is very much different. If it runs like a biach on your system, people begin to get uphappy. If it is bloaty, people get unhappy. If it is not user friendly, people get unhappy. Poor code is a biach to the system, bloaty or/(often AND) not user friendly.
You cannot simply say "Just code" unless you either work on small simple tasks in BASIC in your spare time, or you have no code experience full stop. Code IS an art, and good code is a very precise art. In many respects, the concentration, care and effort put into good code is as great, if not more, than fine art such as the Mona Lisa.
Ofcourse, you could also just be one of the 0.5% of people who can code like robots, and spew out good code no matter what mind state you are in...
Developers do alot of mental lifting, so there are different 'paths' I take, planning day ahead: ... but by then you should take a nap anyway, getup take cold shower continue coding. minimal distractions. Make sure to have alot of good sleep before weeks of deathmarch.
1. continuing programming:
a. get out of bed and start coding, working at home, 1-2.5 hrs after starting, have breakfast, but only eggs and bread, something hearty, avoid meat.
b. get up, run, have hot/cold shower, have a glass of juice, dress casual, but make a point of wearing coordinated pieces - dressy stuff. While commuting figure out my plan for the day. Get to work, start programming right away, do not have music or anything on. Maximum - a glass of water. Having desk tidy, helps.
2. planning projects - it does not matter how you show up for work, just get there, doodle on the paper until business type will figure out the requirements.
3. Deathmarch - cold showers(every 1hr), very very plain food, avoid caffeine, until necessary
2c.
Really, how is grapefruit juice supposed to do anything? It is just sugar water, not much different than soda except for the caffeine.
e fr.htm
Grapefruit juice contains naringin which I believe is said to inhibit the breakdown of caffeine, thus giving you a longer buzz.
The link below goes into detail on grapefruit's chemical composition:
http://www.ars.usda.gov/is/np/phenolics/comp/grap
Whatever would I do without /.
Ignorance kills, complacency kills, hatred kills, but usually not the ones guilty of them.
What keeps me in the zone is shutting of AIM & and not reading slashdot.
Damn. Gotta get back to work now...
These days with family, and change of work - I'm having to manage part time - my zone is gone. I'd be lucky to hit the zone for a couple of hours in the evening maybe once a week, certainly can't work effectivly on a larger project because my concentration's not there.
I was looking at some of my old code last night and was amazed at how well written, clear and robust it was. I realise that I'm now not writing very nice code at all, it just does the job and is a bicth to work on.
Enjoy that zone while you've got it people, because you *really* miss that creativity when it's gone.
Demographic study of the average slashdot reader's weight. Based on the responces to this posing, I'm buying stock in Frito Lay... Not that I am not just as guilty as anyone else on this.
Generally, I'm the most in the zone after working on a problem or piece of code for quite a while. It's the strongest while I'm putting something else off. For example... I need to be up at 7, it's 2:30... I've got a big cup of green tea and can of the pop of the week in me. I've got another tea in line. Right then, when I'm thinking.. I've gotta get to bed, I'm flying through the code. Also, a hot dinner ready is a great catalyst. You can usually finish an ugly function or two in about 10 minutes if you've got food on the table. :P
sudo echo "127.0.0.1 slashdot.org www.slashdot.org" >> /etc/hosts
I did preview this, but I apparently forgot something. That should have read "My huge and unwieldy monitor" :)
My boss has this thing consisting of a cube, a sphere and a pyramid. The pyramid sits on the sphere that sits on the cube. If you see his desk that he has all of the objects stacked, then he is in his normal work mode. If the pyramid is removed and there is just the cube and the sphere, then he is busy and you can talk to him if it is important. If it is just the cube, then watch out, if you talk to him, he will castrate you! Personally, I think that it is a good system.
Check out the book "Peopleware". If I remember correctly there's a whole chapter on how people get into their "zone", they call it "flow". It discusses how long it takes to attain "flow", what type of environments are best for attaining and maintaining "flow" and other related issues. It's a very good read.
Unfortunately, many companies can get away with crap code, and I guess yours is one of them...
Or maybe he and his colleagues are more talented than you are. Perhaps the code you write at your best is equivalent to what they turn out when they are hung over after a weekend of binge drinking.
I've been an embedded systems engineer for over 20 years and I've seen lots of engineers who loudly proclaim that the code that they write is elegance itself. It usually is not. The best software engineers are often the quiet, modest ones who turn out clever, tight, well-documented code day in and day out. You don't seem like one of those guys...
yup... speed, coffee, weed, cigarettes. pretty much the panacea to any kind of writers block :) happy buzzing
gg
I thought that way, too. Then I ran out of coke, and only had a 2-litre bottle of Diet Coke in the fridge.
Man, it's vile at first, and then it's smooth smooth smooth.
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.
Nothing like a little 80's and early 90's soft rock to get you in the mood, and lots and lots of cheap soda. Go through a case of cheap soda and you know your program was hard, go through half a case it was moderatly difficult, if you can only finish of 6 then the program was a breaze, and you probably should have waited till the last minute ;-)
If you don't vote, you don't matter, so don't waste your time telling me your opinion
Tracking IP numbers or banning members from an online forum that I moderate requires a looped playlist of the themes from Mission: Impossible and The Lone Gunmen.
Working on a website works best with classics from the 1980s. Give me Huey Lewis songs any day.
Working on software is the time for lite rock or classical. However, no divas (in fact, that's a good policy for any music playlist) and no whiny love songs. Something with a beat that I can code to is optimal.
If I want to clear out annoy coworkers having a mini-meeting in the hallway, I fire up my looping MP3 of the original Super Mario Brothers theme.
All in all, good music is key.
Dark or very dim lighting
Big monitor
Comfy chair kinda "laid-back" (not required, but it does help get in the zone quicker)
The temp. must be cool (not unlike a datacenter)
Completely quit - just the tapping of my keys (no music for me - i noticed a lot of others like music in their zone)
© 2004 The SCO Group, Inc. All Rights Reserved.
These work for me:
Ginko biloba: I'm willing to admit that this herb might be just an overpriced placebo. But, after taking it for a few days I do notice a small but definite improvement in my ability to concentrate....seems to steady my focus.
Music: but, only certain kinds of music. What works best for me is: no vocals, thin, simple textures, and a narrrow tonal palatte. Super-minimal German techno, Glen Gould playing Bach, Bach organ music, Morton Feldman....thay all offer no surprises, in the best way.
No TV!: For me, even watching one hour of TV a day has a noticable negative impact on the quality of my attention, throughout the day.
Variety: Sitting in front of the 'puter, you handle the "muscular" aspects of coding. If you spend your time off in a very different environment, you might find that solutions to the larger questions (like design, algorithm choice, etc) may occur spontaneously. I think I've had my best "big" ideas while lying in bed half-asleep.
Feng shui for programmers. Got to get out of here
From what I read, it seems to be one of those things where if you distract your concious mind from the problem, your unconcious mind will take over, suggesting a solution.
There is only one problem: I'm halfway to the bathroom - do I go back to my desk and risk a busted bladder, or do I continue on, and risk loosing my new chain of thought?
Too much caffiene and I get irritable, can't focus on the job. A better combination for me is a couple of cans of Cokes or Pepsi for caffiene along with dimethylaminoethanol (DMAE is a precursor to acetylcholine), ginseng, ginko biloba, and multi-vitamins.
And while I have a 30 hour playlist of trance/techno/house music, I'm in the process of created an "A List" of tracks. Most of these can put me immediately in "the zone"...
Having a large monitor is extremely helpful, having two large monitors is even better.
Avoid Slashdot.org, and web browsing in general, unless you need to research something on the web.
If you have an office, get a lock on your door if at all possible to keep people from bugging you while working.
If you do have a lock on your door, make sure to set up a secret knock for the pizza guy to gain access.
The most important thing by far is the state of mind you have going into a long hacking session. I find that if I don't have the right state of mind to tackle a project, I will find ways to not work on the project. Deadlines seem to be one of the ways to force me into the right state of mind, but otherwise, I prefer to just queue up all my music, put it on random, and let it fly. I dont like coding in the dark because that means it is harder to find/use any resources I have laying around. I draw things out on paper to solve problems, and doing that in the dark is a good way to kill your eyes. A lack of background noise is disturbing. In fact, the lack of music playing right now while I type this is killing whatever state of mind I had while I was trying to knock off some problems.
Listing of previous methods:
1. Take a smoke break & discuss philosophy/politics.
2. Ginko Biloba & Selenium: Selenium will act as a neuro-transmitter and deliver the Ginko. The Ginko thins the blood causing increased circulation to the brain (and the rest of your body).
3. If I can't "get in the zone" I mentally note the problem as "important" and work on something else for a few minutes (usually 30) and then go back. This helps (see missing matter's article).
4. Adjusting blood sugar (more for energy, less to be more on edge).
5. Reading a new book about software theory or a new language at least once/month.
6. Caffeine usually drains me more in the long run, I try to just drink it in the morning. I drink tea (Rooiboss, Ginseng, Orange, random herbs) in the afternoon.
...Dexedrine...
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)
lose the pants.
when no one's around simply take off your pants, you'll be suprised how clearly you think just sitting there in boxers, with only a thin layer of cotton between you and the rest of the world.
also, a strict regiment of masturbation helps with the stress a bit.
When I'm faced with "coders block" I high-tail it out of the office jump in my VW Passat. Light up a cigarette, turn up the stereo and drive.... On truly productive days I do this 2-3 times a day. The tricky part is getting back to the office in one piece and without a speeding ticket once the solution comes to mind... :)
I find that relaxed feeling you get after great sex to be helpful in programming... anybody else experienced this?
My workstation at home is far more suited to high productivity than the one I have at the office. Dual monitors are a must, lots of screen realestate to make it easier to view lots of data at once. Decent sound helps, but lately I find music just slows me down. And Coke. Lotsa Coke. Diet Coke is not what I'm talking about here, I mean the original thing, in the red can, plenty of suger (not that horrible cancer inducing artificial rubbish).
I tell ya this.. there is nothing better than "The ZONE".... a dark room.. or better - deep night.. no phone calls.. no ppl comming or disturbing... the city is quite.. (if you live on some countryside the birds a singing.. the dogs are barking... quite... you're listing to some deep relaxed ambient (or whatever you like)... you hits the keys almost without thinking.. ... you coded in 3 days more than normally you would do in two weeks.. and it's a real value... you took just one day off and got back cause the code called you...
.. I took just once 5 days of holidays during that time.. and mostly I slept it over.
..
The code flows... and flows.. it can't stop.. it just flows.. you don't eat.. you don't sleep..
You came to work at friday morning and now it's monday
I was working on some big project.. My part was like 50.000 lines of code... 14 months of work.. and I mean *work*
We had a good schedule and we kept our checkpoints.. well mostly.. but at the end we kept the deadline and the project was done in time and was really high quality - very few (when you compare it to the size of the project) bugs which had to be later fixed.. and none of cirtial mass
We got the money, the customer was very satisfied.
It was one the best time I've ever had, I was the most productive man on the World.
The point it: let ppl work as they want, if somebody wants to work in the cave - buy one.
Give freedom to people and the do really good, first class stuff.
The trick is to do a good schedule with checkpoints and you will see for yourself on the paper, if this model is going to work out or not.
Take the estimated programming time for a project and multiply it by 0.05. Start working on the project when that much time is left. You'll hit the zone almost immediately and it won't leave you. Sleep, food, music, sex, and even beer no longer become a factor.
I'm a CS grad student, so I'm not in the workplace. Also, my suggested method of finding "the zone" probably isn't allowed in too many work spots (although I do know of a few). However, this topic was too good to pass up a post. My zone:
:D
:)
-late night
-ill breakbeats, techno, or house on the stereo
-comfortable chair
-Linux environment (key1)
-Ocean Spray Cranapple juice
and the winning "zone getter"....
-some nice, dank herb in a blunt that I can 'moke all night (key2)
Its not the only way to find the zone...the above combo minus the herb works well for me too. But two puffs on a fat el will send me straight to the zone in 2 minutes! Coding all night...concerned with the grittiest of details...like I've been doing for the past 3 days
A ritualistic session to fire one off always puts me in the mood for either:
a.) Programming
b.) More masturbation (repeat as needed)
That's all.
All-
Lumiline bulbs (aka linear incandescent bulbs) kick major arse- except the price tag (roughly $9 per bulb- any other price is a rip- i.e. Grainger's $36 per bulb). This light produces a soft, glowing light that is very simillar to those used in orchestral lights. Try it and you'll never go back...if you can find them.
I bet I could write any given desktop application, have it work better, look better, and be more user-friendly than any app you could write in C++/Java/Python or any other language in the same amount of time.
Everybody's idea of comfort is going to be different, so the one thing you should do right after you have employed somebody is do the 20 question thing and ask them what would make them the most comfortable and most productive at work, and cater for them. I find that *background* music works wonders, it can be nearly anything, so long as it wont invoke thought about it (and yes deftones make good background music :P~ )
can of pepsi (or coke for those who want the inevitable aftertaste to swell thier mouths) as well as a glass or bottle of water within hands reach is a good idea, and sammiches or something thats not greasy, but still tasty.
NO and i repeat _NO_ glare whatsoever!
figure out a way to give your employee's more tasks without having to talk to them, talking is a distraction. something like bugzilla usually works.
just minimise distractions, its not hard if you think about it. and just remember, you can employ people other then your programmers to handle distractions like clients, etc
Gnome wasnt built in a day.
Wait 'til the day before it's due... then I can find the Zone _real_ easily. At least, that's what I did through Uni.
As someone (can't remember who) once said, "When a man knows he is to be hanged in a fortnight, it concentrates his mind wonderfully."
-- This post is about truth, beauty, freedom, and above all things, Karma
There's a window in my room that I cover up at night (less sunlight in the morning means it's easier for me to sleep in), using a big hunk of cardboard.
My dad made it one afternoon. He measured the size of my window and cut a big piece of cardboard to fit it. When I go to bed, I just stick it in there by resting it in the frame.
It doesn't block out 100% of the light, but it works for my purposes.
I can stay in the zone for many hours at a time. Of course, the passage of time is something hardly noticed. It's becomes just part of my surroundings, to be ignored by my conscious like the walls and light fixtures. Music is the same way - it can be on, but it neither helps nor hinders me, because my mind pretty much blocks it out completely.
I find that if anybody tries talking to me while I'm in the zone, it's like I'm being pulled out of a dream into a reality I'm not yet ready to re-enter. First of all, I sound like a babbling idiot, because 98% of my mind has been taken over by my algorithm and coding skills, leaving very little left over for communication skills. If I'm lucky, the person who interrupted me will see that I'm preoccupied with what I'm doing and leave me alone. I can then usually recover, and stay in the zone (usually forgetting the interruption immediately). If I'm unlucky, the person will continue to talk to me. This is a very frustrating experience. I can literally feel my abovementioned stack slipping away, one layer at a time. I feel the algorithm in my mind's eye falling apart. If it goes too far (which doesn't take long - even a couple of minutes of dealing with "the real world" will do it), I fall out of the zone. Then I'm left with a huge mess of half-written code that I have to figure out. Sure, I'm the one who wrote the code in the first place, but it was written while I was in a state of heightened awareness.
I used to fall into the zone a lot while in university. I'd start working on a project at say, 14:30 one afternoon, write incredible amounts of quality code throughout the night, and come out of the zone at 05:30 the next morning with a finished product. Of course, at that point the hunger and sleep deprevation hits me all at once.
I don't fall into the zone much any more. There are too many interruptions in a typical work environment. It's a shame, too, because I'm easily five times as productive when I'm in the zone than when I'm not.
OK, I started things by getting a bit too personal, but you sure jumped in.
/. posters can create, even if we're less modest online than in person. And you'd be absolutely amazed at how much tougher our hiring standards are than most industries...
I was responding to someone who implied that "professional" programmers could always write "good" code on demand, due merely to their professionallism.
As for myself, I started as an embedded system engineer, moved into semi-custom chip design, then into CAD/CAE/CAM software, left when bored as head of R&D, then moved into video games as head of tools & engines development, where I've now been for 15 years over ~40 games, except for the few years I took off to write cryptographic protocols at Cisco. As a hobby, I publish open source crypto libraries and work with a team developing a p2p infrastructure for massively scalable 3d clients.
You'd be surprised at what sort of code some of us
And that thing is: Groove Salad.
My zone usually arrives at about 9PM after about 3 or 4 beers and usually ends about 5 hours and 10 more beers later passed out with my head on the keyboard.
Somehow I still manage to get work done.
In college I used to spend a lot of time in hack mode, in fact most of my skill at programming comes from nearly a whole summer in "hack mode".
Of course, concentration has never been a problem for me. A pulse, a slightly interesting problem, and a lack of horrible jarring motion (on off days) was all it took me to get into the zone. Hell, getting me out of it has always been the problem. 10 minutes after fire alarms, the RA would have to come in and peel me from the keyboard...
But since I've started working, my time in hack mode has gone down down down. In the last 12 months, I've probably spent a grand total of 3 8 hour days in "hack-mode". Time spent writing the core of some UDP packet driver. Interesting problems? I'd give my eye teeth for just about any problem that requires even a breath of hack mode to finish!!
I don't know what you guys are working on, but I sure wonder who's doing all your scut work. Documentation, build files, organization, testing, requirements analysis, coding all but the core pieces that might pose original problems.
I'm not a programmer, but I do spend a great deal of my time sitting in frount of the computer writing (usual technical work) and comming up with client solutions.
A few things I've noticed;
1. A clean desk. I don't know what it is, but a cluttered desk just kills my ability to stay concentrated on anything for an extended period of time.
2. Near darkness. Any bright lights is a distraction. The only light can come from the CRT.
3. Jazz music. For some reason, the jazz on the local NPR station just fits nicely.
4. Unlimited supply of cigarettes. I don't even notice smoking them, but I notice if they are missing. Part of my weird compulsive personality.
5. Night time. 11pm to 5am seem to be the best time. No phone calls, no noise from the city outside. There just seems to be a feeling of being settled in that part of the day.
6. 64oz Thirst Busters from circle K. It's funny, but they usually seem to run out right when I've reached a problem I can't solve. I can walk down to the store in silence, nobody bothering me, and get a new one. While I'm walking I can usually reach a solution.
The Internet is generally stupid
I did not piece this together, but my SO recognised the clear sinusoidal pattern. One day in the zone followed by a regular day. We now call them a high energy day and low energy day. It is unusual to work any magic on those low energy days.
Okay, here's how I view it: If you have joe random programmer, there are several factors at work. First, you get your problem spec. Somebody higher up says "hey, we have this information, we know it can be processed into this smaller set of more immediately applicable data, and we need something in the middle to sort through reams of data, find the relevant points, accumulate them in a database, perform some analysis, and spit out a condensed set of results"...
Okay, now there are lots of ways you could go about this. First there's brute force, there may be a simple way to do it, but it's not ideal because it's O(N^2), okay well there are several routes you could take. First, you could run with it, second you could think about it, possibly for days, while you may be reading the morning papers, your subconscious mind is churning through multitudes of different solutions, working on what would generally be considered intractible topography problems in th' background using the massively paralell computer known as the human brain. When you finish with that stage, and you're ready to implement, then's when the groove hits.
What i'm talking about is when there is a hairy multifaceted problem, and after goofing off playing tradewars for a couple days, you finally latch onto a solid solution. What looked like a massive unmanagable mass of special cases and state variables condenses into a simple but subtle loop invariant and you go for the gold. Pop a couple of ephedrine, drink some coffee, eat a bunch of solid high calorie food, put on some good driving music, something with a solid steady beat that you can use for a clock signal to push the data through your brain, and let fly. It's one of those things where you have solved the problem on a subconscious level, and you can see all the facets and details as it if were a building in front of you, except instead of a building, it's a nice regular 5 dimensional shape, but it's there, and for that moment in time you see it clearly, and as fast as you can code and comment, it can be translated back into our mortal plane, it can change from a shimmering but abstract represenation of a problem into a concrete solution. That's where it's at. =:-)
---
Play Six Pack Man. I
me too. this should be my last post...
RIGHT NOW!
I participated in a programming contest recently; it lasted 3 hours. For the entire rest of the day, I was in "The Zone". It was awesome how much that woke my brain up.
So it seems for me, just being challenged slightly, in a fun and competitive atmosphere works well.
VB and C++, in my experiance, are good for different timespans. VB is much more intuitive, and is a higher level language, but less flexible very large projects. I think the key criteria involved here is time. For small projects it is IMO a much easier language to, say, demonstrate an algorithm. C++ is a bit more flexible in the type of structures it can use. It IS a very messy language(the official spec is 750 pages long) in order to maintain compatability with all the other versions. VB is annually, so this might be a factor in ease-of-use. C++ can also deal with more abstract concepts, and it's a bit more condensed. One can make an Unreal Tournament in C++ in a couple years. One can make a small, effective VB program that looks nice in a couple of minutes.
People in Soviet Russia, however, appear to be afflicted with amusing juxtapositions of the aforementioned situation
Getting into the zone: two methods:
1. The Zen method.
Getting into the calm state of mind frees you from daily naggings of life that will give you the energy to pursue your goals. This is generally
the preferred method as it has no misgivings or anything like that to nag upon you later on. You work will be good but never great. You live in short perpetual bliss and you fall into mundane Zen fatigue - no less.
2. The 'death' method.
It's a matter of life or death and you are down and almost almost out but you give that final push for the surface. And you get down to it and your mind is filled with violent intense energy of mostly fighting-quality type and you don't know whether what you're doing is detrimental or rewarding.
Your energy takes control of you but you are interacting with it unconsciously - unconscious because the energy is beyond average human
comprehension. And your vision is formed and all directions are made clear to you - it's only time that you are racing against with - nothing else distracts you for you have gotten into the zone with that final goal clearly visualized. When you get out later and looks back at the result - you
may not quite recognize who is behind the work of art.
To get into this 'death' method is another question.
Your philosophy on life is severely challenged and you have to abandon all your long-held believes to go on a journey of self-rediscovery. Your abandonment will be that of an apostatic scale.
Who will be blessed to go on this journey? Do not say "don't curse" for you will - your soul is pouring out.
1) some sort of white noise, I have a box fan that I leave on 24/7.. it hides the background noises very well.
2) Music, just about any kind, something to bop to, something to chill to, no country.
3) Pot, marijuana, grass, herb. Whatever you wanna call it, being nice and blunted helps me... keeps me focsed yet creative. maybe I'm just a pot head, but my best code comes when stoned.
4) Need. If I need a new tool, if there is a deadline, or pressure.
5) Small steps of success. Nothing gets me going, innovating like small steps of success. I have often finished part of a tool or program, and started enhancing it way out of spec. The boss has yet to complain.
6) A COMFORTABLE EDITING ENVIRONMENT. I cannot stress enough the need for a good editor. If I'm not seeing the code the way I want to see it, I have to think more, in the zone I need to flow.
7) Cigarettes. Nothing breaks the flow like running out of smokes and having to get up for more, or worse, go to the store!!!
8) Beverages. Lots of water. RED BULL!!!!!
9) My own crapper. I know this has been mentioned, but I loathe the bathroom farms. You walk into these places and it looks like the world the Matrix pulled over your eyes. And the smell, and sounds, frankly I don't wanna listen to mister anonymous with dockers around his ankles and rockport saddle oxfords summoning the beast of the nine stenches.
Ok I think that is enough...those are probably my biggest essentials. But maybe that's just me.
"Boys have a Penis, Girls have a Vagina", kids say the darndest things!
The most important part of getting in the "zone" is getting psyched about the project: the more excited you are, the easier it is to focus...remember, this is fun! A regular exercise routine also helps, making you less fidgety...music and a nice chair don't hurt things. The thing that helps me the most is having another computer with multiple monitors available to hold references for code-samples/API's/etc.
I haven't read this book yet, but it comes highly recommended. I think it fits right into this topic.
have specific things. Lighting, music, clean (as in no coffee stains) desk etc... Now I find I'm amazingly productive if I just stop reading /. for a day :)
Oh shit... I'm not being productive.
"Never trust a computer you can't throw." -- The Mac
* Massive dual 21" monitors running at 1600x1280
* Cordless optical mouse
* Comfy chair
* Silence
* Nobody close by, but I don't like to be completely alone coz it creeps me out especially in creaky buildings at night
* Non-greasy snacks, because I can't stand greasy keyboards or mice
No office politics crapola. It's what drove me from my last job, and it's what's about to drive me from my current one. (A real shame too, because I love the work...the new boss never should have been put in charge).
A Window
No phone calls
A stock of pop in the fridge
No e-mail
Those things, (especially the first one), are what make more more productive.
Not having to worry about office politics is WAY underrated. I think we spend more time with that crap than anything else.
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.
I haven't found anything perfect yet. One or more factors are usually off. Either it isn't the right time of day or I can't find the right music or whatever..
I function best in the mornings (8am to 11am) after a good nights sleep of 7-8 hours. Once 11am hits I require a good walk/ride and perhaps a cool drink and lunch (its only black coffee in the mornings). A two hour break is good, but usually I want to get the work day over with so at noon I'll code again. Mostly, after noon I find myself idling around, ircing, spacing out, or running into a mad amount of problems.
On some days I stop at six, other days I work till 4am or later. I tend to find myself close to being in the zone at around 1:30am. If I am still up at that time, I tend to work quite well. I don't check email at this time, and just buzz along until I notice the time or the sun coming up. When this occurs, I don't get back to work until the afternoon the next day. I either work a short day or the cycle repeats again.
Well, it's almost 1:10 now, so I better go get some sleep because I don't want to be up all nights this week.
- Hugh Buchanan
- Userfriendly.com
I find that a lot of useful discussion on this fairly new and therefore not down to a textbook analysis process can be found at Wiki. Wiki is a bit confusing but whats there is evolving as quickly as the field.
I Browse at +4 Flamebait
Open Source Sysadmin
yep...that adrenline/endorphin buzz does it every time. Riding in, then zigzagging thru the little cube farm to my office. Feel better mentally and physically.
Now..if it would only stop raining, I could get this damn application finished. I really hate riding in the rain.
and yes, I am way older than most of you guys..:)
How about a mutli-threaded VB program?
Didn't think so.
Crawl back into whatever backwater Bosnian hole you came from and fuck your goat on the way back in there.
I'm not actually a professional programmer, still being in uni. However, in my experience, I cannot program well when I am actually in front of the computer. I find that my best programming is done when I am walking about town, since my mind then has lots of time to work things out on its own. What I end up with at the end of this isn't actually code, but during my ponderings I have so completely worked out how it will work that the actual process of typing it out is trivial. I realise that this method probably isn't for everyone, especially for those chained to their desk
and i did all that using only the number zero. so there!
To me, a steady 4/4 beat will not help if I have to do any thinking. It just makes me stupid (or stupider, if you prefer). I do like music with an "alien" structure, such as some (from my point of view) ethnic music, or then take the 4/4 to the extreme with very, very minimalistic noise. No hi-hats etc. whatsoever, just some snaps and an occasional beep.
And by 'attractive young lady' I mean 'freshly kidnapped six-year-old'.
1. Gotta have my 10+ Gigs of MP3. Switching CD's in the CD-ROM is a Faux Pas and distracting. 2. Large Good Headphone to isolate ALL outside noise. This was especially good when my cubicle was near the elevator...you wouldn't believe the conversations I heard! ;-)
3. Lots of snacks like granola bars, cookies, ice cold water or Juice, and chocolate for the desperate times. I NEVER DRINK COFFEE or SODA.
4. A Perfectly positioned chair that allows to sit up with comfort and lean back when you wanna stretch out. A good method that I use to test my chair is that if after 3 hours I start figiting and become uncomfortable, then the chair setting is wrong.
5. A Monitor that is alligned with my eyes. I find you get neck strain when you are looking up or down at a monitor. You should have to adjust your head/neck to look at the monitor.
5. A good keyboard with responsive keys. If the keys annoy you, get a new keyboard. I personally enjoy the SUN keyboards. They just feel right on the touch. (No dirty thoughts please!)
6. Incandecent lights and NOT Fluorecent. I acutally brought in a Night Lamp from home. The warm psuedo-sun glow that Tungston light bulbs give off are nice. I have also asked the cleaning people to remove those stupid Fluorecent light diffusers. You know, those checkered things that look like grates. Those things are awful for the eyes! Oh, and my cubicle can't be too bright.
7. I like to take a 5 minute walk and drink/snack when I'm stuck. Though usually I just listen to "Blister in the Sun" By Violent Femmes, and I usually figure out a solution.
I can easily work 14 hours when the conditions are perfect. However, when you're in the zone, you only need 3 hours ;-)
In the end, it's all about replicating how you used to program long ago in your room. It's just feels cozier.
ciao
Programming is a sacred thing, it requires a healthy person with a sober approach to life, like my own approach.
Heh. The scary thing is that this describes almost exactly what my college days were like. The thing of it is though that I never took any drugs to acheive this state of constant 26 hour days. Unfortunately, since the rest of the world has to work with only 24 hours in a day, it only takes a couple weeks to get completely fucked up to where you closely resemble the living dead as you go off to whatever class happens to occur at 2pm and you have no idea even what the subject was at 3:30.
I doubt the large amounts of cola helped either. This would probably be a good explanation as to why I didn't fare so well in college too, among other things like depression and the medication I was taking to combat both that and the insomnia.
"No problem. I have the capacity to do infinite work so long as you don't mind that my quality approaches zero."-Dilbert
*Early in morning, late at night
/. of course :)
*Dark-ish lighting
*Music - winamp set to random, not overly loud though
*Nutrition - before i start get a choc bar or crisps etc, some kind of carbonated drink (coke, pepsi, sprite)
*NO interruptions
*Not connected to the net as its too tempting to go into chat, messenger etc... - but keep an eye on
{TheT3chfreak}
Hey i'm 20 and i dont have any idea. i think good. *shrug*.
Who is this Anonymous Coward character, how does he post so much, and why is he always such a whore?
I work as a sysadmin for a small ISP. Like, a really tiny ISP. Like me and four other guys. This is a problem because if we don't all do the tech support, we'll have to hire other people to do it, which would cost us more money and cause us to sink. About the only reason I actually agree to do this is because the boss is also doing it.
;)
However, in any typical day I generally get nothing done at all, because it's either so busy on the phones that I legitimately can't get anything done, or it's just busy enough that I'm spending about 20 minutes or more to get back into my groove and I'm being interrupted by a phone call ten minutes after that. By some miracle however, I'm actually able to get things done that need to be done on occasion. Sometimes it gets done by putting in overtime, and some other times it gets done at home, but much of the time it actually gets done at work. I sometimes marvel at this fact. (like now!
"No problem. I have the capacity to do infinite work so long as you don't mind that my quality approaches zero."-Dilbert
I'm quite young, and worked for just two company's. But at none of the both company's I was able to create an environment where I felt myself comfortable enough to create an optimal work environment. The offices are just to dull, with to bright colors. It's all just too bright for me. But when I'm at home, with a large desk, music and dimmed light, I can do magic things.
woooo
"The Zone" lasts for hours on end. Necessary requirements:
1) Block girlfriend from buddy list and don't answer the phone. She is a distraction, part of the outside world. She will burst your bubble.
2) Two or three large bags of Nacho Cheesier Doritos. Sustenance is vital for the long haul, and it keeps the body temperature up.
3) A refrigerator full of Mountain Dew. Mountain Dew is the answer to all problems. It is the fuel that your brain burns. It makes 2+2 add faster for your brain, and the computer. It is the lifeblood, the essence. It awakens the Awen.
4) No flourescence. Wooden surroundings are best, with Christmas lights all over. The smell of the wood invigorates, and when mixed with the caffeinated high, causes a euphoric state where the logic flows from your brain down to the long fingers that fly over the keyboard.
5) Start no earlier than 6:00 pm. Any earlier, and your brain is still focused on the sun, on sex, on that half-eaten pizza in the freezer. Avoid this trap! Your code will lose it's strict hungarian style, you will become more verbose, and distraction will abound.
6) Music is the last item on the list, and yet not the least. A blend of techno, euro, trance at low volume. The ability to lose your mind in the mathematic undertones of the music will decrease the compiler warnings, and will make the code stable even when compiled on -O4.
You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
windowsXP fucking up all the fucking damn time. I finally had to get VMWARE just so I can continue my development when winblows looses all my data... :(
Exercise, normally a really hard long run over 12km (not sure what that is in miles)
Then working though the morning from around 6 to 10, in complete silence.
I tend to find that if you zone to working though the night, eating sweets and drinking cola two things tend to happen, Firstly, you gain a shit load of weight (part of the CV really), Second, after a while you tend to not see the forest for the trees, For example a mate of mine went on about how he had spent the evening rewriting the sort() function. This isn't to say I don't do this but that is mostly in debugging and research not writing fresh code.
I think that the type of people who like working though the night are the same type of people who left all their work at university to the last possible minute because it clashed with their Civ/Quake time too much. I guess it works for some people, I'm just not one of them.
I should mention that I don't do it for a living like most people posting would so you can pretty much disregard the above. Not knowing how professionals do it, my best guess would be that EP method where they group programmers in pairs, personally I would find that really annoying.
I think that the programming method works along these lines, knock together some sort of script that more or less does the job, (normally in the zone), draw up some kind of plan in how you what things set out, steal as much code as you can, write the program out in whatever, then spend the next six months debugging. Simple really
Pianist : Some jerk whos taught themselves how to type in rhythm
Yes, sleep is important. Try not to eat too much at one time to avoid massive sugar rushes. Caffeine is a given; it does not matter what form but I prefer Sobe Adrenaline Rush, Bawls, 180, Red Bull, or espresso-based drinks as these are all higher than average. A nice 4 shot glass of an espresso-based coffee drink such as a mocha or a latte drink consumed approximately 1 hour after ingesting a Black Beauty or another Ephedrine-based pill can get one in the zone. But do not eat ephedrine too often. Richie Hawtin (aka Plastikman, robotman) is excellent. Any old-school acid music, hard trance or goa; music from Warp records tends to distract me too much. Unstructured music is not good for programming. A constant, yet mildly altering form of music such as ambient or repetitive-beat progressive hard electronic is good. Once in the zone, distractions such as people, beeps, phones, squeaks, or sudden, fast movement will remove you from the zone or lessen the interactive level of zonement. caffeine, ephedrine, or other stimulants/mind altering substances can get a person in the zone, but remember the best way is to start hormones and chemicals in the brain naturally by exercising. Running on a treadmill or taking a 20 minute run outside is great. Pushups, jumping jacks, mock kick-ass kickboxing + punching. The zone is right there in front of you..grab ahold of it and jack in... Don't forget corporate oppression is the single biggest obstacle for absence of zone-transfer
Morning is killing me. Every day I have to wake up in the morning and I die again. Morning is not good for anything except mail and slashdot.
:) Monitor with at least 1024x768 with 6 virtual desktops to fit all my xterms ;) Afterstep is my window manager :)
Night time is the best. I should not have any light to work productively. I should not have any people around, icq, irc or phone. I should have plenty of coffee, beer, or coke.
Problems which require plenty of copy-paste kill my productivity.
Hardware is very important. Amongst the top is the keyboard. I simply cannot work on the shitty keyboard. Additionally, if the job requires mouse, it should have the wheel
Sometimes I need music, sometimes I don't. That's a moody thing.
Yeah, well...
Leonid Mamtchenkov
Nothing quite like a quiet office that's away from the foot traffic and my desktop speakers in a darkened room listening to Art Bell streams from the internet. Kind of makes programming more exciting listening to conspiracy theories and ghost stories. S'fun.
Here's what I find works well.
First, be sure you have something to hack! If you don't yet have a design ready, you have no business at a keyboard. Walk around the block, or sit down in the break room, or do something, but relax and meditate on your design. Don't compromise. You'll know the Right Thing when you have it. Then, you're ready to sit down and hack.
Now, on to the environmental issues.
Comfortable chair. I have an Aeron, and don't really see a difference between that and any other good computer chair.
No glare! At my last job, we were fanatical about closing the blinds when the sun started coming through them. (The window faces West.)
Low lighting. At work, after six, they turn off most of the lights. There's well enough light to be safe, but much less than normal in an office. Overhead florescents are evil. Eyestrain, flicker, icky things. With the low lighting, desk lamps are mandatory. Florescent is okay there, since it doesn't illuminate the monitor. Make sure the lights work properly. At home, I use a single 60w incandescent and a lava lamp.
Descent sized desk, with bookshelves. Being able to have schema diagrams, language references, etc. arrayed for easy reading while coding, without having to constantly shuffle things on your desk, is very important.
General ergonomic concerns. Don't make the coder uncomfortable if he's going to have his butt plastered to that chair for a while. As keyboards go, I can code longer with my Maltron than my QWERTY (yes, I've identified this as a trend), but this is more personal taste than anything else.
If your company tends towards phone over email, be sure to have a Do-Not-Disturb button on the phone! With all the biffs out there, there's no reason that somebody trying to concentrate can't put off a request for a half hour while they're juggling eggs. (My phone hasn't rung in some four months, so I don't even know if it has a DnD button. If it's urgent, you page me. If not, you email me.)
Music. I personally prefer Celtic, Metallica, 80's, or FPS soundtracks, but this is *so* personal, be sure to experiment and find what works for you. Wireless headphones are a Godsend in an office environment where speakers are unusable. Never get an MP3 player without a repeat-all function.
At home, I frequently hack well with the TV on. I leave shows I've already watched on the TiVo and put either them or a DVD on. It should be something you've recently seen. I also have good luck turning Emacs translucent and watching DVDs through it. Music video DVDs are great.
My company has free bottled water and a selection of juices and sodas, always stocked, on each floor. Very good. When you hack for six hours in a row, you can get dehydrated too easily. We save money on water by giving out bottles (in koozies so people keep them) and having coolers. Get out the bottle or can before you sit down to hack. And think about water instead of soda; it really does work! (And this is coming from a die-hard Coca-Cola addict!)
If you're close to a meal, consider postponing your hack session until after; catch up on email or fix some quick bugs first.
A lot of people have talked about screen real estate for lots of xterms. I don't get that. I have Emacs, and that's it. But I write a lot in Lisp, where 99% of your time can be spent in Emacs with an Emacs window on the Lisp interpreter, except for when you're doing GUI design. In fact, a lot of the time, I work in console mode instead, to get rid of distracting window manager stuff.
Some have suggesting coding is like writing a novel. But consider that it may be more like creating (free-form) poetry, since coders are one of the priveleged very few who can create the language, grammar, and all the rules themselves and then use that language, grammar, and rules to craft the end experience.
When a carpenter or sculptor or engineer tells me they built a never-conceived-of-before tool to solve a specific problem, I smile broadly. I'm happy for them to experience that kind of magic. And I'm happier that I work in a profession that lets us do that kind of thing every single day, cheaper, and with fewer boundaries than anyone else. Sure, the hardware-design camp gets to build amazing physical gadgetry, but not nearly as often, and always under heavier material constraints.
"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination."
-- Frederick P. Brooks, Jr. "The Mythical Man Month"
The best codeing situation I remember was when I was writing a scheduling system for a large brewery. I worked a swing shift, which meant I could interface with the humans every day for an hour or two and then spend six to ten hours alone with no interruptions, in a large tasteroom with an excellent view from these major picture windows. The best part was that there was around fourty linear feet of countertops, three feet deep, plus a large conference table, on which I could arrange listings from a huge number of system modules, open manuals, etc. I could just wander around and see all the relationships, dependencies, a great view of the system. It was so easy to get into the zone in that kind of room; Environment really makes the difference. Check out the classic book "Peopleware" by Tom DeMarco and Timothy Lister for a bit of management-moron level support on the value of a well conceived environment for programmers (basically, get out and leave us alone for many hours per day so we can think deeply).
My zone usually gets interrupted by the end of class. And I can't seem to program at home on my Mac (which I will not trade for anything, except maybe a better mac ^.~). I am too used to Borland C++ Builder 3 (not to be confused with Borland Turbo).
This "zone" phenomena is a clearly documented scientific phenomena, most often used in sports and in music.
http://www.shpm.com/articles/sports/achizone.html << about sports Psychology.
It can also be described as an alpha wave state. Our brain normally operates at Beta () waves. Delta ()is sleeping, and gamma () is that really weird stage between sleeping and waking, where you can kinda see what's going on in the real world, but you're not really awake. But that's another topic entirely. The Alpha () wave is when your brain isn't exactly thinking, but running on automatic. (A programming example would be like if the kernel some how took over a process and started controlling it, or something. This example thing isn't working out so well...). Studies on champion archers and on martial artists show that just before they perform their action (shooting an arrow or breaking a cinder block in two), their brain waves go from the complex to the simple waves. It's like your subconcious taking over, or so I understand it.
For more information, try looking up alpha waves or subconcious on google.
Most importantly, flexible hours. This is more towards "Finish your work then do what you like" rather than "Come in anytime you like". I find my productivity drops drastically when I have to worry about when to sleep so I can stay awake at work. Many times I have to stop when I'm in the zone just to go to sleep (and then it doesn't work either, because my head is so full of code I can't sleep). At those times I wish I could work 36 straight hours then crash in bed.
Other factors:
- The right software
(pay for the license of software I want, not force me to use what you've got a site license for)
- The right music (Trip hop works for me, although I get irritated everytime the music stops, or if I loop it and it repeats too many times)
- The right lighting (natural light, a window is good, so long as it's not first floor with people walking around outside)
- The right chair (doesn't have to be expensive, but don't tell me I can't have a high back coz only the manager is allowed one)
- Taking walks (Preferably to a nearby place with lots of people, so I can tell myself "you need a life!")
I also find I code better when working with another hacker nearby, who preferably is working on another project with simliar tools/language. This helps because I have someone to bounce ideas and ask questions off (and who might put me on a tangential train of thought by doing the same), but I think most hackers like to work on their project (or at least their portion) alone rather than share the load and worry about "integrating".
The point of such an exercise is to teach the newbie which is not wrong or stupid. The goal is no longer to write code fast, but to teach the junior programmer about coding style, solving problems, design patters, unit tests, etc. It's a crucial part of making them productive in the future. Of course, you should keep these things in mind:
The Drowned and the Saved - Primo Levi
Your whole logic in the post is flawed.
There are opportune times for clear thought processes, and there are bad times.
....There is never a 'it isn't coming to me' time...
It isn't coming to you in bad times. In some cases you might even believe it is coming to when it actually isn't.
If it were coming to you all the time then you'd never have bad times.
Watch your logic & language.
Mature creators (as in those involved with creativity) know when it isn't coming to them and take appropriate measures. This can be a break, vacation away from the problem or a siesta under a tree dreaming of the problem.
I suspect it is the latter you are referring to when you say you've never had a time when "it isn't coming to you"
You have. You just don't know it or are living in denial.
A real man says SAATANA PERKELE! drinks a glass of koskenkorva and writes the damn code. Fuzzing around, like a swede, will only make your children gay.
Windows may be important, if the view is all right.
But if the view is NOT all right, then, the AMBIENCE inside the room is critical !
Not all are blessed with CORNER OFFICE WITH GREAT VIEWS, you know ?!
Muchas Gracias, Señor Edward Snowden !
I find that getting a blow-job from a beautiful female co-worker relaxes me and puts in a 'Zen state', thus allowing me to develop the next killer app.
:-)
Some of us live in the zone :-)
A V4 7_STO1427,00.html
http://www.computerworld.com/cwi/story/0,1199,N
The movie stinks, but there's an excellent suggestion about how to get into the zone under pressure. Our HR manager objected, though....
It's all very well in practice, but it will never work in theory.
I find that getting a bl0w j0b from a beautiful female co-worker relaxes me and puts me in a 'Zen state', thus allowing me to develop the next killer app.
:-)
One big way to dramatically improve the productivity is to give back the phone (or at least, mute it down).
The reason I do this is that people tend to phone whenever they have a problem or a question. Answering the phone totally breaks my concentration (I need to change focus, kickstart the vocal/hearing circuits, etc.)
If my contacts want to ask me something, they usually send me a mail. The e-mail has enormous advantages:
- they must write down their question, therefore being more precise (no more "err... about this thingy you made the day before...")
- when the mail pop-up on my screen, it doesn't bother me (I treat it like an error message, an assertion: I chose to handle it at once or not). I guess it is because it stays screen/keyboard related.
It only works if:- you provide an excellent alternative with fast response time (e-mail) [so they can have their answer in a timely manner]
- you provide a good doc about your work (user manual and comment in code) [so they don't event have to bother you, just tell them PRTM (please rtm)]
- most of your contacts are nearby in meatspace. [informal meetings are not that useless]
Because of this, I estimate I'm saving about 1 hour every day (time spent on phone + time to focus back on work). This translates for me in less stress and less overtime. Conversely, I tend to not phone other people (a mail is usually enough).That was a joke, right?
The current version of VB (assuming you mean VB.NET) has some basic support for multi-threading, a primitive concept of single inheritance and some basic exception handling. You need to go hang with the OO boys for a while if you think it's anything close to a "true OO language". Compare and contrast with Eiffel, Smalltalk, Java, C++ or any other established player in the OO field, and you'll find numerous things VB's (or rather, .NET and the CLR's) object model can't do.
And the C++ object model is far, far more powerful than many other so-called OO languages. The fact that you aren't forced to use it (and rightly so) doesn't mean C++ isn't an OO language. It's not a pure OO language, but it certainly supports OO much better than many.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I tend to program in an almost completely dark room (bar for the monitor of course) with music. Works for me, anyway.
I tend to leave food and drink out of the equation because otherwise I head into "coffee appreciation mode" and end up musing on the merits of Jamaica Blue Mountain rather than how to get a computer to accurately describe a nondescript knife from a low definition picture (don't ask)...
Oh yeah, and exclude other people too. Swear at them, throw stuff at them, just make sure they leave, otherwise you'll never get anything done.
Oh yeah, and although I should probably have put it up on the right section, coding is very much like writing a book. Anyone who's done both will tell you that straight away. It's all about inspiration. You can sit and stare for ages at a piece of code that isn't working right and not see the problem or even the solution, then, in the middle of the night (or a meeting) it'll come to you and have you scrambling for a pen and paper.
The most effective thing I have found for hiting the programming zone is to just a have a well defined objective in my programming. If one isn't avialible I work on creating one first.
Interuptions are rarely a problem. I just put them on hold till I finish my block of code.
It isn't very hard to tell someone, can you wait a moment till I get this block finished. When I do finish the block; I turn and look at the person. I have found that trying to talk and code don't mix. Do one or the other. Not both.
James
1. Really comfortable reclining chair.
2. Silent, large-screen laptop.
3. The right music: light jazz, gregorian chant, etc.
4. Mood lighting.
5. No distractions.
Costs management nothing, and keeps the workers happy. If you feel you are special at your job you will work harder.
You see your specialness disappear real fast if you make costly requests, requiring reorgs, personality conflicts, or pay rises.
Be Free: Free Software Tuition
I don't know about your habit, but mine is up to about 1500 mg a day. If I go more than 10 hours without a cup, I get withdrawal headaches so bad I'd literally trade them for a good swift kick in the nuts.
If you're going to advocate quitting caffeine, the least you could do is suggest that the user get down to zero intake in 100 mg per day steps.
Do daemons dream of electric sleep()?
I can usually get into the zone pretty easily - especially when I've got some music with a nice beat (esp. Neu!, Hawkwind, MC5, The Stooges, Simply Saucer, Television). Thing is - once I'm there, I often start swaying and singing along unconsciously, which people find rather amusing... I guess that would make my experience of the 'Zone' more 'shamanic' than 'meditative'?
the zone, that trancelike state when time stops to matter and there is only you and the code. How do we get there?
This is what works for me: in order of importance
A challenge: The task at hand has to be difficult in some way or another. If it's not then you can still do it but you don't get 'there'
Coffe. Black. Strong. Close. Hot but not hot enough to burn my tounge and throat when i gulp it in a not quite conscious motion
Nicotine. I may not go to take a smoke while i'm on a roll. But I have to be able to or I'll get distracted.
Light. Dim. At the least it shouldn't reflect off the monitor
Music. Preferably repetive with a heavy bass. The most important thing is that I've had to have heard it a thousand times before, so that I don't hear something unexpected and 'snap out'. Pity I can't do this at work because it might distract the others. Also headphones is a big no no, since they either slide off or are too tight and hurt after a while.
Air, fresh but not cold.
Something edible. So that if my stomach manages to get through to my brain i can silence it fast
- We are the slashdot. Resistance is futile. Prepare to be moderated -
How I get "in the zone". Have a large stuffed chair. Its kind of old and creeky and nasty, but very comfortable.
An old laptop. Its only a p150 with no web connection, so its perfect for coding and writing with no distractions. It runs the java sdk just fine.
Headphones with very soft music help keep the rhythm and drown out distractions.
Have my documentation on my left and right side so that I can easily look down and see whats going on.
13 year old white supremacists are shitty web designers.
I do my best programming when I'm wearing a large pair of ear-covering, sound-blocking headphones so that all I can hear is the music. I think I find both other conversations, and total lack of noise to be distracting, so listening to music helps me concentrate by providing some background while blocking out the world around me. I use an instant messenger to communicate with other programmers
See http://www.poetictech.com ... this workspace is ideal for all kinds of geeks.
Greg
Seriously, you've described me to a tee.
At any rate, there's one thing you haven't tried. Code in a datacenter with non-cycling air conditioners (dress warm). It will help you achieve the final state of "the zone". After a few hours of this, when you stand up, you may be lost (i.e. not know where you are, which way to the door, etc) for several seconds. If so, you have achieved the final state of "The Zone".
I once pulled a 53 hour day like that, got up from my seat only three times. I did two months worth of work.
(Too bad I didn't get the next 58 days off!)
Do daemons dream of electric sleep()?
The "hacker" in the Movie Swordfish seemed to be a zone for that test he took...
I work best in a dark, semi-large room (12m^2 should be enough), with dim, indirect lighting. Too much light makes you concentrate on things happening around you. The lighting should be near your computer and not elsewhere. If the lighting is around the room, you again have your mind on other things. The walls should be white (no wallpaper!) and smooth, since other colors like beige and brown don't promote happiness and patterns irritate you.
On the other hand, I need a window. If I'm stuck on something I need to get my mind off of the computer and onto something else. A picture wouldn't be sufficient since I need something that moves at least once in a while. (parking lot, street)
Since windows emit light, shades would be best. You can close shades while you work, and open them to relax. But not white shades. White shades seem gray if they are closed. It would also be positive to have the rod for tilting the shades somewhere in reach, so you don't have to get up just to relax. If this is (for some reason) not possible, a walk is a great thing!
A large desk is a great thing to have. best would be one of those cornered desks, that are rounded on the inside. With the computer in the corner, you have room for manuals and documentation on both sides.
Against popular belief, I need a cool room. If the room is warm i feel surrounded by this substance we call air. In that case I feel under pressure, which is not good. On the other hand it shouldn't be cold. Nothing is worse than having cold feet.
I would love to have a soft, fluffy chair. Something like a bed would be great, but since neither of these ideas are realistic in an office environment, I came upon this alternative: I need a chair where the seat can tilt back far, that is as soft as possible. Then one of those foldable footrests they sometimes have at the barber is great.
Last but not least, I come to music. Since a lot of people have different tastes in music, its kind of hard to find an ideal. The closest I can get to that is to state that music not containing lyrics, or very little lyrics is good. Also it should not be too repetitive. Underworld for example has little lyrics, but is very repetitive. Continuous mixes, like the Trancequility series are great. As said, Low volume is a must though.
I can get into the zone at work or home, but there are some requirements:
My water bottle. No, I don't buy bottled water, but I do have a Brita filter pitcher in the fridge at home. So I bought the tallest no-leak Rubbermaid water bottle with straw. This way I don't spill water on my keyboard (or me) and can stay hydrated. I used to drink OJ all day, but it was tearing up my stomach and room-temp OJ tastes pretty rancid. Likewise, green tea, coffee or hot cocoa gets cold too fast in a mug, so I stick with sugar-free, caffenine-free water.
Turn the e-mail and/or IM off! I only open IM to ask a friend a specific question nowadays, but even at work, turning the e-mail off is a smart move. When that systemtray icon pops up for new mail, most people (self included) can't resist seeing who's "calling." Damnit, that icon just popped up! Oh, and turn off the MSNBC News Alert and P2P stuff too.
No wife! As soon as my wife enters my home office, my fingers stop and my brain wanders. Yes, she's a hottie, but that's not the distraction. It's the fact that women don't know when to NOT talk. Why is it that if I start talking during to a female while she's watching TV, reading, using the computer, whatever, I get the "shhh!" treament. But if they start talking to a man while he's doing one of those activities, and the man says "shhh!", the female gets mad at him and give one of those default female codes: "You never talk to me anymore," or "I'm just trying to talk to you," or "ARRRGGGHHHH!!!" and storms away. Venus/Mars, Pluto!
Music? I listen to a very wide range or music, from black-metal to country to Lilth faire to rave to classical. I love to have music on 24/7 whenever possible, but if the music is something that I can sing along to and know all the words to, that is BAD music to have on to get into the zone. Instrumental is a great choice, but so is an obscure album like Pink Floyd's "Obscured By Clouds" or music that you just don't know that well. Silence is good too, but after awhile, I start to notice the quiet and it bugs me, hence, distration.
Pets? Pets can be a distraction, but it's somewhat of a comfort if my cat is asleep on the scanner behind me.
Outdoors with a laptop does not work for me. Too much distraction from nature, cars, etc. I'll take my office with my large moniter and ergonomic keyboard setup anyday.
...in the end, the greatest distractions are people talking, the phone ringing, having to take the piss or sh*t of your life halfway thru code. I can usually don't realize I'm hungry when I'm in the zone, and thanks to the waterbottle, I'm not thirsty and the water can fill your stomach after awhile.
And if one is truly in the zone, droning out coworker talking is easy, until somebody walks up right behind you and asks you something and you jump out of your chair, white-faced, hair on end, eyes wide open, breathing hard cause somebody just ripped you out of the zone and scared the crap out of you!
Geoffrey James' "Tao of Programming"
philip glass - uakti, kundun soundtrack
miles davis - sketches of spain
i can listen to those for hours and hours
meditative, hypnotic, rythmic
As others have mentioned, distractions are the big Zone Killer.
When I really want to get into the zone and get some work done, I'll:
1) Close my door and put a "do not disturb" note on it.
2) Quit my email app so it isn't announcing the arrival of every new email.
3) Turn off my cell phone.
4) Put my desk phone into "do not disturb" mode and ignore the voicemail light when it comes on.
My zone time goes in 2 to 4 hour blocks. There really isn't anything so important that someone can't wait until I'm out of the zone for an answer.
In my experience, the thing that has really given me an edge of the last year or so, is dropping the coffee and late nights and 24/7 connectivity to the net/computer.
A bit of a detox, bottle of water a day and a book on yoga later, and I felt hugely more productive and healthy and I could work constantly and more acurately rather then riding the buzz of a caffine high.
And when you not constantly at the computer, it means your forced to think about things rather then just do. And gives your mind a break, letting it focus more on the code when it needs to.
In the same spirit, Feng Shui helps as well.. Not much, just the basics.. Just because your expected to work in the dark under piles of pizza boxes and molding coffee cups acording to stereotypes, doesnt mean its the best way.
I saw the light at the end of the tunnel... But it was just someone with a flashlight bringing more work.
For me to hit "the zone" takes time. The biggest thing is to program every day. Just a little snippet of code, but a little bit every day keeps me up to snuff.
In fact, that's how I learn new languages - "Hello World" one day, count 1-10 the next, iterate through an array the next, open a file the next, etc.
It is folly to think you ever know everything about a particular language though. The best you can ever do is to just keep at it, especialy when you think you know it all.
"God is dead." - Frederik Nietzsche
"and also because of hashish/marijuana."
:)
I guess they disproved the 10,000 year history of safe use that I would otherwise judge those plants by
No, I agree, 80% of everyone I know who got into meth fucked up their life. The better-off ones ended up in rehab. But if your friend killed someone he was already a homicidal maniac, drugs may bring things inside you to the surface that otherwise wouldn't see the light of day, but they don't create them. I never use it now, but a couple times in the past did come to work on it and did several days worth of work in one day. But the post was a joke, I'm shocked I wasn't modded -1 Troll or flamebait.
Which is of course why it is a PERFECTLY WONDERFUL idea to prescribe it to every single 5 year old kid who misbehaves in class - despite the fact that the health effects of the drug on children aren't well known. I'm pretty cynical, but the evil of that bothers even me.
that's right. I'm insulting you by stating you have a sexual preference which in and of itself shouldn't be a put down according to Politically Correct Logic and I'm justifying it on the fact that you like soft rock music from the 80s. But you know what, I don't care. I still think it's an appropriate response. do you have on hot pink spandex under your khakis, you phil collins loving pansy?
First and most important, no outside interruptions. Know that's been said before, but it can't be stressed enough.
Other things:
Proper music, varies depending on my mood and also what I'm coding. The right thing playing in the background can really stimulate my mind in the proper directions for the code I'm writing.
Natural sleep patterns. A job that makes me show up at 8 and work till 5 is not getting my best performance. I end up groggy and tired throughout the entire day, and never can quite concentrate. On the other side, if I come in a 1-2pm, I can work straight through to 4-5am and still not be all that tired at the end of my day. On the flip side, I know people who are the opposite. They want to be in as early in the morning as possible, starting at 2-3am. The point being it's different for everyone, but if you want your coders at their most alert, then you need to make at least some attempt to let them adjust to their natural schedules. You'll find a few people surprisingly even love 8-5 work.
Flexible hours. 40 hours a week sure. Heck, 60+ hours a week, easy if the enviorment is good and the project is fun. But 40 hours a week may mean coming in at 3pm one day and working till midnight. Just to be in the next at 11am and out by 3pm. Followed by a day of Noon to 5am. Nothing will keep me from zoneing more than the stress of unfinished errands that simply have to be run. The number of times just this year so far, where I had an errand that could only be run between 8 & 5 that I simply had to keep putting off and putting off till the last minute, is staggering. The stress this causes means I'm simply not getting as much done at work as I could. Project managers remember: The point is to complete the project efficiently and correctly, not to keep the chairs warm!
Decent snacks, not just sugary stuff. Again, something that's different for everyone, but that's one of my major interruptions where I work now. The only things I can get to snack on in this building are candy bars, and the only thing available to drink is soda. The water isn't actually drinkable (they've promised to put in filters for months), so that leaves the only option to get non-sweet things being the other buildings. While it gets me out into some fresh air, it's also an interruption that's unneeded. Bottled water even would save a half hour a day minimum in walking between buildings.
Defined objectives. If I know what is wanted of me, it's much easier to slip into the zone and get to work. This makes it very simple on my own projects, but is one of the biggest problems I have with my current employer. I can zone all I want, but if I don't have all the information about what I'm supposed to work towards, then I'm still getting nothing done.
As far as locations go, if I'm working at night I must have _good_ lighting. Specifically easy on the eyes, not too much of it, and absolutely no flourecents(They give me migraines). If working during the day, pretty much same thing. Though I can deal with more light if it's sun light(not direct though).
Comfortable chairs. I can get more work done in an old chair I have at home, than any chair I've ever had at an office. Simply being more comfortable means I need to get up less often.
Privacy. Something with a door that locks. This does not always have to be complete privacy, just the ability to lock out most of the world. At my current employer I once shared a large office with three other people. But we'd keep the door closed and locked. So while I had communication with the rest of my immediate team, we also didn't have to listen to every conversation in the building.
For those working at home this certainly dosen't happen as often, but for office workers, pick an office and leave them there. In the past three years I have had to change desks 5 times. Not only do workers lose at least a day (more if things are setup properly when they get there) in moving. But it takes a bit to adjust to the new enviorment where production isn't as high as it could be. Most of my team has gotten to where we have nothing personal on our desk and basically keep no papers. Three of us to the point of having only our computers on our desk. Simply so that we can pack up and move more quickly when they move our desks yet again. This dosen't lead to a relaxed work enviorment though.
I could probably go on more about things, but this has likely already been boring enough to read. Congrats if you got this far. One last thing to stress, which I again know has been mentioned before. Everyone is different in all of this. While a business likely can't afford to cater to each individual exactly, talking with your coders and finding a middle ground with them on this stuff is a good step in the right direction.
I was a fulltime programmer. Now I'm in marketing, but I have a specialty programming skill that means that I still write code some days.
Doing both jobs, I can clearly see a difference. The biggest difference I see is that coding is a solitary "disappear into an artificial world inside my own head" type of activity, while marketing involves realtime interaction with the external world.
Coding requires an environment designed to shield me from the outside world so I don't notice it and come out of my "trance". Marketing requires paying close attention to the subtleties of the outside world and interacting with it cleverly in real time. The more I pay attention to the external world, especially to other people, the better I do.
I find that my biggest challenge in marketing is paying close attention to the external world for long stretches of time. While the "real" marketers can listen closely and catch the subtleties in almost everyone's comments during a long meeting, I find that the first time anyone says something interesting, I tend to take it offline inside my head, pondering it, missing not only the subtleties of subsequent comments, but often not hearing a word they said.
Both activities are difficult to do well, but they're definitely not the same. I think most jobs, like your daycare center example, are like my marketing job. You have to keep your eye on a whole bunch of kids simultaneously and respond correctly in real time.
Programming isn't unique, but it is very different from most jobs in its requirement that you stop paying attention to the outside world, turn inward and just think for long stretches. Programmers who can only do it for short stretches can still implement others' designs by chipping away at the task list, but they run into trouble when they have to blaze the trail themselves.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Figures, one of my favorite topics and I'm a day late. My post will be lost in the posts of topics-gone-by.
To get in the zone for anything, the first thing you need is to know the material inside out. You can not get "in the zone" if you know nothing of the programming language, just like you can't be "in the zone" playing basketball if you don't know how to dribble.
I believe that it comes from having something so ingrained in you that it becomes second nature, instinct.
Once you've got that (and most professional programmers should) you need to bring out your creativity. This can be done by music (that's how I think most people do it), or even.. yes.. I saw that earlier post, fantasizing. Visualization brings out your creativity, however remember that getting turned on will likely kill any ability to think.
What you want is to stop thinking. I know that sounds counterproductive, but the moment you stop thinking is generally when all those great ideas will start flowing through your mind.
Of course this is all from personal experience with *other* things, not programming.
Oh, a thought for when you're stuck, get up and take a walk and think about anything EXCEPT the problem. It's not a myth.
So- it did require 'the zone' to write this program.
What ended up happening was- the program was researched first, and then written over two nights. The first night, it was a dead-end. I wanted to use a certain technique, and was hitting walls all over the place. At the end of the night, I just put the program aside, and then I did other things for a while, consciously putting the project on the back burner, because I just _knew_ it needed to simmer a bit. It was so ready, and yet- it wasn't coming out right, not yet. It needed to stew impatiently and NOT be worked on for a day.
After that short break, I went back and took some different approaches, got up a head of steam, hassled with some bizarre bugs (too many objects updating themselves in various ways...) and bam! I had a working version.
I'd say a very important part of working 'in the zone' if that's the way you work, is being allowed and able to step AWAY from the zone and go do other things or even do nothing for a while. Not just hours, even days. I need to be able to do that. It may sound contradictory... *shrug*
A lot of horrific stuff wouldn't have happened without Christianity. So much suffering and death in the name of god.
A lot of good things wouldn't have happened to me without drugs. To each his own. While I think laws forbidding religion would do a lot more to make the world a better place than laws against drugs, I think each individual should be left to their own devices.
We have an "open environment" - a bunch of bloody desks in a room.
I don't know what the fuck they were thinking, but they sure as shit didn't ask the people that were going to be working in there for any opinions.
Between the Loud Guy a few feet away, and the Loud Guy's AM radio[1], it's pretty damn near impossible to work without something shoved in your ears.
Without good headphones and industrial music, I wouldn't get shit done.
Just wish there was a similarly easy solution to the harsh, flickery flourescent lighting.
Yeah, it's pretty fucking lame.
--
[1] Which, as luck would have it, is playing "Dr. 'I'm my kids mom, and a fucking bitch!' Laura" 80% of the time.
They don't both start with christ. crystal. as in crystal clear. as in could i be any more....
You put unsupported blame on drugs for causing 'horrible things to happen'. I put much more easily supported blame for 'horrible things happening' on Christianity. I know your response - it's not christianity's fault. So you should expect mine, it's not the drugs. The problems were already in the people. Drugs are no more to blame for 'drug induced' killings than God is to blame for religious killings. Drugs don't kill people, people kill people. Guns don't kill people, people kill people. God doesn't kill people - Oh, no wait, he does actually.
Man, christianity would be such a nice religion if it weren't for all the damn christians....
I agree with you and here's what I've observed: When I do something for myself, everything works great. I can work 20 hours non stop, than sleep 6 hours, than work another 20 hours, sleep 6, work 20, sleep, work... and I'm not even tired. I'm working better with quiet and when no one interrupts me, but I still can work with random noise of kids playing outside, with phones ringing and with people interrupting me. I'm in hack mode and I'm just hacking.
But when I work for someone else, while I should have a better motivation being paid, I just can't focus, every little sound is disturbing, I'm angry all of the time, etc. So my strongest problems with work are of the emotional nature, while I have no intellectual problems with that work at all.
When I do what I want, I usually (not always of course, but 95% of the time) can easily find my zone. When I do what I have to, I usually (95% of the time) cannot easily find my zone and have to work under heavy stress.
I suppose that it is somehow similar to writing a novel, i.e. when an author is writing for himself, when all that matters is a great novel, his own novel, everything works. But when he has to write a novel, his employer's novel, because he needs money, nothing works the same.
When I work for money it's no longer a hobby, I do it because I have to, not because I want to and this is a great difference for me. I can't have to do something, I have to want to do it, in order to do it well. I hope you people understand what I'm trying to say, it's kind of my self-psychoanalysis, quite a difficult task.
When I have to do something, anything, I don't feel that I do something important, and I just don't see much sense in doing it. The one and only sense is money, but this is unfortunately quite a poor imperative for me. (Don't get me wrong, I don't consider it a virtue, because I have serious troubles with money all the time. I'm trying to convince myself that this money is very important, which it is, but I feel that I'm doing something completely stupid and pointless, and I just can't focus and relax at all.)
It's actually a very serious problem, if anyone is or was experiencing similar problems, please answer, I'd like to know how do you solve them or live with them. I know that this thread is somehow old, but I hope someone will read it and answer. Every comment to this article I read talks about the furniture, equipment, noise, music, drinks and other elements of physical environment. It could really help me if I could read comments of people who deal with similar problems as mine. Thanks.
~shiny
WILL HACK FOR $$$