Starting a few years ago, I realized some junior and medior engineers never once considered the possibility of building a website (app, experience, etc.) in anything other than a heavy SPA framework. But they're not stupid people! If you directly asked "Can you build a website without React?" they know the answer is obviously "Yes." However, if you asked them to build a new website, they would unthinkingly start a new React project, mostly out of familiarity and a desire to get the job done.
A few of them would outright not know how to do anything else. No knowledge of how to stand up a boring HTTP server to send pure HTML. No experience building a form that validates or submits without JavaScript. These are not the people who post here on HN. They are not engaged in online discussions of new tools and skills (or old tools and skills!). These are people who learned just enough from a bootcamp, or their uni's single "web apps" course, to get a job. Since then, they have just-in-time learned whatever their employer required, or whatever particular tools someone else on their team chose for a project.
As an old, it took me a while to recognize/realize it, but I understand them now. Depending on their career path, someone will encounter the simplest aspects of HTML, CSS and vanilla JavaScript after they learn the complex, framework-specific aspects of each. It feels (to them) like more esoteric, advanced, or tertiary knowledge.
Tying it back to to the quote "that’s a lot more work for us", that's not necessarily an intentionally false claim. It probably does feel like a lot more work to perform a task using unfamiliar tools, even if they are less-complex tools.
You are far too empathetic to them. They should not hold the jobs they have.
These are the people writing React monstrosities for government benefit websites, and testing them on fast iPhones and fast 4G, without realizing that every page load for actual users will take 30 seconds on their old $200 Android on 3G, and users won’t complete the form.
It’s a culture of not giving a shit, that’s the deeper issue.
Junior and midlevel devs aren't decision makers for government benefit websites. The culture of not giving a shit is real, but the responsibility goes far beyond these roles.
I am always baffled by people who blame developers. Like some mid dev or junior would calling shots what stack should be used for project.
I had a contract once to save a government website that had serious performance issues, it was so unusable that people preferred to go in-person and wait 4h in a queue rather than try to fill the forms online.
The frontend was in React because the company that got the contract initially used React for everything. The frontend was a 5MB SPA, but it could've been (mostly static) HTML files with some interactivity for forms like TFA. Everyone working on the project agreed React didn't make sense, but we couldn't do anything about it because someone from the government IT department would have to admit they made a mistake. There was no budget for rewrites in the contract. The few times a developer attempted to remove any "React monstrosity" they got in trouble.
Sometimes developers care, but the people in charge don't, and in government environments every change must go through them first.
In Canada you can't call yourself an engineer unless you have some kind of association behind it; the title holds meaning including partially accountability. Something that is lacking in the tech world. I'm not saying I want to live in that world but also I worked hard for the knowledge I have starting in the IE days of web dev; it was hard earned experience making things work across the web without loosing performance. The idea that we have developers out there now getting paid higher than me that are clueless on how auth works, how the browser works, why css and browsers maintain backwards comparability for a reason.. well it's sad; but good for them I guess?
The behaviours of developers as well being beholden to their managers rather than the craft; meaning not saying No we will not move forward without proper unit tests, or pushing back when business demands quick corner cutting solutions.
Anyway, decades of bitterness. I wish we had associations to uphold some level of accountability on developers as much as protect developers. I think things would be a lot more expensive and slow if we did that though.
Fundamentally I agree with your take, not just on dev side but just the web/dev/produce' a culture of not giving a shit.
New cheap android phones are just as slow as old cheap android phones. The bottom of the market has been stuck in performance limbo for years, and modern web dev frameworks are ill designed to meet them where they are at.
I've found what works really well on 3G an MPA with streaming HTML with brotli compression rendering the whole page on every change.
I use to have an old pentium 2 computer for testing websites. Sometimes you cant make things fast enough for the old box. A fun trick is/was to have <script>elm.textContent="loading images"</script> between each "heavy" section, all targeting the same elm. If the computer, network or server is truly extremely slow you will get a nice message at the top describing what they are waiting for. On a normal slow computer you won't see the messages unless something went wrong.
It's more of a culture of "but everybody else does it".
I like how HTMX does SPAs. It straddles the divide nicely between simple and capable.
I see no reason not to be empathetic. The frustration is fair, but it's aimed at the wrong layer. These people were guided into this spot by bootcamps and curricula that start at React and never go down the stack.
My experience was the reverse. I learned HTML and CSS first, then Rails in college to serve templated pages. I understood the client/server boundary fine as a concept, what I couldn't see was where it actually sat in a web context. I sort of knew JavaScript ran in the browser, but then I'd see ERB templates stamping values directly into script tags, so the server was writing the JavaScript that ran on the client, and my mental model fell apart. Where does my code actually execute? Why does this variable exist here but not there? Why does the page have data the network tab never fetched? Nobody ever sat me down and explained the request/response lifecycle as its own thing. I had to assemble it from fragments over years. This was around 2017 for context.
How you learn something shapes how you keep learning. If your mental model is misaligned, everything downstream is friction. The thing that finally made it click for me was reading the actual HTTP RFCs, which is apparently a weird thing to do, because HTTP itself is absent from nearly every guide and curriculum. Tutorials teach you the framework, maybe the language, and just assume the protocol underneath. These days I make newbies read the MDN docs like a book and skim the HTTP wiki page, learn the history of the protocol. It's short! It's not even a book! That gives you a firm foundation. But if your foundation starts at React, drilling down is like digging past bedrock. People don't know where to start, and Googling only shows them wrong answers because they don't yet know how to ask the question.
Are you sympathetic to a doctor who specialized in surgery and now always recommends surgery, even for a common cold? Or would you say they are in the wrong job, if they are anywhere but surgery?
Well that's horribly reductive. I certainly do not expect everyone in a given field to know absolutely everything there is to know in that field.
Crazy enough, I also hold doctors and surgeons to higher standards than web developers.
Ridiculous example that does nothing to argue the original, fair point. Obviously health interventions demand more finely tuned solutions than information technology
FWIW, maintaining at least a moderate degree of empathy even in systemically frustrating situations is good for the empathizer and thus in one’s interest
Kinda sorta analogous to the cloud engineers who can standup complex monstrosities in AWS-land, but don’t know the first thing about how to troubleshoot say a connectivity or simple problem where they have to ssh to an ec2 box and do the needful
or the materials engineers who are great at making mems tools, but couldnt for the life of them design an aircraft prop
I’ve long thought frontend web developers are the ones most threatened by LLM-assisted programming for a bunch of reasons and now I can add “many don’t understand web fundamentals” to the list.
Absolutely
I'm not a web developer. I built a few websites in high school, but these days I write safety-critical real-time code for robots.
A few years ago I was back in grad school and I took a class with undergrad senior CS students. We had to write a fairly simple web service, and I was blown away by how complicated they were making it. Based on the requirements we easily could have written 90% of it in plain HTML, but everyone else insisted it should be 100% react. Part of that is honors students wanting to do everything the most complex way possible to impress teacher, and part of it is them simply not knowing that other options exist.
Don't you think they have a legit skill issue here and should they be better off upskilling themselves?
This is a direct effect of being a low barrier industry to enter. Most of the ppl among us are mostly here because of a good paycheck. And it SUCKS!
>Don't you think they have a legit skill issue here and should they be better off upskilling themselves?
Absolutely agree! Just because I understand how they got there doesn't mean I think it's a good state of affairs ;)
My post was already quite long, and I didn't want to append a treatise on what one should do when encountering those engineers. It depends on many details. Avoid hiring them, if that's a power you have. If you are stuck working with them, depending on your authority, encourage them to learn or force them to learn. If you're coming in to clean up after them... well, hopefully your comp is worth the annoyance.
We are all simultaneously in the position of encountering "the world as it is", understanding it, and doing what we can to improve it.
Yep. It’s also an attitude problem. A lot of devs are able to up-skill just fine, but some are downright demeaning towards anything they don’t understand, or towards anything that doesn’t come from a FAANG.
“HTML only? Nobody is doing it!”
In the olden days, people wouldn't take office jobs or factory job necessarily because they thought: "Yes! That's my passion! That's exactly what I've always wanted to do." Passion isn't your first and foremost thought when you have a family to feed.
A few decades ago, IT jobs were for the most part done only by people who were in it for the kick they got out of working with computers. They already hacked at their dad's computer in their early teens (or sometimes even younger), and just could just never let go. It was for people who loved it because it was a niche.
But today, IT is no longer that. It's the backbone of much of our society. And so the field no longer attracts just the die hard fans, the nerds. It attracts ordinary "career people", who just need to have a job to feed the family. Who turn the machine off after 8 hours. Who don't go on coding all through the evening on their hobby project. Who don't try out new tech just for the heck of it.
I think it's hard to understand if you belong to the first group, the nerds, that anyone working in the field isn't like you. Because they all used to be! But those days are gone. We live in the times of enshitification for a reason. If you have the hacker spirit, you don't enshitify because you simply can't. You know what is the right way to do it. Sometimes that's a React app but sometimes it's just an HTML page.
You're not just in it for the money. You care. Not necessarily for the end user, although that would be nice. You care for the tech. And when - like in this article - both come together, sweet things can happen.
A few of them would outright not know how to do anything else.
It's like how a lot of people these days reach for an electric drill/driver for even the most simple projects like tightening a screw. It never occurs to them to use a screwdriver, or even a butter knife.
Try to get a Java developer to do something without Spring.
There is a reason we use React today - if you want dynamic and complex site, HTML is PITA to work with. Either you reload everything on any change (not good), or end up with a maze of partial reloads in event handlers (not good either). It was done, it was bad, React (and similar frameworks) was the solution. If you don't need complexity of React, fine, use HTML. But if you do, who can guarantee that 5 min later someone will not start requesting site not to reload here and there, but update this bit here. So I don't blame people for just using React. And in this case the issue wasn't that react was used, but that it was used poorly.