Improving Developer Experience

Understanding which aspect of an engineer's life feels most painful is an important input in determining which feedback loops to investigate and address. The approach is very different when the CS team is overloaded with customer bug reports versus when the engineering team is frustrated that it can't ship code fast enough.

There are three main types of feedback loops:

  • Quality - all the flows that engineers use to make sure they are building code that meets the requirements of their customers
  • Delivering code - all the flows engineers use while writing and modifying code.
  • Process - all the checklists or meetings engineers are required to attend as part of their job responsibilities

Each category has its own set of feedback loops that can be evaluated and optimized to improve the effectiveness of the team. Below are examples of common loops across each category.

Quality Feedback Loops

Writing a new testThe ability for engineers to write and run tests to make sure their code works (unit, integration, end to end, etc)
Code reviewsCode reviews are a mechanism for engineers to review each other's code for a variety of concerns (quality, security, design, etc)
Responding to pageHow effectively an engineer is able to troubleshoot a service

Delivering Code Feedback Loops

Common IDE/CLI commandsThe list of most commonly used IDE features and CLI commands (commit, ide autocomplete, linting, hot-reloading)
Finding documentationAbility for engineer to jump into code and understand what is happening well enough to start changing it
Building a serviceHow long does it take to build a service
Creating a new serviceHow long does it take an engineer to create a Hello World new service
Deploying a changeOnce a change is ready, how quickly can a engineer deploy it to customers

Process Feedback Loops

PostmortemsThe system your team uses to make sure your learn and prevent serious incidents from happening again
Agile/ScrumThe regular rhythm your team uses to plan, reflect and status on the work it produces
Onboarding to a new teamWhat does a new hire or an engineer switching teams need to do to become productive
On-callWhat process does your team follow to address unplanned critical incidents that affect the team

Optimizing feedback loops

Optimizing feedback loops to improve productivity typically follows its own loop:

  • Catalog all your existing feedback loops with an understanding of their frequency, latency, usability, and purpose.
  • Create a prioritization framework that weighs these factors in a way that is consistent with your values and culture.
  • Create an action plan to prioritize.

Remember that sometimes, the right choice can be to remove the loop altogether. For example, if you have a centralized approval committee that requires every engineer to present a design for every new change, evaluating and measuring whether this process loop is accomplishing its purpose and worth the ROI is important.

Loops are important to analyze and measure because many of them are frequently overlooked. It’s very tempting to ignore and delay indefinitely working on slow build times and continue to prioritize new features instead. Over time too many poor loops can lead to the feeling of death by a thousand cuts.

Finally, it's important not to only rely on hard metrics. No matter how thorough and thoughtful you are with collecting metrics, it's critical to capture qualitative feedback to avoid blind spots or incorrect assumptions in your framework. This can be done through surveys, 1/1s, retrospectives and exit interviews.

Creating a culture of optimizing feedback loops

It’s easy for management to get disconnected from the pain induced by feedback loops because by definition, the more senior a manager is, the more removed they are from having to deal with loops, and the closer they are to the pressure of delivering new code.

Great managers are able to create systems to stay connected to the pain and build a culture where feedback loops are continuously surfaced, prioritized and improved.

Example Metrics

Metrics are useful for trending at the team or organization level

MetricWhen to use
Deploy TimeHow long does it take to Deploy a change to production
Tooling LatencyHow long do developer laptop commands take to run for local build, test, etc
Time to resolve incidentHow long does it take to resolve an incident
Edit this page on GitHub Updated at Tue, May 24, 2022