loading...
Cover image for Developer eXperience. How I missed it before?

Developer eXperience. How I missed it before?

stereobooster profile image stereobooster ・1 min read

Recently I learned the term "developer experience (DX)" and it is like lightning strike. I thought about this thing a lot but didn't know how it is called. I referred to it as usability, UX for developers or ergonomics, for example, in my recent post Developer is the next blue collar job.

I wonder how I haven't heard about it before? Under which rock have I been leaving? So I did quick internet research: some people are talking about designing API or about tools, like editors, or about UX vs DX. The most useful thing I got from my search, so far, is the slogan: developer experience -  developers are people too.

It seems there are a lot of things yet to be discovered and formalized. It is a green field. I already have some ideas on the subject, and preparing some articles, but I'm learning myself and open for suggestions, ideas, advices. What would you consider part of DX? What should I read/watch to know more about DX?

Photo by Joanna Nix on Unsplash

Posted on by:

stereobooster profile

stereobooster

@stereobooster

Hello, I'm a full stack web developer. Follow me on Twitter!

Discussion

markdown guide
 

I love thinking about it, after working on SDKS for a large part of my career. I wrote up everything I learned here. Please, have a read and let me know your thoughts.

 

Thanks Sam, I loved the article and learning, great write up. Thanks for sharing

 
 

Developers can also be the users, as we are using specific tools for our jobs, and those who develop that tools should consider us as an end user, right?
I don't see the reason for the whole new branch of design.

 

Well yes and no. Yes, developers can be end users, for example, GitHub users are programmers and here all will be the same. But if we talk about best practices of designing APIs, frameworks and programming languages, which is also DX, this is absolutely stranger subject for traditional UX.

 

I recently found October CMS, a PHP web framework explicitly created for developer experience. It is such a pleasure to work with, really a breath of fresh air for a CMS to be developer-first.

And the thing is, if a tool has a nice developer experience, it's easier for the developer to make the product better for their users,tailored for their needs. In contrast, a user-focused product either assumes knowledge about the user, and developers have to fight it to work with the nuance of their specific case, or else it has every conceivable feature to account for everyone, and becomes overwhelmingly complex.

 

I came across this idea recently when Alex Bolboaca, in his presentation at the Software Craftsmanship London Conference 2018, pointed out that when you are designing the internal architecture of your software then the "users" of that design are the developers and maintainers of the software. He then went on to ask how, given that perspective, we might usefully apply some of the well-established principles of UX to our software designs in order to ensure that these users have the best experience. E.g consider Nielsen's five components of usability: Learnability, Efficiency, Memorability, Errors, Satisfaction. Does your design optimise for these considerations?

 

Parts of Developer Experience:

  • Sign up and login to your platform
  • Documentation (access, clarity, ease of use, realistic example use-cases, etc.)
  • Ready made libraries, examples, etc.
  • Issue tracking systems
  • Feature requests
  • Support
  • Clear vocabulary

If you're providing code, frameworks, libraries and such:

  • Code quality
  • Error handling
  • Good public APIs (function signatures make sense, arguments make sense, ...)
  • Naming
  • Genericity (is that a word?) - working nicely together with other tools
  • Docblocks etc. that allow IDEs to work great
  • Not depending on black magic that confuse IDEs
  • Easy testability
 

It’s funny how a simple vocabulary addition can really help one develop a helpful mental model.

DX is a thing whether or not we have a word for it, but it is a really fascinating space.

 

It’s funny how a simple vocabulary addition can really help one develop a helpful mental model.

Same. I had a similar lightning strike moment when I first heard the term. Trying to dig into anything I can find on the topic now. I know this comment is almost a year old, @ben , but has DEV is mostly (if not completely) open source. Have y'all been writing anything internally about DX that you can share?

 

API design and using Hypermedia As The Engine Of Application State (HATEOAS). Self documenting API's are much easier to work with, and can make a developers life much easier.

This is the optional part of creating a RESTful API, and in my experience is often not implemented.

 

I feel like anything DevOps-related is good DX material.