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 @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.

@seldo @agocke ok so everyone agrees the outputs are poor, and the web consumer experience is being damaged. That's good we agree at least.

Humiliating people is a poor way to convince them to change. I agree with that. Excusing it is also a poor way to affect change.

I try, and fail, to lead by example. I get a lot of toxic stuff thrown at me by smug fans gleeful in their changing storyline. What to do?

@brianleroux @seldo @agocke It’s not the whole story, but I think we need to rethink what responsibility the browser has in all this.

Accessibility primitives need to exist that are side effect of building for the web, not an additional step devs need to take for an already marginalized audience. The economics just aren’t there for devs to do this individually on every site. (I am working on a few APIs that can help)

@seldo @brianleroux @agocke junior developers using the top of the line MacBook Pro supplied by their company on corporate gigabit internet and/or running a dev server on localhost certainly can’t see those outcomes, unless their teams invest heavily in instrumentation, profiling, observability, regression testing, etc., which many teams are not only unwilling to do, but also unaware of at all. not talking about top sites here
@exchgr @brianleroux @agocke I have spent a great deal of time talking to junior devs just coming out of bootcamps and I simply do not believe that they are unaware of the tradeoffs they are making. They are junior so they are both less empowered by the organization to effect change and less experienced at writing things quickly that would be better, so they can do less to ameliorate the bad outcomes, but I refuse to accept they're unaware of them.
@seldo @exchgr @agocke that makes me optimistic they're open to changing at least

@brianleroux @seldo I can too attest to said gaslighting. And I’m a heavy SPA user because for the longest time that was the only way to build fully offline capable applications on the web.

Let’s hope for a better future here. 🙏

@janl @seldo yes, and the only way to build hybrid apps too. Well, only good way. But got mobbed for suggesting backend rendered was a better default. The webpack guy, employees of said company, called me "irrelevant old guard" while the coworkers all dog piled likes.

Respect is a two way street and they lost mine a long time ago. When ppl show you who they are I believe them.

@brianleroux I get side-eye from my co-workers when I ask “does the back button work?”, doing this shoddy is so pervasive :/
@janl this is why I think it's ok to have professional standards. To me, working links, forms and back button is baseline basics. If that's all good: go to town enhancing. Starting with a broken foundation isn't professional work and it's ok to say it.
@brianleroux yeah, and I’ve seen enough people (devs and deciders) who were brought up in this world and they don’t realise how shaky their foundations are and that there are other approaches.

@brianleroux @janl don't you think it's a bit on the nose what you're saying about SPA devs & "using the platform", when you yourself had a reasonably big moment in tech not using the platform (Native Apps vs PhoneGap), or is that history you'd like to forget about?

Everyone makes trade-offs, and you are not above them.

@thisismissem @janl no I'm proud of my work there thx. I'm not trying to denigrate any individuals just ideas. And yeaj I am confident in my perspective thx to experience like you've mentioned and are trying to make me feel poorly about for some reason.
Brian LeRoux 💚 (@[email protected])

Seems some folks forgot the goal of PhoneGap was to cease to exist. We wanted to spur a better native web. And we did. 🫡

Indieweb.Social

@brianleroux my point is more: you made a name for yourself encouraging folks not to writing native apps (iOS, Android, and Windows), often leading to developers creating applications that were great or performant on any platform.

So it's a bit on the nose for you to be saying developers are unprofessional because they opted for a SPA framework & didn't prioritise making the back button work (which iirc, was actually a common gripe about phonegap apps)

Everyone makes trade-offs

@thisismissem I read what you said and it's not true.

We always stated the point was write web standards and focus on web technology. It was a "stop gap". We definitely had poor experiences and occasional good ones like Instagram for example.

Unprofessional work is possible with any technology. I'm not saying all spas are bad but I am saying there are better default ways of building web apps.

@brianleroux right, and you can build good SPAs with React (Remix is a case-in-point), just like it was possible to make good apps with PhoneGap.

If majority of developers are making a trade-off though to use these tools in ways that give bad user experiences, I'm gonna go with either naivety (didn't know) or trade-off (didn't prioritise), that doesn't necessarily make them unprofessional or the tools they use bad.

@brianleroux Also, whilst your intention might've been to create a better web, let's be honest, that's not why companies used PhoneGap, they used it because it was seen as a cost-efficient way to build for multiple platforms, user experience be damned.
@thisismissem I get it. You didnt like PG and you don't respect our motivation to build it. It's over now and you can let it go. I have.
@brianleroux that's not what I'm saying: I'm saying folks chose PhoneGap for similar reasons that they choose React, and both can lead to poor experiences, and those choices aren't necessarily unprofessional or stupid, they are choices made in the context of the constraints within which they work.
@thisismissem I'm talking about the work not the people.
@brianleroux calling someone's work unprofessional is pretty much the same as calling them unprofessional, you can't separate the two. They are intrinsically linked.
@thisismissem so what are the hallmarks of professional work to you? Is there any quality bar at all? (Note: asking about the outputs not the people or their conduct.)
@brianleroux doing what you need to to meet your goals and deadlines to build the features you need to build within the constraints you have.

@thisismissem yeah I'm not taking issue w all devs or even any individual devs. Context is important.

I will stand by the opinion that working links, forms and good performance by default are hallmarks of professional work.

@janl @brianleroux @seldo Some time ago, I started looking into the concept of MPA via ServiceWorker and implementing such an app. This allows offline with all the advantages and browser optimisations that a "real" navigation and plain html offers. It also brings a clear separation of frontend and backend (which now lives in the service worker), and that provides structure and improves the architecture imo.
@janl @brianleroux @seldo So far, no framework supports this afaik, but since I'm not a fan of frameworks anyway, I don't care. I think this will soon become more widespread.
I learned about it from a post by @nolan (https://nolanlawson.com/2022/05/25/more-thoughts-on-spas/), who links an example: https://instantmultipageapp.com/
More thoughts on SPAs

My last post (“The balance has shifted away from SPAs”) attracted a fair amount of controversy, so I’d like to do a follow-up post with some clarifying points. First off, a defini…

Read the Tea Leaves
@TF_Fabrik I still have a pet theory that this will be the hot shit in frameworks in like 5 years, but I've also been saying that since 2016 so I might be wrong. 😆
@seldo @brianleroux @agocke aware or not, it’s what they tend to do, and so we need more mentorship and apprenticeship, even in the form of pairing/mobbing with more senior devs, to guide them in a better direction. and imo, junior devs shouldn’t be making big architectural decisions like that on their own. if they are, that’s an organizational failing
@exchgr @seldo @brianleroux @agocke like the intern that takes down production servers. It shouldn’t have been possible in the first place.