The following image about programmer productivity is making its rounds on the internet:
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
- My wife asking, “Hey, when you have a minute could you do X?”
- Long build times
- Constant parade of people going past my desk
- 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.
33 thoughts on “How to destroy Programmer Productivity”
Reblogged this on out of my memory.
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.
Agreed, so difficult. The secret for my overcoming this is to make sure I’m chewing at the same time they are 😛
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.
Developers most of all.
Which is funny, isn’t it.
This blog post made me unproductive for a bit.
Reading this article just killed my productivity for the day…
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.
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.
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.
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).
Delightful, except the sensation of having earbuds in your ears or headphones on . them can be maddening for some of us. After an hour at most, all useful brain activity has been replaced by the nagging thought of how uncomfortable the things are. 😉
That’s me. Except that the red dots represent the blood of non-geeks I’d like to shoot.
Another distraction is a superior and a collegue argue close by and refuse to move their conversation elsewhere because the superior is power crazy.
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).
A catastrophe on your part does not constitute an emergency on my part.
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.
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.
I work from home. That’s how I avoid all that nonsense. I’m super productive and I don’t think I could ever work in an office again.
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.
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!
I’m curious about the noise-canceling headphones. From what I’ve read it seems to me like they’re good for canceling out uniform background noise, like the drone of an engine or machinery, and less good for canceling out something less regular, like voices in conversation.Is this what you’ve found in your use of them as well?
Same with translators (: People doing creative work need their own, private, undisturbed space, their very own scheduling and, well, the feeling of being creative (the key here is “doing something that actually makes bloody sense both for me and the world in general”)
Things distracting me:
– Sudden halts of the IDE (going shallow saying “Not responding” in the title)
– When we run out of coffee because everybody forgot to buy
– Anybody, seriously anybody, staring at me while writing code. Even when I am just thinking about what to write exactly
– Deadlines – and the way they are created
– Badly indented code
– 3 calls in a row about brand new ideas what shall I accomplish – of course for yesterday – leaving me half an hour behind and completely brainwashed
Things making my head blow:
– Somebody asking me: what are you doing? guess what! working, thinking, and I would not like to create a half an hour story about that.
Things helping me:
Am I the only one having these?
Open offices are terrible for focus. They’re not bad when you really are collaborating, but that lasts only a small portion of the production process. Even if you’re “extreme programming”, you don’t want additional people around to further distract the overall process.
I also hate phones. The abrupt time sensitive nature of phones is endemic to destruction of focus.
I would so much rather arrange to speak with a person physically as the next step after IM or email or some shared gotomeeting kind of thing. I feel phones should be banned except for virtual meetings or if you are keeping them open for a period of time to remotely coordinate during a process execution.