|<<>>|28 of 293 Show listMobile Mode

“Developer experience” is rarely a requirement

Published by marco on

Updated by marco on

The article Some notes on Local-First Development by Kyle Matthews (Bricolage) focuses on a very good trend in app development, but focuses a bit too much on what he calls DX, or developer experience.

“I see “local-first” as shifting reads and writes to an embedded database in each client via“sync engines” that facilitate data exchange between clients and servers. […] The benefits are multiple:”
  • Simplified state management for developers.
  • Built-in support for real-time sync, offline usage, and multiplayer collaborative features.
  • Faster (60 FPS)
  • CRUD
  • More robust applications for end-users.

I don’t want to read too much into it, but he did mention end-users only in the last bullet point.

I think the author is focusing too much on the tech and too little on the value. DX is great and all, but it’s about the UX, no? Every app would benefit from realtime updates if it’s cheap and easy to build. Almost every app is multiplayer, if you think about it a bit.

“For almost any real-time use case, I’d choose replicated data structures over raw web sockets as they give you a much simpler DX and robust guarantees that clients will get updates.”

No, my friend. You’ve come to the right conclusion for the wrong reason.

If the tech is solid, if it doesn’t negatively influence debuggability or traceability, if it’s predictable, if operations can be correlated, if you don’t end up limiting your functionality to fit the framework—then go for it.

What I mean is that it’s important that the thought process that leads to the correct conclusion serves all stakeholders. If you’re only doing things because they’re better for developers, then, eventually, you’re going to be deciding against the users.

 Be aware of the trade-offs, and be sure all of the stakeholders can live with them. What does good DX translate to for other stakeholders? Easier maintenance? Less complexity? Easier onboarding? The DX is really mostly secondary unless you’re making a framework, in which case it might matter. No-one cares about DX for real-world products. I love good DX, but I’m a developer! As a developer with a lot of experience, I’m forced to admit that it’s not at all a primary goal. Having good DX might lead to other desirable things, but that doesn’t make it directly desirable. Don’t forget that.