On the importance of a good developer work environment
This is an article I like about this subject: http://www.paulgraham.com/makersschedule.html
It rings true to me as it reflects my experience both as a coder, and as a manager.
My own general view of coding time goes like this: For seriously productive coding you need to be in (what I call) the "Zone".
This is a state of mental concentration where:
- You have blocked all distracting thoughts
- You are focused only on the problem at hand
- You have had time to acquaint yourself with existing code and it's problems
- You have oriented yourself mentally in relation to existing code, existing problems, and the development environment
- You have mental certainty about what you are trying to achieve and how you are going to do it
- You have loaded up your mental stack with all the pieces and relationships you need to juggle and manipulate to achieve your aims
- You are largely unaware of the passage of time, or anything that is occurring around you
- You possess unassailable certitude regarding the righteousness of your cause, and are determined to succeed
It takes time and energy to enter the "Zone". Once you are there, good things can happen.
A graphical representation of this:
The problem with the "Zone" is that, while it takes time to get into it, it takes no time to be bumped out of it. This looks like:
If you are coding in an environment with distractions the net effect on coding is much worse than the sum of the time of the actual distractions. The distraction only has to last a minute to blow away the next 30 minutes of productive 'Zone' time. If there are enough distractions and they are spaced strategically enough you may well achieve nothing despite spending all day at the keyboard.
For those who do not know the joy of the "Zone", it is like REM sleep. If you are woken up every 30 min during the night, you are not going to sleep well, and you are going to be cranky.
No male coder alive can be in the 'Zone' and be doing anything else. This is a "no-multitasking" state of existence, definitively. Females may be different. I couldn't say.
Every coder is different. Some people can hold the Zone through a fucking hurricane. Some guys can't focus if there is an inconsiderate wanker breathing in the same room.
A non-exclusive list of things that aren't don't help:
- Entries and exits in the coding area
- Talking on the phone in the coding area
- Loud noises
- Inflicted conversations
- Phones going off
- SMS alerts beeping
- Facebook, Slack, Skype, WhatsApp etc alerts popping up on the screen
- Videos playing in the background
What do you need to be in the zone. Are you getting what you need? Would headphones and elevator music help? Do you need an locked down environment with no outsiders? Have you taken the battery out of your phone and blocked anything that resembles a social media account from your computer?