Many moons ago, I tweeted the following about how to improve developer productivity:
There is a pretty big controversy in the software development community about logging time. Of course, if you are billable, you need to log your time, but what if you aren’t? Should you have to keep track of the time you spend writing code? Does tracking time do anything to improve developer productivity?
Now I know that no one really likes to track their time. It’s a pain. It’s challenging to be accurate. It’s hard to get time properly categorized. But it can be invaluable for making those important business decisions. I’m not going to solve that argument here.
But there is a bigger problem with measuring time. The only thing you can really measure is “Butt Time”. Butt Time is the actual amount of time someone has their butt in a chair while working on a project.
You need Butt Time to get any work done, of course. But managers should not be insisting on a lot of Butt Time. Butt Time isn’t really what you want to maximize. What you really want to foster is Brain Time.
What Do You Really Want to Measure?
Butt Time isn’t at all equivalent to productive development time. Butt Time includes reading email, answering questions and generally handling any number of interruptions, daydreaming, personal calls, meetings, and other distractions. And those distractions, however minor, break a developer’s concentration. It is also time spent not working on the task at hand.
When you get right down to it, development is all about concentration — Brain Time. With a coding project of any size at all, doing development requires complete focus and attention. You need to build up complex data structures and patterns in your mind in order to really be productive.
Doing this takes time — I’ve heard it described as building a house of cards in your mind. Building that house of cards can take upwards of fifteen minutes depending upon the project. But here’s the bummer: It only takes a second for that house of cards to come tumbling down. One distraction can make your fifteen minute investment disappear.
And of course, time spent in “The Zone” – with that house of cards constructed and true, highly productive work getting done – is what we all are seeking. We’ve all probably had that awesome experience of getting into that zone for hours at a time and wondering where the time went. We know how cool that is – and how precious. That’s what we want to measure – Brain Time.
But that’s a really hard — if not impossible — thing to do. Getting accurate, meaningful Butt Time measurements is difficult enough. But how in the world can you actually measure Brain Time?
I’ll argue that you really can’t. In the end, Butt Time is only a poor proxy for Brain Time. And all too often, managers will use Butt Time as a measure of productivity. What we need to do is to try to increase the Butt Time to Brain Time ratio by providing an environment where Brain Time is maximized as a percentage of total Butt Time. It’s critical to improve developer productivity.
What Can You Do to Improve Developer Productivity?
There are ways to do that – ensuring that your developers have an office with a door that they can close is an important first step. The book Peopleware is really the bible for this, and Joel Spolsky has talked a lot about it as well. Uninterrupted quiet time is the key. Leaving developers alone is critical to maximizing Brain Time.
Developers inherently know that “Butt Time” isn’t really important. They know that time spent thinking is way more valuable. I’ve known developers that do some of their best thinking while wandering the halls, allegedly “doing nothing” (Heaven forbid that a developer isn’t sitting in their chair!), or making a cup of coffee.
Managers should make sure that they aren’t expecting developers to be sitting and typing all the time. Sometimes great work gets done while simply staring at the screen doing nothing. Sometimes walking the dog brings about an epiphany.
Managers should recognize this and encourage their team to do what they need to do to do their best thinking. If a developer can concentrate at night from 10:00pm to 3:00am, then she should be encouraged to work then. Every developer is different, and a good manager will learn what works for their team members and provide for that.
Another thing we need to do is to respect – indeed, celebrate – those developers that are quiet and don’t say much. Many developers are introverts that don’t say much at all. They come to work, write great code, and go home. But sadly, we don’t always respect this. Being quiet is a very valuable virtue in a software developer – both because they themselves are being productive and they aren’t breaking other’s concentration. We should give honor and respect to that.
Butt Time is easy to come by and fairly easy to measure. Brain Time, however, is a precious and hard to measure commodity that needs to be nurtured and respected. If you really want to improve developer productivity, optimize for Brain Time.