swyxio / swyxdotio

This is the repo for swyx's blog - Blog content is created in github issues, then posted on swyx.io as blog pages! Comment/watch to follow along my blog within GitHub
https://swyx.io
MIT License
336 stars 45 forks source link

Developer Exception Engineering #333

Closed swyxio closed 2 years ago

swyxio commented 2 years ago

source: devto devToUrl: "https://dev.to/swyx/developer-exception-engineering-4jfo" devToReactions: 60 devToReadingTime: 6 devToPublishedAt: "2020-08-15T17:20:15.608Z" devToViewsCount: 1467 title: Developer Exception Engineering subtitle: Managing Developer Experience off the Happy Path published: true description: It's time we look beyond the easy questions in developer experience, and start addressing the uncomfortable ones. tags: DX slug: developer-exception canonical_url: https://www.swyx.io/writing/developer-exception cover_image: https://dev-to-uploads.s3.amazonaws.com/i/87bsgzkj9jrftxhgxil9.png

We need to have some real talk around what we are calling Developer Experience (DX) at developer-focused companies.

It's not well defined, although Chris Coyier has done a good survey of what people think of when they hear the term, and others try to define Developer Enablement. It's a differentiator among devtools, so of course it is professionalizing, and creeping into job titles (my last job title was "Developer Experience Engineer", whatever that actually means). I fully expect this to develop into a fullblown sub-industry, with conferences and thoughtleaders and gatekeepers and the like (right down to "Dev Advocate Cofounder").

"Developer Experience"

Here are some things that companies traditionally work on when they "work on DX":

I'm not at all saying these things aren't important. They're even hard to do well, and fully deserve specialists in their own right. These foundational pieces of developer experience should also be fast and intuitive to the point of guessable.

"Developer Exceptions"

But I'm also saying that developers, when they use our products, experience many other things which aren't traditionally the domain of "DX people", because they have to do with core engineering and product promises:

Causes

Of course, none of these are new problems, and well known to product management. The problem is mostly organizational - as "developer advocacy" as a discipline evolved from "developer evangelism" (going from a "1 way street" to a "2 way street"), it is now evolving to "developer experience". I see a troubling organizational limitation of DX folks, defining DX to the stuff that focuses on increasing "top of funnel" growth (reducing friction, growing awareness, an endless parade of copycat short term growth hacks) - and having comparatively a lot less impact on the "bottom of funnel" stuff (logo churn, satisfaction scores, account expansion/customer success). There's little sense making more rain when faced with a leaky bucket.

Conway's Law is an eponymous law that states that "organizations design systems that mirror their own communication structure". Steven Sinofsky's snappier definition is "don't ship your org chart". We need to be careful about the consequences of letting Conway's Law apply to Developer Experience.

Alt Text

Engineering for Developer Exceptions

To be clear, I don't really know how to do this yet. I am just thinking out loud. But my intuition is that in order to design exceptional developer experiences, we should pay more attention to developer exceptions. As DX people, we've focused a lot on try, perhaps we should take a good look at catch.

The first thing to fix is organizational incentives. DX work must not just feel welcome, it must be demanded and good results rewarded. Nobody wants to feel like they are adding weight onto an already overloaded backlog. Most orgs are set up in a way that lack of feedback isn't noticed when it isn't given, and feedback when given feels like additional burden. This is, unsurprisingly, not conducive to feedback.

The second thing is to establish invariants around your core developer experience and automate monitoring and reporting of these to the fullest extent possible. Tools that hold the line are incredibly powerful. To progress, you need to first stop regressing.

My last thought is around helping PMs and EMs create DX, rather than taking primary responsibility. If you're sending in PRs and design docs yourself, you are probably doing too much of someone else's job and will be ineffective and/or resented. Better to provide them the information they need to make decisions and be available for opinions and instant feedback since you represent the end user. It is common for there to be an infinite list of small things to do - and that is very hard to sell internally - so how can you bundle these up into thematic projects, motivate engineers, and carefully communicate progress to the wider world?

It's time we look beyond the easy questions in developer experience, and start addressing the uncomfortable ones.

Note: This is my own thinking sparked by a third party conversation, and I am not speaking on behalf of my current employer.

More on this