An Attempt at Outlining the Many Factors Influencing Developer Experience
Published on Sep 6, 2022 (updated Oct 14, 2024), filed under development (feed). (Share this on Mastodon or Bluesky?)
When looking at DX naively, it can seem that it depends on only one factor. Alex Russell recently pointed at this problem when ranting about improving the developer experience of the JavaScript ecosystem by âretiring this language.â But here and elsewhere, is DX only DX(x) (really: DX = Ć(x))?
No, itâs not. Of course itâs not. Developer experienceâDeveloper Experienceâdepends on many factors. Hereâs a quick attempt at sketching just what factors, each of which can tip the scale. Iâm breaking these down into extrinsic and intrinsic factors, because it seems indefensible to assert that an experience only depended on external circumstances. The experience of someone whoâs highly motivated is different from someone whoâs sliding off the chair.
Iâm using the term âproductâ to denote what the developer would make an experience with. This can indeed be a product, like a tool or service an engineer would use or implement, but also a specification or even a language.
Extrinsic Factors
[Iâve reworked this section, playing with the rough general areas of (technical) quality, usability, and community. Please share your thoughts!]
- Contextâthe general product ecosystem with its use cases, languages, software, and people
Quality
- Standardizationâprocesses around and reliability of the underlying technical standards
- Language(s)âthe programming, document, or formatting languages used and their syntaxes
- Code qualityâthe objective and subjective elegance of the public-facing technical portion of the product in general, and of examples specifically
- Maintenanceâcontinuous improvements in and around the product ecosystem
Usability
- General usabilityâa realistic chance to actually use what needs to be used
- User experienceâthe experience provided to users of the product and its ecosystem (overlaps with the developer experience)
- Documentationâany records of how to work with the product
- Tutorials and guidesâhand-holding to start and keep working with the product
- Content qualityâcompleteness, correctness, grammar
- Formattingâreadability and consistency of production, research, and sample code
- Aestheticsâan appealing-enough presentation (of key documentation and tooling)
- Sample projectsâready-to-use examples
- Toolingâprimary or secondary (supporting) software to work with the product
- Automationâspecial tools and scripts to assist or supersede certain tasks
- Integrationsâsoftware that allows to work with the product in other software (like IDE support)
- Self-service functionalityâthe ability to use the product without help or intervention
Community
- Communicationâreliable, respectful, and constructive messaging from product and tooling providers as well as the community
- Supportâpeers and organizations actively interacting with and helping each other
- Developer Relationsâdedicated developer outreach
- Marketingâknowledge that the product exists, and desire to use it
- Peer groupâsufficient acceptance (or lack of detractors) within the peer group
- Organizational pressuresâthe organization asking to use the product
- Organizational (and engineering) cultureâthe developerâs professional environment, including corporate expectations, team health, work/life balance, &c.
- Market pressuresâthe market asking to use the product
- Privacyâfew to no user or usage data being collected, let alone sold
Intrinsic Factors
- Knowledge and experienceâempirical or previous conceptual exposure to the product
- Motivationâeager to learn, or forced to do âa jobâ
- Resilienceâcan deal with obstacles, or gives up easily
- Philosophyâlike pragmatic, ambitious, or quality-oriented
â§ Recall the theory: Any of these factors changes the developer experience.
And recall the premise: This is a quick shot at DX factors, to fend off the idea we can fix it by changing one single thing. We canâtâmost likely, we need to fix more factors. And then it may still be broken by another. Developer Experience needs to be approached holisticallyâfor itâs much more complex than just DX = Ć(x).
Many thanks to Thomas Steiner and Francesco Sciuti for reviewing and sharing feedback on this post.
About Me
Iâm Jens (long: Jens Oliver Meiert), and Iâm a web developer, manager, and author. Iâve been working as a technical lead and engineering manager for companies youâve never heard of and companies you use every day, Iâm an occasional contributor to web standards (like HTML, CSS, WCAG), and I write and review books for OâReilly and Frontend Dogma.
I love trying things, not only in web development and engineering management, but also in other areas like philosophy. Here on meiert.com I share some of my experiences and views. (I value you being critical, interpreting charitably, and giving feedback.)