# Developer experience

New to DORA? Start with [What is DORA?](/docs/engineering-delivery/what-is-dora), then come back here.

Developer experience, often shortened to DevEx, is how the people building software experience their working day: how quickly their tools answer them, how hard it is to understand what they are working on, and whether they get time to focus. The DevEx framework names three things that shape it: feedback loops, cognitive load and flow state. The simplest way to learn about it is to ask, which is what a short, anonymous team survey does.

In Engineering Delivery you find it under **People**, then **Developer experience**. It is a short, anonymous survey that an admin opens for a few days at a time, and its results show per team once a round closes. This guide explains the framework behind it, how a round works, how to read the results and what to do with them.

## What is developer experience?

Developer experience is the day-to-day reality of doing the work, seen from the inside. Two teams can have the same delivery numbers and very different days: one smooth and focused, the other full of waiting, confusion and interruptions. The second team is unlikely to keep its numbers for long.

The idea behind the DevEx framework is that how people experience their working days shapes how well a team delivers. That is why it is worth measuring alongside the delivery metrics, not instead of them.

## What is the DevEx framework?

The DevEx framework is a way of thinking about developer experience in three dimensions. It was published in 2023 by Abi Noda, Margaret-Anne Storey, Nicole Forsgren and Michaela Greiler in the article [DevEx: What Actually Drives Productivity](https://queue.acm.org/detail.cfm?id=3595878) in ACM Queue. Nicole Forsgren is also one of the researchers behind the original DORA work.

The framework suggests measuring developer experience by combining what people say about their work (perceptions, gathered with surveys) with data from the tools they use (workflows). A survey tells you how the work feels; tool data tells you what happened. Each fills in what the other cannot see.

The three dimensions, in the words Solidafy uses for them:

- **Feedback loops:** how quickly builds, tests, reviews and releases answer the work a person does. Waiting twenty minutes for a test run, or two days for a code review, breaks the thread of the work.
- **[Cognitive load](/docs/engineering-delivery/glossary#cognitive-load):** how much effort it takes to understand the code, find answers and work with the tools. Mental effort spent fighting a confusing codebase or hunting for documentation is effort not spent on the problem itself.
- **[Flow state](/docs/engineering-delivery/glossary#flow-state):** whether there is time and clarity to focus on the work without being pulled away. Flow needs both unbroken time and a clear idea of what to do and why.

## How does developer experience relate to DORA?

The DORA metrics describe outcomes; developer experience helps explain why those outcomes look the way they do. The [five DORA metrics](/docs/engineering-delivery/dora-metrics) tell you how fast and how safely changes reach users. They do not tell you that the reason your [change lead time](/docs/engineering-delivery/change-lead-time) is long is that people lose half a day every time the build breaks, or that nobody can find the documentation for the payments service.

DORA's own research has moved in the same direction. In the 2025 report, the measures DORA uses to describe teams include friction ("the extent to which friction hinders an individual's work") and valuable work ("the amount of time an individual spends doing work they feel is valuable and worthwhile"), alongside delivery throughput and instability (2025 report, pages 15 and 37). Roughly, friction is what slow feedback loops and heavy cognitive load feel like, and valuable work is what good flow makes room for.

Each DevEx dimension also has delivery data worth looking at next to it:

- Slow feedback loops can show up as long waits in [code review](/docs/engineering-delivery/review#time-to-first-review) or a slow step in [where the time goes](/docs/engineering-delivery/change-lead-time#where-the-time-goes).
- High cognitive load can show up as large, hard-to-review changes and more [reopened tickets](/docs/engineering-delivery/quality#reopened-tickets).
- Poor flow can show up as too much [work in progress](/docs/engineering-delivery/flow#work-in-progress) and little [focus time](/docs/engineering-delivery/team-health#focus-time).

## How do you measure developer experience?

The most direct way is a short, regular survey that asks people to agree or disagree with plain statements about their work. Keep it short so people answer honestly and often, and keep it anonymous so they feel safe to say what is wrong.

### The nine statements

Solidafy's survey uses nine statements, three for each dimension. Each is rated on a five-point scale: strongly disagree, disagree, neither, agree, strongly agree.

Feedback loops:

- "Builds and tests tell me quickly whether my change works."
- "My changes get a first review soon enough that I keep my focus."
- "I can get a finished change to production without long waits."

Cognitive load:

- "The code I work in is easy to understand and change."
- "I can find the documentation and answers I need without waiting on someone."
- "Our tools and processes help me rather than get in my way."

Flow state:

- "Most weeks I have enough uninterrupted time for focused work."
- "Meetings and interruptions rarely pull me away from the work I planned."
- "I understand what I should be working on and why."

### How results are read

An answer of agree or strongly agree counts as favourable. Each dimension's result is shown as an average score out of 5 and the share of people who agree, for example "3.6 of 5, 64% agree".

Here is a worked example. Our running team of six builds an online booking app, and five of them answer the first round. Their results come back as feedback loops 2.8 of 5 with 40% agreeing, cognitive load 3.9 of 5 with 80% agreeing, and flow state 3.4 of 5 with 60% agreeing. Feedback loops is clearly the weakest. In the discussion, people say the test suite takes 25 minutes and reviews often wait until the next day. That gives the team something concrete to work on.

### What does good look like?

The framework publishes no target score. Compare a team with its own earlier rounds, and look first at the dimension with the lowest share of people who agree.

## How do you act on the results?

Talk the result through with the team, start from the lowest dimension, and change one thing before the next round. A survey nobody acts on teaches people that answering is pointless.

1. **Run rounds regularly.** A round every month or quarter means a change shows up against the round before.
2. **Discuss it together.** The numbers say where; the conversation says why. Start from the lowest dimension.
3. **Pick one thing to change.** For slow feedback loops that might be speeding up the test suite or agreeing a review window. For cognitive load, it might be writing down how the trickiest service works. For flow, protecting meeting-free mornings.
4. **Check whether it moved.** Look at the next round, and at the delivery data that matches the dimension.

> **Tip:** The [Overview, focus and working agreements](/docs/engineering-delivery/overview-and-focus) guide describes the same loop for delivery metrics: find the biggest constraint, change one thing, check again.

## Why anonymity matters

People only tell the truth about their work if they are sure it cannot come back to them. A survey that might identify who said what gets polite answers, not useful ones.

That is why results should only ever be shown for groups big enough that no single answer can be picked out. Many survey tools use a minimum group size for this; Microsoft Viva Glint, for example, documents a [confidentiality threshold](https://learn.microsoft.com/en-us/viva/glint/setup/quick-guide-confidentiality) of five responses before scores are shown.

### Common mistakes

- **Showing results per person.** Developer experience is about the team's environment. Individual scores invite blame and dishonest answers.
- **Comparing teams against each other.** Teams work on different systems with different histories. Compare each team with its own past.
- **Surveying too often or too long.** Nine statements once a month or quarter is enough.
- **Collecting answers and doing nothing.** If nothing changes, the next round will have fewer answers.

## How a survey round works in the app

The survey runs in rounds. A round is a few days in which everyone can answer once; when it closes, the results appear.

### Opening a round (admins)

When no round is open, the page says "No survey round is open." An environment admin sees a choice of how long to keep it open ("Open for" 3, 5, 7, 10 or 14 days, with 7 suggested) and an **Open a round** button. As the page puts it: "Open a round and everyone the app lets in can answer, once, for their team. The weekly note reminds anyone who has not answered yet. A round every month or quarter shows change over time." An admin can also end a round early with **Close this round now**.

People who are not admins see: "An environment admin opens rounds. When one is open, you are asked here and in the weekly note."

### Answering (everyone)

While a round is open, the page says when it closes ("This round is open until ..."). You rate each of the nine statements from strongly disagree to strongly agree and press **Send my answers**. If you can see more than one team, you first choose the team you answer for ("I answer for"). Next to the button the page reminds you: "Anonymous: your answers only add to your team's counts."

After you send, the page says: "Your answers are in. Thank you. Results show once the round closes, for each team at least 5 people answered for." If you are not part of any team the app can see, it says "You do not see a team to answer for. An admin can give you one in Access."

While a round is open, the weekly note also invites people to answer: "A short developer experience survey is open until (day), anonymous and shown per team only; answer it under People."

### Reading the results

Under **Results**, each closed round shows one card per team, newest first, with how many people answered. For each of the three dimensions you see the average score out of 5, the share who agree (for example "3.6 of 5, 64% agree") and how the score moved since the team's round before. If you can see several teams, "Results for" lets you pick one. Older rounds are one click away with **Show older rounds**.

If fewer than 5 people answered for a team, its card says "Fewer than 5 people answered for this team, so nothing shows for it." Results are per team only, never per person and never a total across teams. No one, admins included, can see who said what.

## Questions the app raises

### Why don't we see results yet?

Results only appear once a round has closed, and only for teams where at least 5 people answered. While a round is open you see nothing, so that watching the numbers move cannot reveal the latest answer. If the round has closed and your team's card says fewer than 5 people answered, encourage the team to answer next time, or ask an admin to keep the next round open a little longer.

### Feedback loops scored lowest. Where do we start?

Start by asking the team what makes them wait. The usual answers are slow or flaky tests, slow builds, waiting for a first code review and waiting for a release. Then check the delivery data that matches: the review wait in [Review](/docs/engineering-delivery/review#time-to-first-review) and the steps in [where the time goes](/docs/engineering-delivery/speed#where-the-time-goes). Pick one wait, shorten it, and see whether the next round moves.

### Cognitive load scored lowest. What helps?

Find out where people lose time understanding things: a confusing part of the code, missing or outdated documentation, or tools that get in the way. Writing down how the trickiest service works, cleaning up the part of the code everyone avoids, or removing a step from a clumsy process are good first changes. Smaller changes also help, because they are easier to understand and review. See [change size](/docs/engineering-delivery/review#change-size).

### Flow state scored lowest. What helps?

Look at interruptions and clarity. Protect blocks of time without meetings, batch meetings onto fewer days, and make sure everyone knows what they should be working on and why. Too much work in progress also breaks flow; see [work in progress](/docs/engineering-delivery/flow#work-in-progress).

### Can I see who answered what?

No. Nobody can, admins included. Each answer only adds to its team's counts, and who answered is never tied to what they said.

### Our score went down. Did we do something wrong?

Not necessarily. A score can drop after a busy release, a reorganisation or when a new problem becomes visible. Treat it as a reason to talk with the team, not a grade. Compare with the team's own earlier rounds, never with other teams.

## Learn more

Sources used on this page:

- Noda, Storey, Forsgren and Greiler, [DevEx: What Actually Drives Productivity](https://queue.acm.org/detail.cfm?id=3595878), ACM Queue, 2023
- [Microsoft Viva Glint, confidentiality thresholds](https://learn.microsoft.com/en-us/viva/glint/setup/quick-guide-confidentiality)
- [2025 State of AI-assisted Software Development](https://dora.dev/research/2025/dora-report/) (pages 15 and 37)

Related Solidafy guides:

- [What is DORA?](/docs/engineering-delivery/what-is-dora)
- [Well-being and burnout](/docs/engineering-delivery/team-health)
- [Code review speed and size](/docs/engineering-delivery/review)
- [Flow of work](/docs/engineering-delivery/flow)
- [Improving software delivery](/docs/engineering-delivery/overview-and-focus)
- [Glossary](/docs/engineering-delivery/glossary)
