May 24, 2025

A response to Programmers Are Users”

https://www.rfleury.com/p/programmers-are-users-bad-performance

I thought this was a really well written piece describing some of the unforeseen consequences of optimizing toward DX. If you haven’t read it, read it.

I’m someone who, to his dismay, spends a great deal of time building software for businesses which have accepted the exact tradeoff Ryan is describing in his post. While I’m proficient in Rust and other lower level languages, almost all of my lifetime development income comes from full stack Typescript”. Node, React, React Native, and so on. Languages and frameworks instrumental in the enshittification of the digital landscape.

React Native

For those of you who don’t know, React Native is a JS-based mobile framework which essentially sits atop a native mobile app. When the mobile app runs, it spins up a React app inside of the phone’s JS runtime. However instead of updating a DOM, it sends VDOM updates across a bridge to the native layer, which updates the UI.

This is a gross oversimplification, but React Native is a perfect candidate for understanding the tradeoff between performance and DX. The tradeoff here can’t be understated. From the business perspective, React Native enables you to write a mobile app as a React app instead of breaking out multiple codebases in Swift and Kotlin. You can quickly adopt webdevs to your mobile project, and have them build business-effective, moderately well performing mobile apps.

And on the other side, React Native runs into some real, magnitudinal performance issues. RN binaries are usually many times larger. And your mobile app is now running inside of a Javascript runtime instead of the near native Swift/Obj-C runtimes. There are extra steps in the build process; every significant library has to be implemented in both native layers - essentially a sort of symlink between node_modules, cocoapods, and gradle. (Just in case you thought webapp dependencies were bad.) Certain features, such as lists and animations, can be much slower. And in general, the UI less performant.

However it must be said that mobile development is hard and expensive. Developing even a simple mobile app without any best practices will cost a hundred thousand dollars. And when you account for design, feature flags, APIs, infrastructure, builds, tooling, QA, and deployments, it’s usually in the millions. An entry-level React Native developer’s salary is about $80k alone, and good luck finding one at that price who can architect everything with best practices. And that’s to say nothing of designers or product managers.

But usually app development costs much, much more. I’ve worked for two different Fortune 50 healthcare companies, both with mobile development teams in the tens of millions of dollars of salaries per year. And if you were to look at those mobile apps from a UX and design standpoint, you would be hard pressed to see where that money is spent. Tens of millions of dollars every year for what is essentially a CRUD app - a mobile view of a website. This isn’t their fault, this is the true cost of development.

Business development is often hanging by a thread

The situation I described - an enterprise company spending $15m a year in perpetuity for a CRUD app - is already the best case scenario for DX-based cost accounting. These apps are in React Native, architected by smart engineers to make everything as reusable as possible. That $15m/year is a highly commoditized.

What then, would it look like if instead of hiring highly commoditized React developers, they had to hire separate specialist teams to implement - and ensure parity - with iOS and Android? Would the cost center’s budget double? Would there be any guarentees of actual performance benefits? Would the company’s bottom line improve? Would DX actually improve for those respective teams? Would doing this result in the actual reduction of enshittification?

The best-case answer for all of those questions is: probably not.

The cost of accessibility

What good programmers often fail to account for is bad programmers. While it’s true that in sophisticated environments, over-abstracted tooling leads to computational inefficiencies which sort of taints the water supply. But to counter that over-abstraction, larger budgets isn’t always the solution; you also need more talented developers. In other words: these hyper-DX-accessible tools like React Native enable an entire class of developers and products which might otherwise not exist.

What has happened (not quite, but it illustrates the point) is that instead of good developers switching from low level tools to high level tools, new developers picked up those tools and the good ones stayed where they were. A lot of non-technical businesses have spent the last two decades paying the price of this. They’ve assumed that development is something that they can muscle with capital, where three $60k devs is the same value as one $180k dev.

It will take 1 engineer 1 month to complete the project, and 2 engineers 2 months to complete the project”

During the peak of the engineer hiring craze around 2022, I’d say 50% of the developers I interacted with had no business being developers. I don’t mean that as a sort of personal attack against them, market forces and all, but rather that if companies refocused on quality and intentionality, and stopped modeling their development teams like factories, they would be closer - or at least no further - to achieving their target outcomes.

But talented developers are still very rare, and very costly. And non-technical companies have no way of hiring for them, or truly separating the wheat from the chaff. Even FAANG struggles with this. So they use staffing agencies - again, balooning costs and skewing organizational alignment. Or they give up, and treat their digital portfolios as a cost center all the while trying to deliver a minimum viable product.

Quality over quantity

There are reasons for the enshittification. But despite all of those reasons, I still agree that system performance should be more important. It should be a cultural issue for developers, and perhaps for businesses too. It’s sad that we’ve offset the last two decades of Moore’s Law simply to ship products faster. And as Ryan mentioned, even that isn’t a success story. I often point out to my gamedev friends that World of Warcraft’s netcode from 2010 is better than anything since.

Since 95% of software projects don’t last a decade, it seems like companies have plenty of wiggle room to be more deliberate in what we’re building anyway. Many of these projects and their wasted resources are the result of over-accessibility of development.

It certainly feels like the internet is overcrowded and bloated with low-quality content, whether that is from content creators within platforms, or the platforms and products themselves. If not us, then who will stop the enshittification?



Copyright Nathanael Bennett 2025 - All rights reserved