Periodically, tech Twitter swells with a discourse I find to be weirdly unproductive: people arguing about developer experience. Does it even exist? Does it matter?
I’m not going to recap the various head-scratchers in detail. But I do want to talk about what developer experience is, why companies invest in it, and what we all get for their trouble.
Spoilers: it's a problem of labor and software economics. A positive developer experience amplifies the return of effort invested building new software products.
The experience of getting things done
Put simply, developer experience is the sum of events that exist between identifying a requirement for a piece of software, and delivering code that satisfies it. Broadly, these events may be practical, emotional or social in nature.
- Referencing documentation to plan an integration of a third party service
- Trying to install tools or libraries necessary to develop against a particular software framework
- Getting frustrated because of an unfamiliar or undocumented design pattern
- Successfully receiving help in a support forum when you get stuck
The practice of developer experience, of being deliberate in its design, is to identify the places of greatest leverage for clearing paths and relieving burdens. The objective is to improve adoption of a technology by making it easier to accomplish personal and business goals with it.
Developer tools: pickaxes in a gold rush
Selling developer tools is a straightforward business strategy. Rather than the risky bet of serving a broad consumer or cultural need, you can build technology that helps anyone who is building software be more successful.
Instead of trying to sell to hundreds of millions of users, you sell to a comparatively smaller handful of companies, typically by hooking their individual developers. If one of these customers succeeds, you succeed along with them, scaling your billings according to the growth of their business.
It sounds great, but there’s always a catch. In this case, your customers become a handful of technologists with a broad spectrum of experience levels and highly specialized needs. Your business success then rests upon a premise that’s easy to explain but harder to execute: making people more prosperous and effective because of your tools.
Leverage within the developer experience domain
How can you make people more successful and effective in accomplishing their goals? If we think of developer experience as the sum of all events between defining requirements and delivering them, we can identify some broadly recurring points of leverage.
Ergonomics and abstractions
Where the fingertips meet the keys, how does it feel to work with your tools? Does integration require painful, recurring boilerplate code, or can developers easily drop in your tools to solve a problem and keep moving to their unique implementation?
Is it easy to debug and inspect the state of your tools at runtime? When errors are thrown by your tools, is log output clear and descriptive, allowing further investigation and social troubleshooting on forums or Stack Overflow?
What is the everyday texture of life with your tool?
Tools that feel good to use obviously earn more loyalty, enthusiasm and word of mouth than tools that grate and frustrate.
Documentation, reference and education
How do people learn to use your tool? Do you provide clear documentation? Recipes? Tutorials?
What references exist for troubleshooting, debugging and discovery of features within your tool?
Thorough reference material makes it easier for developers to get the most out of everything you’ve built.
Community and ecosystem
Is there an active community experimenting and sharing their experiences with your tool? Is there a reliable, active, healthy venue where someone who is running into trouble can get help?
Is an eager community filling in gaps with their own tutorials, plugins, libraries and ergonomic improvements?
It’s easier to roll the dice on a new tool when you know that, should you need help, you’ll find a community that has your back.
Developer experience: the business cases
From these levers, we can identify the business cases for developer experience. In the context of the adopters of developer tools—whether individuals or teams—the question is whether a tool enhances their ability to be successful.
- Does it make iteration cycles faster and cheaper?
- Can you do more—accept international payments, integrate with legacy telephone systems, write code more correctly—with a smaller team and less effort?
- Does the tool limit everyday friction for accomplishing work, allowing more work to get done?
In a software production context, developer labor budget is among the costliest resources a business has to manage. Any tool that allows a business to get more for that budget is creating serious impact.
For purveyors of developer tools, the business case becomes clear as well. Success depends on adoption. You can improve adoption by addressing points of friction in existing developer workflows, and by making your tool’s experience more positive and productive than frustrating.
This doesn’t have to be hard
When we’re talking about developer experience, we’re talking about real things:
- How people feel when using tools and making software
- How effective they are in meeting their goals
- How these factors converge into amplified productivity versus wasted effort
- What leverage exists in your strategy to shift that balance more and more toward success for individual practitioners and businesses that might pay for your service
Developer experience is a process of shifting the economics of building software to be more favorable for every dollar or hour invested. There's a lot going on there, but conceptually, this doesn't have to be that hard.