Developer Rant – Interruptions

— 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?

Posted in development | Tagged , , , | Leave a comment

The Accident Reminder

— Originally posted on LinkedIn

On my way to lunch, I heard that uncomfortable sound of two cars colliding. From the distant glance, it looked like there were no injuries and the parties were starting to talk.

A few minutes later, on my way back to my office, the cars were still in the intersection. The parties were now both on their cell phones. I was walking toward one of them when I noticed that her hands were shaking and she was bleeding from the back of her right hand. She was sitting on the edge of the sidewalk as she hung up from her conversation. I mentioned that she was bleeding.

As she blotted the back of her hand with a napkin, she started talking about the accident. She said that her car was fairly new and that she had noticed the flashers were on as she was driving. She got focused on turning them off and the collision happened. We chatted a bit until the fire truck arrived and she moved over to get her hand checked.

As I walked back toward my office, I thought about the conflict between ‘keep your eye on the ball’ and ‘always be aware of your environment’. We all have that problem from time to time. Pilots have crashed airplanes while futzing with an indicator light in the cockpit. Trackers have been so focused on the tracks they are following that they get ambushed by their quarry.

Many developers focus only on their own project and ignore the other projects that their company is developing. Without this awareness, how can the developer recognize the shift in technology that their company may be realizing. Or the shift that the industry is taking while their company focus is too narrow.

Or the developer may be able to add value by suggesting code reuse between his project and another.

Although the laser focus is needed to solve some problems, keep a balance between the laser focus and the environmental awareness. Or you may collide with part of that environment.

Posted in Personal | Tagged , , , | Leave a comment