Developer experience (DevEx) is a key focus of platform engineering. It’s also a crucial success factor for any organization developing software.
A recent paper by Abi Noda, Margaret-Anne Storey, Nicole Forsgren, and Michaela Freiler called DevEx: What actually drives productivity provides a framework for measuring and improving DevEx.
Developer experience
Developers tend to be happier when they can be productive. When a developer experiences friction, it’s a sign that they can’t deliver as much value as they feel they could.
The following can cause poor developer experience:
- Working on low-value tasks
- Interruptions
- Poor tools slowing them down
- Unrealistic deadlines
It’s hard to calculate the volume of an irregular object. Archimedes discovered that submerging an object in water provides a simple way to find its volume. Similarly, improving how developers feel and think about their work and its value can increase productivity.
Some benefits of improving developer experience are:
- Increased productivity
- Higher satisfaction
- More engagement
- Higher employee retention
Core dimensions
The 3 core dimensions categorize the friction developers experience:
- Feedback loops
- Cognitive load
- Flow state
These dimensions are a valuable model for improvement.
Feedback loops
Software delivery involves many feedback loops:
- Build and test times
- Code review waits
- Manual testing
- Real user feedback
Each of these loops needs to be short to reduce friction. Ideally, all feedback loops should complete while the task is still active. If a task pauses during a feedback loop, it will interrupt the following work when it restarts, disrupting flow state and increasing cognitive load.
Organizations are twice as likely to exceed performance goals with short lead times and frequent deployments. Work in smaller batches to get shorter feedback loops.
Cognitive load
Writing and maintaining software involves a large amount of mental processing. This natural cognitive load for the task increases when developers have too many tools and technologies. The architecture of the software can also add to the burden.
You can reduce cognitive load if you:
- Reduce toolchain friction
- Keep documentation updated
- Improve the system’s architecture
- Remove delays in the process
Platform engineering is a is a strategy for reducing cognitive overload caused by tools and technologies.
Flow state
You can probably remember when you last felt in the flow. You may have had a good chunk of uninterrupted time and could focus on the problem. The code seemed to write itself and you made great progress. You enjoyed the work.
Psychologist Mihaly Csikszentmihalyi studied the concept. He described it as a fully immersed feeling of energized focus.
Flow happens naturally when you have:
- Control over your work structure
- Clear goals
- Engaging work.
It’s not a case of making flow happen but preventing disruption from interruptions and delays.
Studies show developers who enjoy their work perform better and produce higher-quality products.
You can make flow more likely by:
- Using asynchronous communication to avoid interruptions
- Clustering meetings to create large blocks of meeting-free time
- Avoiding unplanned work
- Batching questions
DevEx metrics
You can create DevEx metrics by measuring 3 core dimensions with 2 methods:
- Perceptions - Gathered through surveys.
- Workflows - Gathered from systems.
Many people question the value of perceptual measurements. They think they’re too subjective to be useful. However, as our white paper on metrics explains, they’re a vital reality check.
The whole point of DevEx metrics is to uncover ways to increase the 3 core dimensions. They’re not a measure of developers but for the benefit of developers.
The matrix below shows examples of the metrics you can collect. It’s intended to be a framework, so you can pick and change metrics as needed.
Dimension | Perceptions | Workflows |
---|---|---|
Feedback loops | How satisfied are you with (build times, test run speed, the time it takes to get a change live) | Build times, code review waits, deployment frequency, lead time for changes |
Cognitive load | How complex is (the codebase, debugging the system, understanding the documentation) | The number of manual stages in the deployment pipeline, lead time for technical questions |
Flow state | Are you able to (focus on work, avoid interruptions, understand your tasks) | Meeting free blocks, incident frequency, number of unplanned tasks |
If you’re already collecting the DORA metrics, they’re helpful here.
DevEx key performance indicators
You must pick key performance indicators (KPIs) to track success. You can base these on the metrics you selected as part of the dimension and method matrix.
- Perceived ease of delivering software
- Perceived productivity
- Employee satisfaction
The KPIs make sure you remember the purpose of measuring developer experience. They also help balance the trade-offs in the improvement process. You should measure the outcomes you want from your efforts.
Summary
Developer productivity measurements are traditionally elusive. However, you can use perceptual and workflow measurements to track and improve feedback loops, cognitive load, and flow state.
Using KPIs to improve these 3 dimensions will get you happier developers who help your organization achieve its goals.
More reading
Help us continuously improve
Please let us know if you have any feedback about this page.