What makes for good DX?

DX = UX for developers.

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

Good user experience (UX) leads to satisfied and loyal customers, and investing in UX can provide a significant return on investment for software products and services. While any experience is about how individual minds perceive the product, some common measurable traits create that experience.

In the case of UX, these traits determine if the product is usable, useful, credible, accessible, findable, desirable, and valuable.

Organizations that create products, services, or tools for developers, focus on improving the UX for users who are developers. Hence we refer to it as DX. Thus we have:

DX = UXDevelopers

DX = UX for developers.

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

Good user experience (UX) leads to satisfied and loyal customers, and investing in UX can provide a significant return on investment for software products and services. While any experience is about how individual minds perceive the product, some common measurable traits create that experience. In the case of UX, these traits determine if the product is usable, useful, credible, accessible, findable, desirable, and valuable.

Organizations that create products, services, or tools for developers, focus on improving the UX for users who are developers. Hence we refer to it as DX. Thus we have:

DX = UXDevelopers

While the contributing traits for DX are similar to UX, their interpretation is different given the more technical and analytical personas of software engineers, the difference in how they interact with tools, and the impact of their work. Some key differences between user and developer processes are:

  1. Developer journeys are often longer and more complex, requiring continuous interaction (and often repetition) with the product, while user journeys are considerably shorter—for example, the journey of creating an e-commerce app vs. ordering using the app. Developer journeys are also more complex as other factors such as requirement/design changes or dependencies on other developers and software cause deviations from a set path.
  2. A combination of tools is involved in the developer journey and not just a single app. Typically web developers use a server, framework, languages, IDE, and browser installed on their local machine. Additionally, they may use other tools such as third-party libraries, bundlers, test frameworks, performance tooling, and others. These products should work in tandem to reduce friction.
  3. New concepts and upgraded tools or frameworks become available regularly, and developers often expect to understand, evaluate and apply them in a relatively short time frame.
  4. The end-product created by the developer is likely to affect more people than the result of a typical user using an app for personal reasons.
  5. End-users typically go through a solitary experience when using a product. Developers are usually part of a larger team where every team member's perception can affect the overall experience. In other words, it's a multiplayer experience instead of a single-player experience.
  6. DX is usually built for users who are experts/professionals at using technology, while UX targets the general population, often people with little technical background.

 

Optimizing DevEx is about creating a collaborative environment where developers can be their most productive, impactful, and satisfied.

C = Collaboration, the multiplier across the entire DevEx.

Optimizing DevEx is about creating a collaborative environment where developers can be their most productive, impactful, and satisfied.

C = Collaboration, the multiplier across the entire DevEx.

GitHub’s DevEx formula takes into account:

Applying UX Characteristics to DX

Despite the differences between UX and DX noted above, key UX characteristics may be adapted for developers and development tools.

UX principle Interpretation for DX Examples
Usable

- Implies that the product is user friendly

Tools are simple and easy to install, set up, and use.

Tools are efficient and can give results in a minimal number of steps.

High performance on dev environments

APIs and tools are intuitive.

Visual interfaces are consistent.

Clear documentation

Simple registration process.

Configurable with set defaults

Intuitive menus

Fast build times

API functions and parameters are named clearly indicating their meaning.

Zero downtime

Getting started guides

Code labs

Credible

- Implies that users can trust the product

Reliable, predictable and consistent behavior.

High availability for web-based tools.

Stable versions with minimal errors. Security of application code and data.

Sustainable in the long-run.

Backward compatibility

Deprecation warnings

Secure access

Long-term support roadmap.

Findable

- Implies that the product can be easily discovered

Strong community support

Easy to find specific functionality or help.

Discussions on forums

Help with errors and integrations.

API ToS and privacy policies

Live examples for use cases

Useful

- Delivers beneficial functionality to the user

Ability to perform core functions

Features to support developer use cases

Scalability

Takes care of common use-cases

Debugging tool should allow breakpoints.

A language should support different features such as arrays, functions, events and others.

Boilerplate code generation in an IDE

Valuable

- Provides value to the business.

Reduces friction for developers.

Lowers the amount of time wasted in resolving environment-related issues. Enhances productivity by reducing context switches and frustration.

Includes built-in expertise or best-practices

Automation of menial tasks. CI/CD pipelines.

Built-in guidance through opinionated tooling.

Accessible

- Available to users with different abilities or disabilities

Accessible to different types of roles.

Users with different preferences for their work environments can use it

Command Line Interface, Command Palette, Language settings,

Accessible navigation,

Dark mode, Accessible color scheme

Desirable

- Product image and branding are desirable to users

Best-in-class technology

Reasonably priced

Reputed and known technology brands

Integrates with modern frameworks and tools.

Available on-cloud.

Open-source

In your research on DX (or UX), you might find a different set of characteristics or hierarchy being used to define core DX principles. The following is an example from the web.

Source: Zeno Rocha - CEO, Resend

Every approach has its merits. For the purpose of this book, however, I will use the seven characteristics discussed previously to guide the implementation and measurement of a DX strategy.