How to destroy Programmer Productivity

The following image about programmer productivity is making its rounds on the internet:

programmer productivity in a graph

As Homer Simpson might say, it’s funny because it’s true.

I haven’t figured out the secret to being productive yet, largely because I have never been consistently productive. Ever. Joel Spolsky talks about this in one of his blog posts:

Sometimes I just can’t get anything done.

Sure, I come into the office, putter around, check my email every ten seconds, read the web, even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just doesn’t happen.

These bouts of unproductiveness usually last for a day or two. But there have been times in my career as a developer when I went for weeks at a time without being able to get anything done. As they say, I’m not in flow. I’m not in the zone. I’m not anywhere.

I’ve read that blog post about half a dozen times now, and It still shocks me that someone who we see as an icon in the programmer community has a problem getting started.

I’m glad I’m not alone.

I’m not here to share any secret methods to being productive, but I can tell you what has kept me from being productive:

  • Open Floor plans
  • Developers arguing about Django vs. .NET
  • Developers arguing in general
  • A coworker coming up to me and asking, “Hey, did you get that email I sent?”
  • Chewing. Apparently I suffer from Misophonia
  • Not understanding the problem I’m working on
  • Not really believing in the project
  • Not understanding where to start
  • Facing more than one task that needs to be complete BECAUSE THINGS ARE ON FIRE RIGHT NOW
  • Things BEING ON FIRE RIGHT NOW DROP EVERYTHING
  • Twitter Notifications on my Phone
  • Email pop ups
  • Really, any pop-ups
  • IMs
  • My wife asking, “Hey, when you have a minute could you do X?”
  • Long build times
  • Noise
  • Constant parade of people going past my desk
  • MandoFun
  • Wikipedia (Seriously, don’t click on any links)
  • Hacker News
  • The Internet in General

Things that have contributed to making me productive in the past:

  • Quiet atmosphere
  • Quiet workspace (A private office works wonders)
  • Understanding the next step I need to take in a project
  • Knowing the problem space well
  • No interruptions
  • Seriously: No interruptions
  • Staying off Twitter
  • Staying off Hacker News
  • No hardware problems
  • Loving the project I’m working on
  • Short build and debug times
  • Not debating politics on the internet

 

It’s telling that half of the things that keep me from being productive are problems I’ve created; but some of them aren’t. Like Open Office floor plans.

Ultimately, each of us controls what makes us unproductive. I suck at peaceful confrontation. I either come of too strongly, or I sit there and let the other person walk all over me. I’m really not good at it at all. As such, I don’t have any good advice for handling the external forces that contribute to not being productive, but I do know this: Whatever I can control, I should control. That means:

  • Turning off notifications on my iPhone (this has the added benefit of increased battery life)
  • Giving myself a reward for 3 hours of continuous coding (usually in the form of “internet time” like checking Hacker News or twitter)
  • Working from home when I really, really, need to get something done
  • Investing in a good-for-the-price pair of noise canceling headphones
  • Scheduling ‘no meeting’ times on my calendar. These are times shown as busy to everyone else. It’s my work time.
  • Not getting into programmer arguments around the office; people have strong opinions, and the programmers who have arguments love to argue. If there’s an actual business problem that needs to be solved, let’s grab a conference room and come up with the advantages and disadvantages of each approach. Let’s get some data. Let’s not just argue.
  • Position my desk in such a way that passersby aren’t distracting.
  • Taking a first pass at the problem, and *then* asking another developer to walk me through the problem so that I can get a better understanding of what to do. This accomplishes two things: First, it allows me to get the ‘lay of the land’ so that I’ll at least have a basic understanding of the forces at work. Second, it allows me to ask more intelligent questions when I ask for help

What makes you unproductive, and what do you do to combat it?

Discuss this post on Hacker News or Reddit.

Edited on 9 July 2014 for typographical errors.

About these ads

2 thoughts on “How to destroy Programmer Productivity

  1. Pingback: How to be a Productive Programmer | George Stocker

  2. Pingback: Three Small Things A Day | George Stocker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s