Developer Productivity has always been a hot topic. For a long time, it was hard to define because it really couldn’t be measured. Lately, thanks to various code hosting platforms providing API access to git repositories, we can start tracking team and even individual performance metrics. (Though I’d strongly recommend against tracking individual developers’ metrics for reason that can be discussed elsewhere …)
So how do you measure how your developers are performing?
Well, it’s actually pretty simple. But it’s not easy. It’s simple because all you have to do is two things:
- Get developers to code more efficiently
- Get developers to not code more efficiently
There are tons of tools out there that help with the first, but not so many to help with the second. (The second does sound a little weird – basically it’s the notion of improving the process of things that developers do that don’t involve coding...)
Highly productive developers are hard to come by and expensive to train and retain, and so you want to ensure that your team is firing on all cylinders. But how do you do that?
Well, here are a few general ideas I have about how to make developers more productive.
- Ensure that they have the best and fastest hardware. If a faster processor on a computer saves a developer five minutes a day, that is 1000 minutes a year, or 16.67 hours. At $100 an hour (probably cheap!) that's $1600 a year. A good machine is easily worth it.
- Give them a peaceful environment. The best is individual offices, but if that isn’t possible (and you should try to make it possible in any way you can) then wherever your team ends up, at least have the ethos of being quiet and leaving people alone.
- Give developers whatever chair, keyboard, mouse, and other peripherals that they want. Include noise canceling headphones in the list of things you’ll provide.
- Engender a culture of excellence. Don’t put up with hacks or sloppy work. Design things and do things the right way every time. Fend off technical debt like a lioness defending her cubs.
Those are just a few of the things that can help improve the productivity of your team. These things are important, and you should do them, whatever your position in your organization.
But perhaps even more importantly, who is responsible for making sure a development team is a finely tuned machine?
It’s that second question that I’m really interested in.
For many years, Google has tackled the issue of Developer Productivity by forming a team focused on what it calls Engineering Productivity. The idea is that if they have a team to focus on making their developers more productive, that team will more than pay for itself in increased value delivered by those developers.
This sounds reasonable – and really great if you are a developer. I love the idea of someone spending their whole day making my life easier.
Historically, only large companies like Google have been able to realize the benefits of a dedicated developer experience team. However, more and more, smaller development teams are seeing the benefits as well, and there has been a rise in popularity of the “Developer Experience Engineer” (DXE).
Obviously if you have a DXE or a DXE team, they will own the process of improving developer productivity, right?
But what if, for whatever reason, you don’t have a Developer Experience entity?
Maybe the Software Development Manager is responsible for developer productivity. After all, they are the ones in charge of getting things done, and they are thus very interested in developers working more efficiently and effectively. If they don’t take an interest in such things, then no one will. Maybe they should be in the business of ensuring that the team has everything they want and need in order to be as effective as possible.
Or maybe the developers themselves are responsible for their own productivity. Maybe a professional developer should make it a point of pride to be as productive as possible, advocating for the tools, environment, and processes that make them do their best work.
Or maybe, just maybe, all these people combine to take on the responsibility. That seems to make the most sense to me. Everyone in the whole software development process is responsible to ensure that the whole team is firing on all cylinders. Developers should be very open about saying what they need to be more productive. Managers should be fighting for budget, process changes, and anything else that developers need to get better work done. DXE engineers should dedicate themselves to finding all the newest and latest software and hardware that will help things move along.
In other words, it takes a team to make the development process more efficient and effective.