— Originally posted on LinkedIn —
It is a joy to write good code. Code that solves the problem in an elegant way. Code that is easy to maintain, easy to expand as new features are desired. But it can also be hard to write. It takes time, focus and understanding of the problem.
There are things that we can do to make it easier to write good code. Unfortunately, we can also do things to make it harder. A lot of developers work in places that make it harder.
In order to create good code, a developer needs to have some periods of focused thought. She needs to get in the ‘zone’ – where she understands the details of the problem domain and the evolving model of the code for her solution. She can get a lot accomplished in a couple of hours of zone time. However, interruptions can make this difficult. Researchers have found that it can take up to 15 minutes to get back to the same level of focused concentration after an interruption.
So, a good development environment will allow a developer to have blocks of time (2-4 hours) of uninterrupted time. But many offices don’t support this. Instead, the environment:
- expects a developer to respond to emails rapidly. The worst I have seen was a set of business analysts that would call on the phone if they did not get an email reply within 5 minutes. I have also seen many invitations to meetings that are scheduled to start within the next hour. This cultural demand for instant replies affects developer productivity.
- schedules daily meetings at inappropriate times. When core hours are 9 to 4, it is better to schedule a daily meeting for 9, or 1 rather than 10:30 or 2. This gives the developer a better chance to get in the zone and stay there for a good block of time.
- places their developers in noisy environments. Open cube farms are noisy. You hear everybody’s conversations. It is difficult to get in the zone with that many distractions going on around you.
- uses meetings to convey information that could be sent as an email. Meetings should be for discussions, back and forth. However, many meetings are a data dump from the manager – this data dump is much less intrusive if sent as an email.
Is your environment supportive for you as a developer? What element of your environment could be changed to make it more supportive?