You're not stupid for using a framework, and nobody has pulled a fast one on you. https://seldo.com/posts/the_case_for_frameworks
The case for frameworks

Today I read Alex Russell's post The Market for Lemons and I found myself compelled to write a rebuttal. I am a big fan of Alex's work in general but not of this post in particular, which is very long, so allow me to attempt to summarize it

@seldo economics indeed but the changing storyline is also well documented (yes that's grifting!)

And also ppl need to know how HTML/etc work in order to use React not the other way around.

@brianleroux I do not think everybody is using React because Guillermo is just really, really persuasive.
@seldo I didn't say that did I?!
@brianleroux I just don't think any grifting is involved. People are choosing what works for them.
@seldo well they're definitely being deliberately misleading to a large audience of less experienced devs (not just one individual either) and to me that's not professional behavior whether it works for them or not. Which, given the outcomes esp in performance and a11y: not working actually. Not an opinion these are all super well documented claims.
@brianleroux I just don't believe it. I don't think they're being deliberately misleading. I don't think devs, experienced or otherwise, are being misled. The outcomes in performance and accessibility are unfortunate by-products of capitalism and not because people are dumb.
@seldo I don't think anyone is dumb given how long it's been going on they definitely are aware of the outcomes. Like nobody is using the Nintendo eStore or Home Depot or any of the other innumerable bad web experiences we all suffer daily thinking "wow this great professional work". They absolutely know the outputs are garbage and they sell it as otherwise usually justified by the lie it's necessary because it's popular.
@brianleroux Again, I simply do not believe any of that is true. The people who produce those web experiences are doing the best they can with the resources they have and are not justifying it because it's popular, they know it's the best they can do in the time they've been given to do it and the number of colleagues they have. I don't need to assume ill intent to explain what I'm seeing.

@seldo I'm not blaming devs and agree ppl are doing the best they can w the information they've got. They are being mislead, again that's clearly documented, and it's way past time we stop excusing unprofessional outputs.

It's ok to expect better, and do better by web consumers and creators alike.

@brianleroux @seldo I understand your perspective and agree Alex's article can be read as aggressive (though I didn't take it as calling developers stupid).

However, I think you recognize and then undersell the impact of momentum/network effects. We trained/hired lots of new devs in the last decade and many only ever learned React. I've met folks who don't know how to build web sites without it or who used it on large projects where it was wholly unnecessary because they thought they had to.

@remotesynth @brianleroux The economics of the situation you're describing is: they don't have time to learn some other way. It's the same effect described differently.
@brianleroux @seldo momentum can be incredibly difficult to shift. Developers faced with having to relearn skills. Companies faced with having to rebuild expensive projects. All of those economics play into the current state of affairs as much or more than individual developer time. I think you make good points but overestimate these choices being made on how fast it makes devs. I've seen many projects choose React where that was never a consideration. Often no alternatives are even considered.
@brianleroux @seldo yeah, I'm with Laurie on this. It's not just new devs, and not just people lacking information.
For example, I have been making websites and using JavaScript as long as anyone. I have written brutal hacks jquery was too heavy for msie users on dialup. And I usually choose react for all new web projects, because my time is more valuable than the users lost, especially at the start when a project just needs to be proven out by some usage asap.
@brianleroux @seldo imo too often this is framed as a binary "react vs no frameworks", when really there ARE ways to use react more responsibly in the middle ground, which we as a community need to be advocating for more. A remix site carefully built using progressive enhancement is only slightly more/different work than a typical SPA approach, and fairly easy to transition to from a more bloated browser-only approach. That needs to be taught in bootcamps etc. imo
@isaacs @seldo yeah I'm hopefully obviously a big believer in frameworks. And was an early supporter of remix. Super agree bad stuff being taught and that it needs improvement.
@brianleroux @seldo but even then, if the first rev of an app is faster to put in front of people as a bloated pile of onClick events that doesn't work at all until js is loaded? That's the correct economic choice a lot of the time. That's how I built https://model.tier.run and frankly I'm glad I didn't spend time optimizing for low power/network devices from the start, because it would've been more work and largely wasted effort.
Tier.run Model Builder

@brianleroux @seldo hell, it still looks awful on narrow screens, but that wasn't the p0 bug to fix, so whatever. (I will fix it soon, but the value in *starting* there was negative.)
@isaacs @seldo I get it. My opinion is HTML is a fine starting point and pretty fast too.
@brianleroux @seldo I mean, and I know you know this, "it depends". For some things, maybe even a majority of websites, sure, plain old html and 100% server side routing and generation may be a good starting point. For others, it might require committing to interaction patterns and making them costly to change, before they're proven out. And in a LOT of cases, it's never economical to care about one approach vs another or adjust either way.
@isaacs @brianleroux @seldo that's the thing a lot of bigwig devs don't understand. So many small companies are likely not to exist in 12 months. Speed to market is essential. Many don't have the time or resources to bikeshed over perf. Validating product market fit means you shouldn't premature optimize.
@blittle @isaacs @seldo I'm way faster without the abstractions and build tooling getting in the way personally. to each their own oc! premature optimization would be thinking you need an abstraction for, arguably, one of the most straight fwd/ accessible parts (html!)
@brianleroux @isaacs @seldo yeah, that's the thing though, the devs at a small company are going to build the best they can with the technology they know well. Which is why react wins. More devs are proficient in react than alternatives. But that will change over time IMO.
@blittle @isaacs @seldo imo you need to know html, css and js to write react…not the other way 'round
@brianleroux @blittle @seldo this whole conversation is just a giant pile of "it depends". It depends on what you're building. You need to know a hell of a lot less about css and dom and JavaScript intricacies make quite a lot of fancy widget type things with react and some off the shelf component modules than you would to do the same thing with standard browser apis.
@isaacs @blittle @seldo for sure. your proficiency for building a web app depends on your proficiency with web technologies. and that might be aided by an abstraction but by no means is essential complexity.

@brianleroux @blittle @seldo and it depends on what your web app is, how far it strays from "show content" into "do stuff in the browser", etc.

"Don't use a backhoe when all you need is a shovel" is good advice, but so is "Don't use a shovel when you need a backhoe".

@isaacs @blittle @seldo yeah I am just a fan of doing the simplest thing that could work as a sensible default not a immutable edict !
@brianleroux @isaacs @blittle @seldo I'm with seldo, I don't see sinister intent with framework folks, but will add an observation that it's easy to forget how effective plain HTML/CSS can be. I find we pull out tailwind or something and then later go wtf I just needed a single CSS file of globals with like 10 styles.. boom done! You kinda forget it's already a pretty nice DRY setup without adding a bunch of tooling. Next.js is pretty rad, though. πŸ˜…
@mmayo @isaacs @blittle @seldo not sinister but def an evolving story without much awareness about what they previously said/did (which was directly toxic to some of us). whether ignorant or deliberate: not a good look.
@mmayo @brianleroux @isaacs @seldo this isn't just a framework thing either. At Salesforce, I remember debating that you don't need a couple hundred web components to render an interaction free privacy policy page.

@seldo @brianleroux I think that's fair and have seen it in play in orgs I work with. "This is what we know and can move fastest with" is always the baseline reasoning.

That doesn't mean that its the right choice in the long run. The oil comparison is apt, we all know it's bad, we all know there are better alternatives and yet many of us continue to abuse our environment for what people keep selling us is easy and fast.

Doesn't make it right, we just need to keep arguing to open people's eyes!

@brianleroux @seldo Woah woah woah... don't hate on the Nintendo eStore
@dlmanning @seldo I like the idea
@brianleroux @seldo I mean it's fine for what it is. By far the most noticeable issue is delay loading assets. It's not obvious to me that would be better if it weren't written in React.
@brianleroux @seldo this is kinda funny, as a Nintendo fan and a #React developer, the Nintendo eShop is famously slow but I didn’t even think it could be related to React itself
@undefined256 it's definitely a really poorly built app. That's possible with HTML too but I'm trying to explain that knowing how to build for the web helps. Knowing a particular flavor of a dialect (which breaks and changes often) isn't as straightforward to optimize. Ever notice how the advocates always claim everything is fixed in the next version. Never ending grift.
@seldo @brianleroux Agree β€” back when "SPA frameworks for apps, static HTML/CSS/JS for sites" was the mantra, I still struggled to avoid being accessory to 50MB of images and autoplaying videos being forced upon users of marketing sites.
@seldo @brianleroux You're stating this like it's facially ridiculous, but I don't see why it is. "Persuasive" not just meaning personally persuasive, but persuasive with the backing and credibility of Facebook? This does not seem particularly far-fetched.
@agocke @brianleroux Millions and million of developers are using React. In surveys I run they report high satisfaction with React. They're not just using it because they were impressed with it, or because somebody told them to. Developers really like React, and I have thousands of data points to prove it.
@seldo @brianleroux Fair enough, but I think it's a point you have to argue with data! Not immediately obvious.

@agocke @seldo I didn't see the part where anyone was debating devs like it or use it.

The points made by Alex and others are concerned with the poor outputs and the advocates changing their stories. (See your colleagues Zach's post about React criticism for ex.)

@brianleroux @agocke The flaw in Alex's argument is that he focuses only on the (admittedly bad!) results React gets for low-power mobile devices. My point is that developers are not *unaware* of the bad outcomes, they like React *despite* the bad outcomes, so let's look at why. The idea that developers  cannot see that bad outcomes, poor creatures, only Alex can, is why the whole thing comes off as insulting.
@brianleroux @agocke We, the developers of the world, are aware that we are making a trade-off and we are making it anyway, so continuing to yell at us that the trade-offs we knowingly made were bad is not going to do anything but get us annoyed. We KNOW.
@seldo @agocke so are we supposed to pretend it's good and bad web experiences are good for consumers?
@brianleroux @agocke Did you read my post? I'm not saying it's good. I'm saying the bad outcome we're looking at is the inevitable outcome of capitalism. We don't have to like it, but it's impossible to avoid.
@brianleroux @seldo @agocke I think @seldo is saying that shaming developers or treating like they don’t know what they are doing doesn’t make things any better for consumers either.
@ThePaulMcBride @brianleroux @agocke Exactly. Our energy would be better spent meeting them where they are -- using frameworks by the millions, making rich apps -- and reduce the harm by making the frameworks better. Write something they like *better* than React rather than just telling them it's bad.
@seldo @brianleroux @agocke fixing the perceived problems with React would be huge too. A lot of things will never be rewritten because it’ll be better for users. However upgrading to a new version of React or Next etc is usually much less work.
@ThePaulMcBride @seldo @agocke not having to upgrade because your shit is based on web standards is clearly better than spinning tyres on same functionality isn't it?
@ThePaulMcBride @brianleroux @agocke Also agreed, and the people who make Next have made huge strides in improving accessibility and performance, so I'm not on board with calling them "bad actors" either. They too are doing their best.
@seldo @ThePaulMcBride @agocke the static CSR is the only way to SSR narrative change is only one example but they definitely are trending in the right direction after years of gaslighting
@brianleroux @ThePaulMcBride @agocke We agree that they are slowly trending in the right direction. I just disagree that their marketing amounts to gaslighting.

@seldo @ThePaulMcBride @agocke well they've attacked me directly and indirectly industry wide for saying things they now promote.

So that's absolutely my perspective!

@ThePaulMcBride @seldo @agocke I agree w that and have said as much. I don't think the solution is excusing unprofessional outputs or toxic actors tho either
@brianleroux @ThePaulMcBride @agocke I think calling the outputs "unprofessional" is deeply condescending. A professional has looked at situation, made a tough trade-off, and the result is the output. It's deeply professional, in that it's a compromise made to satisfy every stakeholder to the best of their ability.
@seldo @ThePaulMcBride @agocke respectfully disagree. If a site isn't accessible by default it's not professional.
@brianleroux @seldo @ThePaulMcBride @agocke the person who actually decides about whether something is accessible or not is usually not the developer. I agree it's unprofessional but it's the product owner who takes that responsibility, not the developer.
@errata @seldo @ThePaulMcBride @agocke I'm not even thinking about deeper a11y so much as really basic access like "page actually loads" not spinners and blank screens 😐
@brianleroux @ThePaulMcBride @agocke We're all just trying our best, Brian.
@seldo @brianleroux @ThePaulMcBride well that's clearly not true. Thousands of devs were working hard on crypto garbage to knowingly scam people out of their life savings. Let's not assume everyone is in this profession for good reasons

@brianleroux @agocke The fundamental point of disagreement between Alex and I is that he believes devs cannot possibly know how bad the outcomes are, or they wouldn't make these decisions, and I believe they do.

My position is easier to believe, because for Alex to be right everyone has to misunderstand the world *except* Alex, but for me to be right the only person misunderstanding the situation needs to be Alex.