The Coding Zone
paulstamatiou.com
paulstamatiou.com
For me this is the most critical part. It's not enough just not to be interrupted. I have to feel like I couldn't be interrupted.
That's the great thing about programming at night. If everyone else is asleep (except other people who don't want to be interrupted) they won't even think of interrupting you.
Sometimes, I wind up working late on those days because I lose track of time and I actually don't mind. I find zone time related to my personal happiness, if I don't get into the zone, I become short fused and frustrated.
Lucky for me, I'm one of the principals of the company. So I can work till 4am and stroll into the office at noon.
By the way, the music I zone out too is classical. I have playlist of symphonies and after each one I stretch out. when Strauss' "Also sprach Zarathustra, Tod und Verklärung" are (is) over I know it's time to stand up.
Or look at your workspace and figure out why the fuck people need to stay up until 4am to be productive, rather than being able to, you know, work, at work?
As for the 2 programmers who work for me (the rest of the staff have to be there 9 to 5) they can work anywhere anytime. I care about results; meet your schedule- you can work from the beach if you want (I live in South Florida).
It reminds me of this talk by Jason Fried, which is so obvious but no conventional workplaces solve these issues: http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen...
http://www.walgreens.com/store/c/mack%27s-ear-seals-dual-pur...
They succeed in disturbing you without actually disturbing you, it's great (for them).
There's something very tranquil and calm about knowing the outside world is asleep. The dark has the effect of making it hard to see anything that isn't immediately in front of you, so when you're coding you don't see anything but the screen and the keyboard.
It kind of gives you nothing else to think about other than the problem to be solved.
(These jaunts only happen about once a week though, so the output on my hobby projects is pretty weak.)
Yes, the superstars are productive despite interruptions.
Most programmers, however, aren't superstars, or are vastly more productive superstars when they can work without interruption than even those who can tolerate a highly non-optimal environment.
Some level of task-switching is necessary, but as the other respondent said: this is what a PM or support triage role is for -- figuring out how to schedule stuff for your limited attention without breaking the conditions that contribute to your productivity.
The research behind uninterrupted periods of work is hardly new or novel: The Mythical Man Month, The Psychology of Computer Programming, Peopleware, Flow, and other books span a few decades.
In this example, you can either delegate the support or use processes so that customers aren't calling you when you're coding.
EDIT: Don't be a defeatist towards productive programming! You can create the environment, and you should.
Now being actually employed, I don't often do much at home (and don't even have a desk any more). There's not much concept of a zone there and I've become more collaborative and less engorged by my work. So it's more about throwing ideas out there, engaging in discussions, and talking through benefits and implications.
So in that sense my coding zone is less about blanking out the rest of the world and getting shit done like it used to be. It's mainly about being on top form with new ideas and creativity.
Aside from all that, I don't understand the caffeine thing. It's almost a stereotype. A good cup of tea or glass of water does me better.
> I don't understand the caffeine thing
> A good cup of tea [...] does me better.
But tea has caffeine in it. Did you mean decaf tea or herbal tea (aka an infusion, since there are no tea tree leaves)?If anything, I feel the come-down more than the pick-up.
Also, I vastly prefer tea over coffee. Usually green/white tea, or mate tea (even more caffeine) or some herbal stuff.
He didn't mention his computer set up very much, even though he has a pretty good one. Personally I'm going to be 100% more productive if I have a second monitor so I can code in monitor 1 and have documentation opened in the other.
One potential exception that I've experimented with is classical music, but the high dynamic range (which is awesome) makes it difficult to listen to on headphones because parts are too loud and parts are too quiet.
Agree on the dual monitor neccessity.
I find different types of music helps me with different types of work. For example, if I already understand a problem very clearly and have visualized most of the code in my head (and it's just a matter of typing it in), I like stuff with a very fast tempo - tends to be electronic.
However, if I'm just beginning to work through understanding a problem, sketching solutions or writing notes on my notepad, I like something very dynamic with lots of structure and intricacy - usually ends up being classical music, with an emphasis on piano concerti.
The only time I need absolute silence is composing e-mails or that sort of thing. Somehow forming sentences or otherwise writing in good, concise, coherent english requires a part of my brain that typically is free to listen to music. Maybe something to do with verbal/aural understanding.
Personally, it mostly depends on whether it has lyrics or not. Currently I've been listening to Bitches Brew (previously it was Unit Structures) and they work fine in setting a good mood without being distracting.
I find the lack of lyrics, and the fact that it's not a song I particularly love (ie, I'm not going to get distracted by how good the song is), makes it fade into the background - behind my thoughts.
I have found working at night is the best for me.
When I'm coding I find that interruptions don't bother me, because I usually become hyper focused and I block out everything around me.
Strangely enough, I like to watch movies while coding. Preferably ones that motivate me like Limitless, or V for Vendetta, or the Social Network.
Turns out, if I have music or tv playing in the background that works just as well.
I try to eat health and, I don't drink pop or coffee (they make me crash hard once I break out of the zone.)
Finally, once I start coding I must finish what I sat down to start. That way each time I code, when I'm done I feel like I have accomplished something. Which in turn makes me want to do it again.
Also, like he said, have some "work music." I have 80s radio on Pandora that I've fine tuned with many a thumbs-down. I can be lethargic and unmotivated but once I sit down, put on the headphones, and play some Pandora, I can get into work zone quickly.
Now I am about to buy one for my home office. The posture becomes comfortable and provides a wonderful break from standing at our new GeekDesk 2.0.
My Aeron looks exactly like it did when I got it nearly a year ago.
You need a company Anthem, even if the company is just you. That one song that makes you feel like TODAY IS WHEN I KNEW I WAS GOING TO MAKE IT. When you are ready to start working, blast it before any other song.
Club Mate
Aeron
MacBook Pro with an SSD (you never know how much time you wait for seeks until one day you don't)
Dell U3011 @ 2560x1600
Divvy
F.lux
Vim
M-Audio FastTrak Pro
AIAIAI TMA-1
Apple corded keyboard
A mouse with extra buttons mapped to switch desktops in Lion
I like to keep things simple.PreSonus Audiobox ($150) http://www.presonus.com/products/detail.aspx?productid=53
FiiO E9 ($110) http://www.amazon.com/gp/product/B004M172FY
Peachtree Audio iDac ($1000) http://www.amazon.com/Peachtree-Audio-idac-Digital-Converter...
or the Nova for just a bit more and it has a tube and built in amp: http://www.amazon.com/Peachtree-Nova-Integrated-Stereo-Ampli...
The latter is what my cofounder has (pictured in my post in the background on the window sill) and loves. He also had a Decco for a while (before realizing they were underpowered for his speakers): http://www.youtube.com/watch?v=SljFut8cUnc&feature=chann...
A few more that I'm not too familiar with: http://www.amazon.com/Audiophile-Products-Fubar-Plus-Headpho...
i am not guaranteeing you will hear any difference between any of the above ;o) i own the v-dac (i), which i feel improved the sound of my logitech duet (less abrasive), but that is feeding an amp and speakers, not headphones.
also, on music while programming:
- i find that if i need to concentrate, the music just disappears into the background. it's not like i need to switch it off, it just becomes irrelevant.
- i wrote some code that uses last-fm data to construct playlists of related music. if you have a lot of mp3s and want to listen to "random but related" music, this works great. it's not packaged nicely, but if you're used to hacking python you should be able to get it working - http://code.google.com/p/uykfe/ (as well as generating standalone playlists it talks directly to logitech's squeezecenter to dynamically select music).
- i may be showing my age, but fleetwood mac's rumors or nirvana's nevermind are my go-to albums for difficult bugs.
I was eye-ing NuForce Icon (can't remember which exact model) about a year ago (have dropped this requirement since)