3 Dimensions to Improve Developer Experience
In a study by GetDX, Microsoft Research and the University of Victoria in Canada, 25 factors were identified that affect the software development experience, and it was found that the productivity of software engineers is mainly influenced by three dimensions: feedback loops, cognitive load, and flow state.
Feedback Loops | Cognitive Load | Flow State | |
---|---|---|---|
People | Satisfaction with automated test speed and results Satisfaction with time it takes to validate a local change Satistaction with time it takes to deploy a change to production | Perception of codebase complexity Ease of debugging production systems Ease of understanding documentation | Subjective perception of staying focused and avoiding distractions Satisfaction with task or project goal clarity Perception of interruptions during on-call |
Process | Time required to generate CI results Code review turnaround time Deployment lead time (time required to release changes to production) | Time required to get answers to technical questions Manual steps required for deploying changes Frequency of documentation improvements | Number of time blocks without meetings or interruptions Frequency of unplanned tasks or requests Frequency of incidents requiring team attention |
Goals
- Perception of ease in delivering software
- Employee engagement or satisfaction
- Perception of productivity
1. Feedback Loops
Feedback loops play a vital role in software development by optimizing the value stream and reducing delays in software delivery. The faster developers receive feedback, the quicker they can make necessary adjustments and course corrections. Research indicates that frequent deployment and shorter lead times can double the likelihood of meeting performance goals.
To improve DevEx, organizations must focus on shortening feedback loops. Slow feedback not only interrupts the development process but also leads to frustration and delays. Identifying areas where tools can be optimized or human processes improved is essential for enhancing the feedback loop process.
2. Cognitive Load
Cognitive load refers to the mental processing required by a developer to perform a task. As the number of tools and technologies grows, developers face an increasing cognitive load, which can sometimes hamper their ability to deliver value.
High cognitive load can arise due to issues such as poorly documented code or complex development processes. To improve DevEx, organizations should eliminate unnecessary hurdles in the development process. This includes emphasizing organized code and documentation, as well as providing easy-to-use, self-service tools that facilitate a smoother workflow.
3. Flow State
Flow state is a mental state characterized by full immersion, energized focus, and enjoyment in an activity. Developers often describe this state as "getting into the flow" or "being in the zone." Achieving a flow state leads to higher productivity, innovation, and employee development.
Studies have shown that developers who enjoy their work and frequently experience the flow state perform better and produce higher-quality products. However, delays and interruptions can hinder developers from reaching this productive state.
To enhance DevEx, organizations should focus on creating optimal conditions for the flow state. This includes minimizing disruptions by clustering meetings, avoiding unplanned work, and batching help requests. Additionally, fostering a positive team culture that gives developers autonomy and opportunities to work on fulfilling challenges is crucial for facilitating flow state. Leaders should promote environments conducive to these conditions.
Conclusion
By focusing on the three core dimensions of DevEx - feedback loops, cognitive load, and flow state - organizations can better understand and improve developer productivity. By optimizing these areas, teams can experience significant improvements in their output, ultimately leading to more successful delivery of software.