Introduction

 

As developers, we spend a lot of time creating user experiences (UX) that provide value to our customers. Ideally, these experiences are so good that people want to keep using them. Like customers, developers also appreciate when the products they work with are reliable and easy to use.

Think about it - in an age of APIs, developer tools, and developer platforms - you want to make it easy for developers to find the right path to success. Put another way, developer experience (DX) can impact customer experience. DX provides an early opportunity to those building development products to set the developers (and their customers) up for success. After all, developers are users too and are significant drivers of business value.

Like consumer products, we want developer experience to be good enough that developers keep using our tools, building on our services, and relying on us to help power their stack. This experience has to be positive. When we think about UX, it's often in the context of completing a user task (e.g., sign-in, add-to-cart, search). With DX, it's a little different.

When developers are presented with multiple similar development tools, they will likely evaluate them based on various parameters. It's about the usability of APIs, documentation quality, estimated development speed, production readiness of the platform, their understanding of the architecture, maturity of the ecosystem, and the ease of debugging when things go wrong.

During my time at Google, we've had to think about the DX design for our Developer Tools, APIs, and services. I've been closest to this through our work on the Web and Chrome. This has taught me that through DX, we need to think about not only how developer products will enable solving problems for customers, but also how they'll help developers solve their development problems. After all, developers are users too and are significant drivers of business value.

DX is a really fascinating field that is still evolving. Similar to UX, there often isn't a one-size-fits-all set of ideas that will apply to every situation. That said, in this book, I hope to share a few ideas on how to think about DX, its relationship to UX, and other related aspects such as developer productivity. I hope you find it useful!

Definition

So, what exactly is DX?

Developer Experience (DX) is all about how easily and effectively developers can get things done. It is the experience developers have when using tools and services to analyze, build, test, integrate, deploy, and maintain software.

Developers use different tools, interact with people, and participate in various software engineering processes daily. These interactions leave diverse impressions of their work environment and the tools they use. DX is the aggregate of how developers perceive their work environment and how they are affected by it in turn.

Good DX is reflected in clearer thinking, greater productivity, and enhanced efficiency among developers. It boosts the speed at which developers can work and aligns closely with business objectives. DX design involves crafting tools, APIs, and workflows to provide an exceptional experience for developers.

  • Don't underfit. Don't overfit.
  • Make errors your priority.
  • Embrace the fundamentals.
  • Make it for everyone.
  • Make it timeless.
  • Make it fast.
  • Market it.

 

Let's get on the same page

Terminology

Here is a glossary of terms we'll be using in the book for quick reference.

User experience (UX)

The overall experience of people using a product, system, or service based on their perceptions of its utility, ease of use, and efficiency.

Developer experience (DX)

The experience developers have while using tools and technologies to analyze, build, test, integrate, deploy, and maintain software. It is UX for users who are developers.

Developer satisfaction

The extent to which developer needs and expectations are fulfilled when working in a specific job role and towards a particular goal.

Developer productivity

The ratio of work done by a developer or team as compared to the progress made towards achieving the business goal, such as advancing the overall quality of user-experience to drive more conversions.

Developer success

The result of anticipating developer challenges and proactively providing solutions and documentation to help them be successful in their roles.

Developer journeys

The sequence of steps that developers follow to accomplish something using one or many products and their interactions along the way.