A recent report regarding developer productivity has set the dev world abuzz.
Without going into too many details, the notion that one can effectively measure individual developer productivity has been a controversial topic since the dawn of the mainframe. Quotes from the report, such as “enable […] highest-value developers to do what they do best: code,” simply add more fuel to the fire.
The idea that you can (or even should) measure individual developer productivity has some drawbacks. For example, what metrics does one use to measure productivity: lines of code, stories closed, function points? Does productivity equate to delivering value? At the end of the day, value is what businesses really need. Established metrics can easily become targets of their own, and developers can meet the metrics without accomplishing the real goal: delivering high-quality software that satisfies the requirements of the business and the demands of its customers.
While it’s true that leaders want their employees to work hard and deliver high-quality results, measuring individual productivity on what is essentially a creative team process is barking up the wrong tree.
If Your Developers Are Just Coders, You’re Wasting Potential
Our research on developer experience offers an alternative path to helping leaders get the most from their application developers. Developer experience is more than just about how to make developers happy — it’s about how to help them be more effective engineers. Developers do much more than just code. For example, they:
- Collaborate and converse with business stakeholders on features, functionality, and details of business logic.
- Decompose complex business requirements into algorithms.
- Develop APIs and API frameworks.
- Work with stakeholders from security, operations, and compliance.
- Examine and study functional components.
- Hunt for edge cases and perform “what if” scenarios to ensure that the code is as resilient as possible.
- Research and experiment with open source components that can accelerate delivery by leveraging existing innovation.
- Investigate next-generation technologies such as cloud-native development, edge, IoT, and AI to determine their applicability to the product.
- Collaborate with fellow engineers on problem-solving and ideas for future improvements.
- Bring new techniques and best practices to their teammates.
- Identify ways to improve performance and reduce costs.
- Develop unit tests.
- Develop and support the DevOps tools they use to automate software delivery.
Here’s How Leaders Can Help Their Developers Succeed
As a leader, you want your developers to thrive. Here’s how to help those on your team reach for the stars:
- Realize that developers aren’t fungible. Holding all developers to a single productivity metric, or even a few, misses the bigger picture. A hockey coach wouldn’t say, “Hey, that player hasn’t scored any goals, even though he’s had tons of ice time. Let’s fire the goalie and get another center.” Different developers contribute to a project in different ways: Some are more focused on performance, some on good documentation, some on avoiding regressions. Successful projects have developers with different skills.
- Automate to reduce cognitive load. Developers juggle a lot of information in the process of building software. If you can ease some of the burden by moving routine tasks to a machine rather than relying on a developer, you’ll end up with a better product.
- Guard developer flow. Software development is an intense process, and developers achieve maximum productivity when they’re in a flow state, focused on only one problem. It takes time to enter this state, and some organizations self-sabotage by pulling developers out for routine meetings or “quick questions.”
- Encourage rapid feedback. Much of the time wasted in software development happens when developers need to rely on feedback such as code reviews, test results, or code scans. Reducing the time spent waiting not only improves throughput, it reduces the time spent relearning code and switching contexts.
Developers Are Accountable To Their Teams
If you can’t measure developers with a single magic productivity number, how do CTOs justify that they’re good stewards of corporate resources? Put simply: Look at team results. If a team is not delivering value to the organization, there’s a problem, and it’s management’s job to address it. When teams continue to deliver value to their customers — whether by adding code or removing it — they’re successful.
At Forrester, we conduct research on developer productivity and ways to improve it. After all, what’s wrong with wanting to help developers become more aligned with the business? Especially if you can eliminate much of the drudgery by automating routine tasks, improving developer experience, and helping devs with modern tools and technologies. Always remember, though, that individual developers have distinct roles within a team, and a good line manager will know who’s carrying their weight and who’s not. Schedule an inquiry if you’d like to learn more.