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.

25 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

  3. Misophonia is real. I am a psycho about hearing people chew no matter how much I love them. Great post. Lots of these really reaonate with me. Thanks for writing.

  4. Pingback: On “Minimum Vacation” | George Stocker

  5. With notifications, emails, messages etc being a major source of distraction, who in the world should want an Apple Watch that act as an added source of these distractions. CRazy.

  6. What makes me unproductive is the lack of freah air from the work environment. Open space and many people per floor can do that.

    To combat it i take 5 minutes off every 25 minutes and do some light stretching, moving and resting my whole body (eyes,back etc.) and get a breath of fresh for clarity (this one is the hardest if you have a ‘punch card’).
    When i am the one scheduling all this it does wonders for my productivity and well being.
    Currently i manage to hold the cycle for about 50-75℅ of the day.

    Wish this would become work ethic so it wouldn’t meet social resistance / pressure.

  7. I quit my job and started my own very small business. Earning less, feeling better. Income will grow, so there’s no worry.
    I really hate it when my attention must dissipate on other people’s things.

  8. Nice post!

    Tips for good productivity that work for me…

    The first half-hour of the day often seems more productive than the whole of the previous afternoon. Getting to work early means I don’t waste any of this precious time.

    If it is working, keep going. Forget rules that say you should stop every half-hour: this does not apply when you are in The Zone. I have worked through the day, through the night, and through the following day without the productivity falling off. I can get months of work done in one hit. This is pretty rare, but it is magnificent when it happens.

    If it isn’t working, go home. Goof off early: your employers will get their value back another day. Enjoy the stares of people who think it is weak to leave before seven. Quite often, the missing good idea comes on the street outside the office.

    Murder the person next to me who can type one-handed so he can chew his nails all day, and then chew and suck the bits of skin on his fingers when there is no nail left all. He makes very little sound, but even with headphones on knowing he’s doing it is enough. Murder him. Murder him with an axe.

    Avoid thoughts like the last paragraph if you can. It can take my mind half an hour to get back to a happily place after a burst of this. I am having lunch so it doesn’t matter: I would not write this if I was taking a short break from work.

  9. Movement in my periphery really bugs me when I’m working. I bought these cubicle wall thingies from IKEA for my home office: http://www.ikea.com/us/en/catalog/products/50268812/

    They also block surrounding noise a noticeable teeny tad bit. Other than that, pure silence, breaking down big tasks into much smaller ones, and “Knowing the problem space well” work best for me.

    Also, email used to be a big distraction for me, so now I just use my iPad to show me new work emails as they come in, displayed on my lock screen… and this is now the primary way I check for new email. This is AMAZING because it allows me to separate what needs to be done right now v. what can wait a few hours. I find that when I check email on my main computer, I can’t help but start responding right away (even to non-urgent issues) because my fingers are right there on the keyboard… Now I use my laptop+external monitor solely to focus on my tasks, and keep email notifications and other distractions completely separate on my tablet. I still glance over to check the lock screen frequently, but I don’t act on them/open those emails unless they look like they might be somewhat urgent.

    • Sounds like there are a few people who need to invest in noise-cancelling earbuds. I dropped $300 on a pair of Bose earbuds and they really cut out external noise (even when you aren’t playing music through them, which of course they are also useful for).

  10. Another distraction is a superior and a collegue argue close by and refuse to move their conversation elsewhere because the superior is power crazy.

  11. I know all these issues from first-hand experience, but I don’t think this is something that is unique to coding (which is implied here and elsewhere). It might actually be more related to attention deficiency, which is a psychological condition, and that would be a problem in any profession. The correlation may be that people who are »wired« (have a disposition) to be affected by attention deficiency are statistically more likely to seek out professions such as software development, which is why these issues seem to show up more here than in other jobs. But this is only a (my) hypothesis.

    I’ve undergone the diagnostic procedures for ADHD more than once, and both times the outcome was something like 50:50 (»There are some indications that you have it and some that you don’t.«) My doc has given me Methylphenidate anyway just to see if it works – and it does work, as does Modafinil and probably any of the amphetamines, or any stimulant, for that matter (it’s not a co-incidence that developers are usually very addicted, or at least inclined, to caffeine). The drugs don’t work wonders, but they make it easier to stay in the zone and not get pulled into outer space by every little distraction.

    I’m not saying that this is necessarily a medical condition, or that it should be treated with drugs, but for people who are dealing with these kinds of issues this might be worth taking a look at.

    From my experience, the base issue is that »people like us« can get hyper-focused (much more so than those not affected), but the downside is that we may lose focus altogether and just keep drifting off, which is something that does not seem to happen (as much) to those not affected from this special brain-wiring (or whatever it is). So what seems to be happening is that our focus regulation (which is strongly linked to the neurotransmitter Dopamine) tends to get out of control, giving us the hyper-focus some of the time, and much too little focus at other times.

    You may also like to try out a number of techniques that can help to get this focus-imbalance (of sorts) back in order, such as meditation or yoga (yes, seriously).

  12. Yeah. Give the guy with productivity issues his own private office where nobody can see him idling. That’ll help.

    Glad you’re not on my team.

  13. Pingback: Four Months of Remote Work | George Stocker

  14. In addition to all of the mentioned: Messy, poor test coverage or untestable code, messy/slow build environments, quirky unhelpful IDEs.

    Messy code in particular can in a single blow destroy my productivity much more than anything else. A well understood one day feature can turn into an endless rabbit hole of investigations, unexpected effects and fixing bugs that creep out because you touched something.

  15. These problems are real – sometimes I even wonder what I did when home time comes — I do find working from home does wonders – no one to bug you, your own space, your own toilet and toilet paper… it’s just comfort zone all the way, not to mention time management, etc.

  16. Programming should be equated to composing music, that which is NEVER done in a “communal” environment. I’ve stayed concentrating on system designs for days with NO interruptions and these were the most productive times in my career. Crash for a few says, come back and review what you’ve done with a fresh mind. Mind you … nobody had better change the “user requirements” in parallel with the design & development phase, or nasty feelings will be vented!

  17. Pingback: Five reasons why I didn’t Join a Coworking Space | 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