The Developer Experience formula
It took a long time to shift the mindset of the software industry to be user-first. The rise of a product-focused mentality and product management best practices helped a great deal in pushing this forward.
But when the users are developers, all these decades of established processes are suddenly thrown out of the window. Why?
Good developer experience is not a luxury; it is a necessity.
It should be easy
All you have to do is put yourself in the shoes of your users, aka fellow developers. How hard can it be, right? You are working in the same industry; after all, it's not like you have to start roleplaying as a marketing executive or a medical professional.
It turns out it's not that straightforward. Not every developer's needs are the same, and not every developer requires the same amount of guidance.
You don't want to overload your users by throwing every possible resource about your product at them all at once. Think of their use case as a journey. A journey usually has a beginning and an end. The start is probably more interesting for you, so take some time to think about it. Where does your user's journey start?
Most developers have problems they need to solve, and they usually want to use the best existing tool for such issues instead of rolling out their self-baked solution (hopefully — right, folks?).
- How can you find developers struggling with a problem that your tool solves?
- Why is your tool the best solution for such a problem?
- How do you get the potential user to try out your tool?
By answering some of these questions — and coming up with more — you will already start seeing the mistakes you are currently making; if not, let me introduce you to a few common ones.
Common mistakes
No free trial
One of the core motivators of software engineers is exploration, which often includes playing around with new tech. For most of us, it's what sparked that initial interest when we started hacking on things.
Suppose you think your amazing sales team will be able to influence the “decision-maker”, which in your eyes is not part of the group of developers that will use your product. In that case, you underestimate engineers' power in modern product teams.
Bad documentation
In the age of many excellent frameworks that help you write (or generate!) documentation for your product, if you lack in this, your product will not even get considered when evaluating solutions for a technical problem.
As you very well know, developer time is one of the most expensive resources in a company. If the team has to spend most of it on figuring out HOW to use a product and navigate the edge cases (there are always edge cases) they bought or want to buy, you are in great danger.
Also, if your business model revolves around providing “enterprise-level support” in lieu of proper documentation, you can fuck right off.
No community support
This might be a little more controversial when talking about tech products — especially if you still have the image of an antisocial hermit if you think about developers — but the community was always at the core of software engineering. Think mailing lists, demogroups, and hackathons, or realize that the whole idea behind the internet was to make it easier for people to connect and share information.
You don't have to create a community, but make sure you do your best to enable the creation of one and support and nurture it to your best abilities — the members will be your best friends in business development. These circles are excellent for business referrals, technical support, etc. You can get all these benefits just by showing up.
Not preparing for software engineering practices
Software Engineers have decades of battle-tested, proven practices like testing, version control, and so on. Suppose you fail to accommodate your product into these processes. In that case, your tool is destined for replacement as soon as another comes along that does the same on a technical level (or maybe even less) but has a built-in mechanism that enables developers to use their existing, comfortable git workflow properly.
What problems does good developer experience solve?
Business 🤝 Tech
There are a lot of business cultural issues that can be mitigated by implementing good developer experience, like the age-old disconnect between technology and business departments — a buy-in from management combined with a product that is horrible to use will only contribute to this.
On the other hand, if both departments are happy, that accelerates collaboration and productivity even more! If your product can enable this in an organization, you can claim this as a win for yourself.
Tangential opportunities like this make focusing on developer experience worth it, but arguably harder to reason for as it can be complicated to quantify the return on the investment.
Product-Market Fit
You are the product; developers are the market. Do you really fit together if they hate you? How long will you be able to satisfy your users if all they think about is how great their life would be if they went with a competitor product instead of you?
You are probably not IBM; you won’t lock in corporations for hundreds of years. You are more like a library in a programming language that will get swapped out for the next one if the developer gets annoyed enough or the competition catches up in features (it will happen!) while providing a smoother user experience.
Unbundled architectures
Modern systems are comprised of many components, which are usually provided by tools/services such as your product. Software teams nowadays keep component exchangeability in mind when they architect new systems because the ecosystem changes so fast that they don't want to get stuck with something that will be deprecated before they make it to release day. Think of it as future-proofing; instead of paying for professional support in the following years, it's easier to find a compatible, better alternative and make the switch.
You might not like this, but it is an opportunity for you to position your product as the best alternative to something that has become slow/unsupported or simply new tech built on modern foundations has left it in the dust.
Software only grows. It's the nature of the industry that systems become uncontrollable behemoths.
If you can convince the developers that if they change one piece of their architecture to use your product because it's not just compatible, it's easier to use and better in every way, you're in!
Exercise for the reader
As a thought experiment, try to come up with two lists; one with tools/APIs/websites/whatever you distinctly remember having fun using and one with products that resulted in the opposite.
Think about the exact things that made you have a specific reaction when using those tools and after collecting a few, see if your product has or misses these
Member discussion