HI version is available. Content is displayed in original English for accuracy.
Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
58% Positive
Analyzed from 15933 words in the discussion.
Trending Topics
#more#css#frontend#things#web#code#software#don#html#end

Discussion (325 Comments)Read Original on HackerNews
You can argue that abstractions hide consequences that fall on users who didn't choose them, but I'd argue back that LLMs likely have a better understanding of a11y conventions than I do as well.
The end result is more crunch and a sharp decline in software quality, maybe even job satisfaction in general. As an (unfortunately anecdotal) example, I started to find myself fixing up broken websites or removing elements that get in the way with dev tools and uBlock every once in a while, and have heard from other people on here that they have been doing the same (https://news.ycombinator.com/item?id=47042747). All to restore basic functionality of websites I go on. This was never required back in the day, Flash and early web browsers didn't even have the option to do this.
Another, less anecdotal example from a while ago: https://news.ycombinator.com/item?id=47390945
It gets worse when you realize that most of the money saved through these cuts only benefits the very top of the hierarchy.
Compared to the status quo where people pretty much never consider these things, like accessibility, especially not for an MVP? How many people have never added written aria attribute? I would suspect 90%+ of people touching the frontend.
The difference with LLMs is that (1) they have a latent rigor for things that you weren't going to spend time caring about anyways and, more importantly, (2) you can encode these things into prompts (AGENTS.md) and processes so that they happen even when you weren't going to invest the time with or without AI. For a lot of people this only means collecting some generic "skills" they found online yet it's still much better than what they were going to do pre-AI.
That's why I think AI is saving software in some ways, not leading to worse software.
Or, asserting that AI will botch software might hold more weight with people who have already forgotten how dogshit software was pre-AI.
If our hypothetical developer hasn't used any accessibility-related tags before, what chance is there that those parts of the website will receive adequate testing?
Setting that up and making sure it works, at the early stages, is not what LLMs do best, today. This sort of work is possibly incredibly valuable in the next 12-36 months, depending on what LLMs can be designed to do out of the box.
An Agent that can deliver the correct legal review process for a patent and is correct often enough to validate the savings vs real humans, or at least the speed increase + manual review ala code reviews, is incredibly valuable.
Are we there yet? Maybe this is where current groups like FNCR are trying to go.
But the key here is: LLMs don't have latent rigor, nor any other kind of rigor.
You're responding to an assertion with an assertion. It has been empirically proven that SOTA models can create more dogshit software than pre-AI software. It is also trivially known that the user is unable to predict when and how the AI will introduce dogshit into the software. We literally had a study posted on this forum claiming models give more accurate answers if you're mean to them. This is the shit we're dealing with. Stuff you couldn't make up in a dystopian Douglas Adams novel.
>you can encode these things into prompts
Is this satire? SOTA models randomly disobey rules in prompts all the time.
When a dev drops a production db I can warn them. If they do it multiple times during their employment I can change their roles or fire them.
I can count the number of companies providing SOTA models with the fingers on my hands. Imagine having an employee pool of only 5 savant coders with dementia to choose from to hire to your company. That's it. Thats the entire applicant pool. You can only fire one of them by hiring one of the other four to replace them with. And you can't really fire them for dropping production dbs if you can't prevent the other ones from making the same mistake. This is the current AI-first hellscape as it stands.
So far the way AI is making software better is mostly checking for common bugs and acting as review/pair programming buddy, not the code.
The code is bad. At best okay. But you can make a lot of it. And it's not bad enough to not be good enough.
For example, WPF programs can have great accessibility - this comes from the fact that programmers can manipulate primitives which are semantically meaningful (buttons, lists etc).
In HTML its just a sea of divs which lately have become an implementation detail to hang classes on to, and sometimes not even exposed directly to the developer, if you use a SPA framework.
There's not a snowballs chance in hell you can build a quality accesibility solution on top of that.
HTML's main idea was that HTML was a document model, that described the content in a semantically meaningful way, and CSS was the 'rest' which kind of allowed to make the whole thing pretty - the idea going as far as separating content from looks should allow people to 'theme' their websites and completely redefine layout.
That idea has been completely abadoned. I'm not a frontend dev - although I can make a competent webpage by myself, I don't have deep insights into what's going on in the field - maybe Web Components will allow people to create semantically meaningful pages in a standard way?
Maybe there should be another layer of abstraction on top of what we have - which is truly semantic, this time for real?
Today I find myself having less patience for it all, because things just tend to work a lot more often than they don't.
With AI, I find so many small businesses and others I deal with which have their own websites have started to have better design, better performance and while I don't know if they are really accessible but they tend to have more prevalence of aria labels.
Not to take away from your experiences, just sharing my anecdotes.
AI might make the problem worse, it might not. But the problems you outline and the sharply declining computer literacy they bring are already here, driven 100% by human developers.
Only when you have a PR problem does the business switch back to signalling quality, like Microsoft, although it remains to be seen if they still have the quality part. Most of the craftspeople get to say 'told you so' but also it looks like a sinking ship to them. Once the PR problem is gone, it's back to shipping at the expense of quality.
This cycle conflicts with the idea of a craft, which is that you should do it that way all/most of the time. The business will stop caring about quality long enough that your skills will erode, making it a bad mix. Trying to practice a craft where you aren't in control of this cycle is corrosive to the spirit.
Some people go on a bicycle because they can't afford a car. Should car makers see those people as a problem?
> The end result is more crunch and a sharp decline in software quality
If you have 10 people eating steak and 10 people starving, then giving rice to the starving people would also sharply decrease dinner quality.
AI software is not the difference between good or bad, it's the difference between something or nothing.
Contrary to what you seem to believe, cars and bicycles are different kinds of things, not two versions of the same fundamental type, so this rhetorical question doesn't make much sense (consider that also your legs provide the function of transportation but are nevertheless not a kind of car).
This one, for instance:
> But exactly which details are deemed “unimportant” is a very consequential and sometimes subjective decision. And eventually, the details always leak through.
Right, so you're saying this new technology will still reward deep technical understanding, because there's no way around it. I agree. Why is the whole tone of this thing "AI is making my craft a cheap commodity?"
Websites are largely better, technically, than they were 10 years ago. They're more full-featured, they're faster, SSL/a11y/responsiveness are stronger defaults. Content mills / SEO / news sites are a separate, terrible failure mode of ads and corporate incentives. That's not React's fault!
This seems like a good insight and it feels true to me as well.
My guess is the absolute number of people who treat it like a "craft" is higher than 20 years ago, but as a fraction of all developers it has shrunk dramatically.
This is the opposite of my experience. I find websites take much more time to load, are designed to require many more actions and interaction time to navigate, often break and are replaced by a blank page if any error occurs, use huge numbers of ad/tracking requests and JS, and are filled with accessibility-standard-violating unnecessary JS animations.
That is not remotely the case. All software, not just websites, is a lot worse than it was 10 years ago. Bloated, slow, buggy messes that resulted from the industry hiring a bunch of people who just wanted to do the bare minimum and make fat stacks, rather than hiring people who actually care about good engineering.
Holy shit, no, they are not. What world do you live in?
No, other people did. They wrote about it, and LLM can sometimes use that. Once they no longer write about it, what then?
> More people building things is straightforwardly good, and if some of those things are slower or less accessible, that's a tradeoff people are entitled to make.
That I agree with. The more the merrier, all else being the same. And if "AI" trickled into everything because of the undeniable improvements it leads to, the situation and most of the sentiments would be very different, I think.
But even then, people aren't entitled to the knowledge "created" by doing the work. If attribution and compensation were tackled in earnest, if you could only train on the materials of the people you pay to produce those materials, it might be much quicker and cheaper to just learn CSS.
It can read the code? Historical discussions around it? Commit histories?
> But even then, people aren't entitled to the knowledge "created" by doing the work. If attribution and compensation were tackled in earnest, if you could only train on the materials of the people you pay to produce those materials, it might be much quicker and cheaper to just learn CSS.
OSS code and people’s public writings are available to anyone all the time. Common Crawl, the open source web crawl dump, has been around for over a decade. No one had any problem with these systems being developed on them, until they finally started to become useful, so what’s the sort of legal or ethical framework you’re pointing to?
Assume everybody is now using LLM because they're better, and because the people who created artisanal things in their free time out of sheer generosity no longer have free time, or any food at all, or simply no longer feel generous. And the few people who are such specialists that they would be slowed down by them only do proprietary work, for lots of money.
What then? LLM learning from LLM doesn't really work, does it?
This is not intended as some kind of gotcha, to me this is a huge elephant on the couch.
> No one had any problem with these systems being developed on them, until they finally started to become useful, so what’s the sort of legal or ethical framework you’re pointing to?
That it's perfectly fine for people to say "I was fine with that, but I'm not fine with this". They can give you detailed explanations for their individual decisions, every single one of them, but there is no point in discussing them in aggregate because that aggregate is an abstraction. And they're optional, too, it's not like people have to give an explanation, and aren't simply free to change their mind for no or for bad reasons.
And if everyone bunkers up and all that open content dries up starting in 2026, let's say, what happens?
I wrote a similar HN comment around this yesterday, but the short version is that we found for our product that the years of investment in our Docs (which were seemingly never good enough) are now paying enormous dividends in that LLMs seem to understand our product really well. This has manifested in the LLM in our product being highly effective and a few additional clients who found us through AI chats. Turns out the problem with our Docs wasn't so much with their content, but rather that people just weren't looking at them much.
The AI will no longer be able to reproduce new a11y conventions/guidelines, but if no one is writing about it, do any new a11y conventions/guidelines even exist at that point?
That’s a good question but I suspect when new technologies come out, the normally indecipherable specs released by industry groups (which is why we needed blogs) will be deciphered by LLMs. Not saying this is good or bad (it’s likely both) just saying it.
OP writes about doing stuff ”properly” and how “using frameworks” was somehow worse.
Having a framework that is built by actual experts is much better than every “self proclaimed expert” building his own crooked thing.
Being able to switch developers between projects easily is also good for developers. I can switch companies on a whim without having to learn “crooked way of self proclaimed specialists”.
And I'm sure I'm not alone in feeling that the convenience from ignoring the "deep expertise" and piling on hacks and lazy abstractions, all the way to modern multi-MB frameworks and Electron, is a regression.
Of course no one gives a shit about things like the user's computer/memory utilization. Or degraded experience. Or wasted bandwidth. Or the extra energy costs per 8 billion people - and the environmental impact.
>More people building things is straightforwardly good,
Is more people building public infrastructure "straightforwardly good"? If it means worse roads, worse bridges, systems that fail?
The same holds for software. And most things really.
But again, accidental complexity. The web platform is utterly rotten. So the people we should blame are chrome et al for not providing a standard lib or anything approaching a reasonable UI framework, which forces people to reimplement what a competent platform provides.
Electron is an artifact of the richest companies in the world prioritizing their platform monopolies and trying to increase their stranglehold on businesses by forcing them to write platform specific code, which is hysterically expensive to build and maintain. When I'm confronted with writing for web then reimplementing for mac and win... the answer is electron. I don't think anybody likes building in Electron; it's just it's that or +200% (or more) eng headcount to build 3 apps, one per platform.
And yet we could build native apps a plenty in the 90s and 2000s, with 1/100 the resources (tutorials, third party libs, native GUI frameworks, IDEs, etc) available, and 1/10th the target user base.
It's not about "platform specific code, being hysterically expensive to build and maintain". It was more expensive in the 1990s and 00s too, but people built it and maintained it just fine.
It's companies chosing convenience.
Especially since it's not poor programmers and small software shops going for Electron. It's the biggest multi-billion to trillion dollar companies.
Facebook uses this crap, Slack uses this crap, Adobe and Google use similar web-based UI crap (in what used to be native apps), and so on.
At first it confused me why my GPU usage spiked and fans started blowing harder, but now I see it is a common mistake that AI makes but no one tests properly. It is possible a human can make this mistake but I sheldom experienced this ever in my life until now.
I run 240hz monitors, and that meant the browser was trying to do 240 repaints per second. Blocking it with unlock origin is the only way. Ridiculous
Is it? I know hating CSS is a fun pastime for folks around here, but maybe it’s just that building good, rich user interfaces that people can use is an inherently hard problem.
Sure, the browser is slightly more difficult due to maintaining backwards compatibility and multiple implementations, but I’ve yet to see a better UI framework/language that has to deal with the other constraints of the web platform.
Well there's your problem right there
That CSS and web never really addressed did they? There's almost nothing in the web platform to build rich user interfaces. You can barely do styled text.
CSS and HTML are literally littered with accidental, ad-hoc, badly thought-out and badly designed one-off solutions, often to problems no one asked for. There's a reason it took until 2026 to animate `height: auto`. There's a reason why `article` "semantic" element has to be used when you display product cards or widgets. There's a reason why CSS scoping has been stuck in limbo for 10+ years. There's a reason...
The web is one of humanity's greatest achievements. But let's not pretend that it's not a textbook study in accidental complexity.
Let me guess, you stopped reading web standards documents because Facebook told you it didn’t matter, since you could just ship 10MB of javascript with every request
I dunno, seemed easier 20+ years ago when in high school we were taught how to use Delphi than now.
HTML/CSS is just terrible way to build interfaces. It was made to build basically resizeable documents, not applications, and it shows in every crevice
But then CSS came along and threw out the baby with the bathwater, returning us back to the bare primitives, forcing entities to redo all that work again. Except this time CSS didn't offer a good mechanism to wrap up that hard work in a nice API bow, so everyone ended up getting pushed into having to redo that same hard work every time they started a new project, leading to a bunch of poor, inconsistent, and often downright wacky implementations.
To be fair, the problem isn't CSS per se, it is just that it is much too low-level for all but the small number of entities focused on the aforementioned hard problems and browsers failed to offer anything higher-level for the rest of us. Javascript has tried taking on a stand-in role for the lack of the higher-level abstraction being natively offered by the browser, but that comes with its own limitations so it isn't always a viable choice, not to mention that having to resort to using a full programming environment completely defeats the purpose of having CSS.
CSS gets all the hate because it is more often than not the wrong tool for the job but the only tool available at hand.
I think the original author has a much stronger thesis around AI devaluing the craft of coding, but his specific examples don't stack up.
Why is that straightforward? As an example, right now every year on Steam there are thousands of games released. A lot of them are just shovel ware that nobody ever plays, but it does end up hiding actual quality stuff in the noise. Same thing happens in app stores. Gatekeeping that limits opportunity is bad. But gatekeeping around quality is very good. Wanting your software to be written by someone who cares about software and has expertise is, to me, more straightforwardly good.
Right now people are blaming vibecoding for decline in a lot of mature software products, whether that's fair or not (I think it's frequently unfair). I think there's a possibility that's going to morph into "AI First" companies being seen as poor quality brands. Already we see in games that when listed they have to disclose if AI was used or not, and if it was, it damages the credibility quite a bit.
As long as it’s “for you” or “small time”, there really isn’t a problem at all.
The only real downside so far to LLMs (ignoring environmental concerns) is when they’re heavily used and left unrestrained to go play with financial data, healthcare data, PII, anything with real consequences when it breaks. If a person is using it to automate their life. If a father is using it to help their kid with accessibility issues speak. If an artist is using it to help them write code so they can make a game. These are all good things.
You might think it’s shovelware; but the creator of those things is now super excited that their vision was made or their niche issue was helped, when no one else would.
If the goal is a legitimate app that has the lifecycle of an app that you start up and then shut down today the answer is "just write a web application" and then it "just works" on Windows, MacOS, Linux, iOS, Android, Meta Quest, etc.
Mostly people get pissed about Electron because they have 15 Electron apps running in the tray burning up resources all the time and popping up stuff that covers the tray and other tray applications in those (very rare) cases that you want to interact with something in the tray.
It's a tray problem, not an Electron problem. That is, people use Electron specifically because they want to made rude applications which march all over your desktop in muddy boots: Electron is not a framework for writing well-behaved, polite, x-platform applications; you don't need that, you have the web! Electron is a framework for making rude applications that inhabit your tray, pop-up distracting notifications, etc.
Edit: There's not just one lost decade of the web. There's the browser wars and IE stagnant dominance. There's the 2010s with millions of man hours spent on web components and starving other directions of resources or actively hindering them (e.g. scoped css was continuously postoponed because it's highly incompatible with Shadow DOM) while pushing everything into Javascript (and partly breaking JS e.g. with the bolted-on class-based OOP).
It remains to see if Google's complete dominance breaks the web further
Some of it is for sure (CSS, while I actually quite like it, isn't perfect).
However it's fundamentally harder to get the basics right in front end than back end because:
- You don't control the environment (meaning "browser quirks" are actually inevitable to some extent)
- You don't control the screen size and resolution of the device (meaning responsive design is not accidental complexity, it's inherently a somewhat complicated thing you have to address)
- Internal state is often visible to users (an API can be a complete mess internally as long as it returns the correct JSON in a reasonable time. Not so with frontend)
Compare that to backend where you control everything except any external APIs you need to use, it's chalk and cheese.
The reason the market doesn't value front end skills isn't because they aren't difficult or valuable - a really slick front end is worth its weight in gold.
The reason is it's almost impossible to tell in a 1h interview if someone is actually good at front end or not, relative to back end coding tasks which are more deterministic
Big corporations behind LLMs are taking it all.
Less of an accident than a byproduct of the unique ecosystem the web lives in (which is a positive!) Compare to say, backend development. If I said database indexes are deeply inconvenient and that I shouldn't have to make them I'd get laughed out of the room and justifiably so. But by comparison when a developer says "I don't care to learn CSS" folks nod their heads in agreement.
I still don’t understand this perspective, how is it good when a growing portion of stuff that’s built is straight garbage?
Consider indie games. If there are 10 of them and 5 are great, you don't need any filter. You look through 5 great and 5 not so great games and end up with 5 great ones.
Now go to a world where indie games explode. But only 1 in every 100 are great. There are now 100,000 games, but most qualify as very low quality. There are now 1,000 great games (and a few of these might be the perfect game you dreamt of), but if you don't have a filter and are buried under 10s of thousands of horrible games, things feel worse.
With a filter, you now live in a world where you can easily find most of those great games with only a few lower quality ones showing up. So as long as the filters that exist, whatever they might be, can handle it, more is better even if quality drops.
Unless the quality extremely fast, say my previous example of 100,000 games but only 1 in a million was a great game. I think this level of quality drop is extremely unlikely. Instead, I suspect the real problem is if the filters can keep up, because they depend upon human effort, so it is possible to hit a point where they are overwhelmed and stop functioning properly. That's when things get worse. As long as the filters hold, more building leads to better outcomes even with a drop in quality.
Just open Steam, PSStore, Nintendo store.
Still doesn't.
I'd read it kind of like 'The man and the butterfly' story. Or the Kant passage about how doves might wish air didn't exist, without realising that friction is exactly what permits them to fly.
Both have been lost; good riddance the former, but I miss the latter.
It depends. My country (Germany) introduced accessibility laws recently which enforces you to build everything public with accessibility in mind. If a page doesn't meet the expected standard you can get extremely high fines.
Is it? More than a decade ago there was a Cambrian explosion of software, Flash alone was the defining force of indie gaming industry. And now what? We have so much shit/shovelware that nobody wants to touch with a ten-foot pole.
If AI were already the norm, and someone came along and said, "hey! I've got a great idea! Instead of AI building all this stuff, what if we did it by hand?" and talk about all these amazing benefits to hand crafting code, people would largely say no thanks.
As far as the abstraction argument goes, well, we've been creating higher order abstractions for a long time and called it good. I don't see why we should suddenly be against abstraction.
The reality is probably bimodal. The people who are benefiting are benefiting a lot, but they're likely in a minority. The majority will be tokenmaxxing at great expense and spinning their wheels in real terms.
But there's no hard research to prove that.
Considering the huge sums involved, the absence is interesting.
Reality is certainly bimodal today, but that's because as an industry we're lagging behind capability. We're in the early days of the innovator's dilemma S-curve.
Only because you've not invested time[1] to learn a11y, but that is par for the course: LLMs are pretty good at impressing people without a deeper understanding of a field with its statistically average outputs.
My hot-take: one shouldn't oversee an LLM task whose output they are unable to evaluate.
1. And you don't have to! We have limited time, accessibility is broad, there are numerous standards, and screen readers can be unergonomic, to put it lightly. But a human has common sense, and can care. I doubt there's enough a11y training data to match a caring human testing and thinking through interactions. Sadly, human software QA is now threatened with extinction.
This reminds me of the Upton Sinclair quote: “It is difficult to get a man to understand something when his salary depends upon his not understanding it.”
LLMs feel threatening to anyone who had an edge by knowing how to navigate domains with a lot of weird and complex behavior. It’s nice to feel like businesses need you if they want to solve a problem. It’s scary when a cheaper solution arrives that does 70% of that deep knowledge navigation at 1% of the cost.
Also reminds me of that episode of Star Trek TOS 'The Ultimate Computer'
And the STTNG episode 'The Game'
Einstein was correct, the only thing in the universe that is infinite is human stupidity.
That is why I feel threatened by LLMs.
The really weird gaps and inconsistencies just make it to untrustworthy. I spend so much time vetting all the outputs that it often cancels out the time it saves me, and I find enough errors that I don’t have an incentive to streamline things/not vet it.
To make the obvious counterargument, “then you shouldn’t be creating websites at all”.
I don’t actually believe this, but I know people who do. Some would add “shouldn’t be allowed to”.
It's debatable if the same should apply to the vast majority of software that is less critical.
How are you supposed to learn without doing? Who sets the bar for when you have achieved understanding?
And finally, in specific instances of creating front ends that are inclusive for users, I would argue that being willing to receive feedback and improve is vastly more important than getting it right on the first try.
Some people are writing the Netflix homepage (where an outage costs millions of dollars), and some people are writing a blog for three readers.
There are, roughly, 3 tiers of developers with regard to any such labor saving tech (js libraries etc.)
People who could do a good job low level and can do it faster with libraries. People who couldn't, or couldn't be bothered, before the libraries, but can now accomplish things. That is the good part. And then there are the unwashed masses, who couldn't dream of accomplishing anything on low level but now can, and who at least in case of JavaScript far outnumber the previous category. Like when I messaged a webmaster whose side would download an uncached 3mb script blob on every page load (it was their script, not ads), to render few paragraphs of text, and they responded that it was by design and the script couldn't be cashed because some variables in it changed based on time, and that is so large because it contains features necessary for other pages that have more than text. I think we'd all be better served if these people pursued a more appropriate career, for example in the roadside trash pickup.
It remains to be seen how it goes with llms, but personally I'm not optimistic.
No it's not, its the opposite actually its very bad and leads to far far more noise in the system to sort through to find value as someone who's competent.
The users are also entitled to hate your website or app. At what point do you admit you're just making excuses for cheap and sloppy work?
Modern frontend, or the "tower of leaky abstractions", is finally a common-sense mental model for web development. Supplanted by force on top of an exploding bag of eccentricities that is web standards and conventions. The fact that it works at all and is merely a little leaky is an accomplishment in itself.
You are contradicting yourself. Either its a "minefield...of edge cases..." Or it's a common-sense model. Not both.
I'm convinced we're still in this minefield of edge cases, not in a situation where we've solved all this, and where the tech to build "frontend" is clean, predictable, free of historical baggage etc etc etc.
All we have done, is plaster over these foundational mistakes and invcompatibilities. We haven't solved them. React doesn't solve the fact HTML was never designed to be a UI toolkit. Next.js doesn't solve the fact that JavaScript is full of design mistakes that prohibit it from ever becoming a safe, sane, reasonable (literally) language. Tailwind doesn't solve the problem of CSS being haphazardly introduced to style a markup which was never designed to be styled. Etc.
All LLMs now do, is having the "knowledge" of the horrors under the plaster, in a statistical model that was trained on examples from an era where 99% of the examples are hardly more than plastering to fix the ever reappearing cracks in the previous layers of plaster.
There is far more to it than all that.
I've interviewed far too many nextjs experts who couldn't do anything else. That's not a skill, that's just knowledge, which at this point is freely available.
Just not a correct interpretation. Many skills start that way and even some people make a whole career mastering one thing and one thing only.
Not saying being trapped in React land unable to break out is good. But being able to create something, even if it's just with Nextjs is still a good thing.
We should hate on the businesses that force us to take shortcuts, value quantity over quality. They wanted boot camps with code monkeys.
other people cant do anything with nextjs, or anything with any front end at all.
its applied knowledge, understanding how nextjs works, and using it to build some application
I've also been using react professionally since 2015 and I've yet to see a nextjs application in the wild. It seems to mostly confined to the startup sphere.
I'm doing the latter btw, so I know what they get wrong, but it won't fool me into building an unmaintainable mess. My frontend skills come in real handy every time the agents go off the rail.
1. Arguments like this seem to be based on the idea that, prior to AI, most of this type of work was being done by skilled artisans dedicated to quality work product. As I think anyone who actually worked in the industry and is being honest knows, this wasn't the case. There was a lot of mediocrity and worse.
2. I'm not sure the work is "lower quality" depending on how you define "quality". AI might result in an uncomfortable uniformity but at the same time, a lot of AI work product is pretty darn usable because the models have been trained against conventions that, love them or hate them, "work" for the vast majority of end users.
I think this is more of "another brick in the wall." There was already a LOT of pressure to do the bare minimum to fulfill requirements and then declare success. Now, those pressures seem insurmountable.
Of course, the requirements aren't always right, but in my experience, engineers/developers are just as capable as business owners of defining requirements poorly.
Have you ever heard of the idea of malicious compliance? doing exactly what is required, and no more, is the path to ruin for all of us. Requirements will never work this way.
Some of us were lucky to have a few periods in our career where this was the case. I would agree that this disappeared prior to AI.
The idea that every website or web app was being built by skilled artisans dedicated to the finer arts of their craft before AI is not realistic. AI didn't create spaghetti code, for example.
A lot of AI work product leaves a lot to be desired, but the realistic comparison is not to the best of what existed prior. Frankly, a lot of vibe coded apps are more functional and usable than web apps I've seen built by cheap outsourcing firms based offshore.
- Make something crappy fairly quickly
- Make something good a little slower
AI has introduced a third option:
- Make something really crappy at light speed
A lot of companies are very excited about this and it makes it hard to advocate for "make something good a little slower" (even though AI can help speed that up.)
It feels like a race to the bottom. Companies were already prioritizing speed over quality. With AI a lot of them are doubling down.
This would give the previous generation of frontend developers (aka C/C++ developers) a good chuckle. The web was viewed as a massive lowering of the barrier to entry and a "deskilling" of the craft. Assembly programmers probably thought the same of C/C++ developers.
It really feels strangely familiar to me: you could get very far very quickly without any real deeper knowledge and have a working web application within a few minutes. It felt like magic. Then you could customize it within the framework by skimming documentation and googling around until... you couldn't, because you had no clue how any of this really worked internally. And just like with vibe-coded web apps, you could recognize the standard framework web app that was patched together in an afternoon from a mile away, but it very much impressed managers.
Amusingly, I sometimes find that developers talk about their go-to frontier model in the same way that GUI developers talked about their favorite web framework ~15-20 years ago. Personification of the tool, even identification with it, frustration that things that worked with version X got worse with version X.1, "I am developing things 10x faster now", "I am going back to writing XYZ by hand", etc.
Ironically, this goes well with LLMs, where you can nail down the patterns and then the clanker can follow them. There is nothing wrong with using clankers for fast typing.
Sure, as you pushed it further, like add versioning to objects, things got very tricky and not guaranteed to work, and no way to fix.
But otherwise, yes, the attitudes look similar.
De-skilling for skills that just aren't that relevant anymore because we've solved the problem (with AI or otherwise) has been a constant in our industry ever since computers were invented.
Move on, learn new skills. And actually effective use of AI is a skill some people seem to be struggling with. Stuff still doesn't build itself. If you can prompt it right, you can get it done. But are you prompting right? Are the tools doing what you ask them to do? How do you know? Did you check? I seem to spend an awful lot of time prompting AIs. I'm definitely getting better at it. But it's still a full time job.
And I'm sure in a decade or so we'll look back on this as a very inefficient way to build software. The tools will get better. The AIs more autonomous, etc. Because if you spend a day doing repetitive things prompting the same things over and over again, somebody or something should probably automate that!
The entire complaint here is that automating this risks that was is encoded is not what you want.
I’m sorry, what? This is such a shit take, I don’t even know where to start. What’s repetitive about them? That all UIs contain buttons or what?
If this is something that people actually believe, I can understand why UX has went to shit and then got even worse since the 90s.
At my work in insurance solutions we're solving perabyte scale problems. We do not have a Rust developer in the team, but taught ourselves with the AI and now automating workflows which took days to under a minute now.
If you look at the speed a company rolls out new products/features, it should be obvious that "interesting ideas" especially good ones are infrequent and rare.
No offense, "using Rust to address a performance problem" is by no means novel or interesting. That is just another person's CRUD.
Look at how Meta's "ideas" turn out.
VR and metaverse surely sound like interesting stuff. Right? Right???
Literally just saw startup demo their app and their app which had that “vibe coded UI” look to it.
They were given devastating feedback of “Guys this is kinda cool, but you obviously had AI build this and thus anyone else that wants this can have AI build it for them too very quickly. As such there’s really no value in what you’re trying to sell here.”
It was cold, but accurate feedback they needed to hear.
Rounded corners still seems to be the unending trend through that anything that wasn't already well defined gets infected with.
Once you are using AJAX and manipulating the DOM the complexity of asynchronous communication is going to lead to something of a similar magnitude as React. Sure you can write
and not have to bring in <Helmet> but even if you think of front end as "just" updating the UI when data comes in from the server a complex application may need to update several bits of the UI and at some point you need to create some kind of communication or state management bus that handles that. Could it have been done differently? Sure.If there's something wrong with the Reactisphere it isn't that it creates an abstraction which other abstractions live on, but these are leaky abstractions. You could use something like Bootstrap or MUI without understanding CSS if you are making something very simple and don't care what it looks like (don't have a marketing team who cares what it looks like!) but to do pro-level work you can put in front of customers you have to understand HTML, CS, JS and all the the frameworks used in your project.
Not to mention there are 1000X as many skilled engineers and you are competing with a global market. In the early 2000s there was very little competition. The skills of workers are loosely going to correlate with the demands the market puts on them, and it is extremely competitive now.
Especially elderly people who rarely use devices suffer from this (and their relatives who do IT support :-))
If FEs want to keep working in this area, I highly encourage them to become excellent designers. Many think they are, but can't quite fly solo without a designer and soar to the same heights.
Since...forever? You may not like the waterfall model, but unless you're at a small startup this is how most software gets made. Even the more collaborative shops where FEs give input on designs, it's just that...input on designs owned by a designer. That AI leveled the playing field is my point. It's now much easier for designers to subsume the responsibilities of an FE than the reverse. You know this is true because if it weren't, designers would never have been a thing to begin with.
And let's be honest, one of the best changes front-end development has seen is how previously complex problems now have built in, easy to use solutions. Yeah you could say it was harder to code layouts when flexbox and grid didn't exist and you had to deal with floated elements and absolute positioning, but the new setup is just better for everyone.
Customising select menus used to require lots of CSS and JavaScript to remake the element. Now browsers are implementing features to let you customise default select boxes the same way. Having an element expand to auto height use to involve JavaScript. Now it's something you can do in CSS alone. Creating modals used to involve writing CSS and JavaScript. Now an accessible and efficient version can be done with built in tech.
Meanwhile JavaScript frameworks are really just continuing the pattern started by previous tools, like WYSIWYG editors, Content Management Systems, jQuery, etc.
At the end of the day, any tech that gets more advanced will lower the skill floor and reduce the need to care about those minor intricacies. Most people don't need a particularly advanced solution to their problems, so whatever system can automate away most of the work will get used for that. It's not unique to web development or software engineering.
SVG+CSS+HTML were hailed as the modern replacement for Flash, but nobody ever made an authoring tool suitable for the masses. LLMs are kind of fixing that, just with a very different interface
Please note that that "any designer" should have had at least a fairly decent knowledge of ActionScript because Flash wasn't all just magic and sparkles. I know this because I was one of them. Though I had to learn ActionScript by neccessity, I actually learned HTML/CSS/JS before needing to deal with AS
Hand-waving AS3-driven app development in the 2010s as ‘some slight JS knowledge’ makes me doubt you were actually there. I was there, and that was not what was happening.
There is no break pedal on this stuff, it just rolls down the hill until eventually it doesn't. It's a runaway process that feeds itself.
At the end of the day, I have to make more architectural and business decisions than before - it’s just higher-level and more complex work.
On the other hand, there’s increasingly little reason to hire someone just to write APIs or work on the frontend, since AI handles most of the routine tasks.
So, this feels much more like the Industrial Revolution than “deskilling.”
This was a small part of a large code base. I am afraid what a fully agent coding would look like. How are other developers handling large code bases with ai. Just accept what its providing?
I can now understand the valuation of AI companies. Once you go in ai its difficult to go back. You need to spend more tokens just to make it work. Ai companies could train to make their code more obtuse, making users very hard to change manually!
Often - the people who are replaced don't recognize the inherent skills of the people who operate the machines that do their work.
But there are often non-obvious tradeoffs.
Having Ikea means we can have vastly, vastly more selection and choice in the things we put in our homes.
And the 'quality' is usually fit for purpose (just because it's not made of Oak, doesn't mean it won't last a very long time).
But when you see a winding staircase or those custom moulds .... well you realize 'what we've lost'.
There's always a trade-off even if the net positive is there.
That 'externalized craftsmanship' sure does add up though ...
It's not so much the people who _operate_ the machines as the people who _build_ the machines.
Do you really need to go that far back for a comparison? We no longer need human computers to perform tedious calculations, or typists to draft and distribute correspondence.
The simplification of frontend development was never a final state. It has always been continuously evolving through abstraction and automation.
In the case of frameworks ( and higher level programming languages ) you are operating at a new layer of abstraction with the specific intent to hide the lower level, that's the whole point of the framework.
LLM's don't actually move the abstraction layer. You're still coding in react/python/whatever high level language. Yes you can generate the code using natural language but you still need to understand what's being generated, verify its correctness, and reason about the system it fits into. LLMs don't hide anything they produce the code you otherwise would've written and hand it to you to review.
I remember this period differently. The frontend work was mostly, sometimes solely, all about turning whatever monstrous PSD came from the designer’s sick mind into HTML, and getting shafted if the result was not pixel-for-pixel identical. When project leads heard the word “semantic”, they had to reach for the dictionary. Upon hearing the word “accessibility”, they would set the dictionary on fire.
I think I also reject the premise of the article, that frameworks caused frontends dev to de-skill. For sure, that happened to some extent. But it also caused a lot of frontend devs to be incredibly skilled in their chosen niche. (React for instance.)
The former. It’s definitely the former, at least until subsidized tokens run out.
that "knowledge" we held was to combat the absolute shit that was the browser ecosystem 20 years ago lol. you could argue it was a time of great experimentation and creativity, but no unified ui/ux patterns, adding in css hacks and doctypes blah blah to try to catch all these weird edge cases, if you're still reminiscing that time not sure what to say. today's tooling while also messy in it's own way is 1000x bettter. also i've never in my life referred to it as "front of the frontend".
I guess some frontend frameworks can abstract it away but most don't and you almost certainly will run into the limitations of those frameworks and then you still need to understand HTML/CSS
https://www.youtube.com/watch?v=JOcz-H5u3Rk
Flash is/was the true time for front end innovation and people making cool unique stuff. html and javascript and usability studies killed all the fun and imagination
Not to be rude but this person doesn't understand the fundamentals of the topic they're discussing.
Frameworks just give patterns and abstractions to build a front-end, but you still have to actually know how to use those things to build a UI. You still have to know HTML, CSS, and JS (assuming you want to do it well, not just slap some junk together). Even with AI, unless you're comfortable shipping a half-working UI, just like programming: sorry dude, you still need to know your shit.
Sorry, but developers from 2012 didn’t have proficiency in most of these skills any more back then than they do today. I would argue frameworks introduced a lot of welcome debate and discussion of these things and actually helped disseminate these skills far beyond the “old guard”, not to mention the pressure put on browsers to normalize behavior and the huge improvements to the JS language born out of the induced demand of the huge rise of web apps that were all but unmaintainable in the before-times. Obviating the need to know about browser quirksmodes is a good thing and we have frameworks, in part, to thank for that.
This is not the lament of the code getting worse (it's not) but the coders losing the knowledge of how to do it by hand without LLMs. If people really wanted to learn how to do things by hand, they can. In fact the AI is probably going to be infinitely more patient and knowledgable than any senior dev if you really wanna do this by hand. Just turn off the AI's ability to modify the code and just have it give you advice on the side.
The reason why nobody does that anymore is because most engineers work for capitalists not artists. It's the same reason I don't know how to farm my own food or make my own clothes like my ancestors did. Most people do programming because it's a job - not because it's an artistic passion. And that's OK.
Apparently deskilled people are making it look like this is normal and it supposed to be so.
But i can relate to that. Another examples of deskilling would be, of course, Java, and a more modern example - Rust.
That said, i don't think deskilling is solving mass-production problem. It was already solved with open-source software, or with a software as is.
Software is information and there is little to no cost of copying information. So mass-production isn't the problem that is being solved here.
IMO the problem being solved is that business need unskilled labor, that is slop.
You would think that if business is producing slop, it will be replaced with another business producing quality stuff. If that was so, over time, there won't be any slop on the market, but if you open your app store, you are welcomed by all kinds of slop.
Because slop is what they buy. Supply is only following the demand, business need to produce slop because people are buying it.
How many of you guys have Claude subscription? Do you know that 5 years ago i would be asking "How many of you guy have GitHub Copilot subscription"?
This is what people buy, so it is deskilling, but not a mass-production, it's just slop revolution, slop is the new norm.
But situation was exactly the same before the AI. You would still get your wordpress, your React frontend and Java Spring backend.
AI doesn't change anything, it just takes the job of a poor slopper who made a living by coding React frontends. Anthropic just took their job, that's it, and you don't see the difference.
What does he mean by this? What skills were lost? Writing HTML templates?
The effect of this is that people who never learned those things are working with a limited toolkit both in solving problems and debugging. And every so often I get to blow someone’s mind with an old trick :)
It’s not all bad though! I’m happy to never build a layout with floats again.
Unions are, by nature, anti-progressive. They would rather use 15 year old technology, then replace workers and allow efficiency.
This will never work in the tech industry.
That could be a good thing, or a bad thing.
Maybe it will push more people into medicine, science, art, or other worthwhile careers.
Or maybe they'll end up lawyers, SEO experts, or venture capitalists.
It could go either way.
But before React, I don't recall frontend as very inspiring and joyful.
It was fun to see your work immediately on the screen. I did apply skills and had to solve some weird situations. I could optimize our CSS with OOCSS approach (later used in Bootstrap) -- only to complaints -- semantics! too many classes! (my trump card was that their commits contained +200 lines of CSS, while mine mostly had 0 -- and our CSS was already bloated into several megabytes).
But this was a dead end. I tried making tools to find out unused styles, to automate some patterns -- like click a button and load some content over Ajax. But the guys, who copy-pasted code with dumb solution to this, got 2-3x more tickets closed. I proposed a tool to make screenshots of pages and diff them to search for regressions, but the response was it's heavy RnD, we're not a research institute, we got to ship the next popup tomorrow, etc.
Nobody gave a shit much earlier.
you will need 100 times less of front end , if any action can be asked or explain in voice, text or video or slides always custom to your request. you don't need navigation complex forms to structure. just text, animation to wait, and a few way to embed more complex structures, like text and basic html with charts.
this sounds like "almost ui" but in reality it's not. this is text + some custom visuzalizations adhoc.
As someone who didn’t really know that being a front-end dev putatively doesn’t involve thinking about those things anymore, I think that list conflates a couple of different things.
Things like the differences between browsers and CSS/HTML quirks, needed to wrangle a document markup language into creating user interfaces, are accidental complexity caused by particular path dependencies, and if they can be abstracted out, that’s a great thing.
Accessibility, interface design, performance, and other things related to user experience, on the other hand? Those are mostly orthogonal. A UI framework can raise (or in some cases lower) the bottom in the sense of facilitating reuse of (hopefully well-designed) components, but no framework is going to make your UI accessible or well designed by itself.
In the fabled past, frontend development didn’t require you to be highly qualified in these matters – web UIs were simply terrible, mostly. High skill level was not required because nobody expected anything from web UIs beyond the barest core functionality.
There was UI programming before the web [citation needed]. In a sense it was "deskilled" because you used a "framework" aka the OS windowing and widget libraries rather than drawing rectangles manually (except in some special cases like games where very custom UI is desired – but those custom controls invariably have roughly 0% of the UX affordances provided by standard ones). Back then, Visual Basic and other RAD tools (anyone still remember that acronym?) were front line of "deskilling", but honestly WYSIWYG visual design is still one of the best ways to create UIs, it’s just rarely done these days for various reasons.
With Stack Overflow, you got multiple answers from different people with different viewpoints and different approaches, each consistent within itself. You could figure out where the author of each answer was coming from and judge whether they seemed to know what they were talking about. You could weigh the trade-offs and merits of the different answers against each other.
With LLMs, you get a single mushy pile of slop, not grounded in any person's actual experience or judgement. It might pretend to offer different perspectives, but it can't really, so it's much harder to evaluate.
The period 2015-2025 was a decade of frontenders fooling their managers into letting them build their own job security into their web UI.
I've seen people argue that LLMs will just add another layer to the top of the compiler stack: instead of writing code, we'll use English, and run it through a pipeline:
What's one more layer, right?But what the author says about agents being "undeterministic abstraction" shows why that will never work.
Compilers rely on a concept called observational equivalence[1] to define when two programs are basically the same; this allows them to make changes under the hood like unrolling a loop or targeting another machine. Now, it turns out we know a lot about how and how not to do this, thanks to a logician named Frege who worked out exactly which properties a "definition" would need to have to count as a definition without becoming an axiom. In particular, that it should be "eliminable" and "conservative"[2]. In plain language, that a formal definition should always be able to be eliminated by rote string substitution, and that it shouldn't smuggle in any extra assumptions. When we talk about things like syntactic sugar[3] or hygienic macros[4], we are basically applying Frege's two conditions to programming languages.
LLMs are neither. They cannot reliably or provably go from the prompts they are given to the source code they generate, and they make a ton of implicit assumptions when they do so. There can never be any equivalence between two "prompts" in the same way that two programs can be equivalent modulo some level of abstraction. The whole process of starting from prompts is wildly nondeterministic, which is why the only pattern that works is to generate the code, review it, and test it, and then check it in and use that as the starting point for the next prompt.
Which is not to say that LLMs aren't useful for code generation; they clearly are. But they don't provide an abstraction that lets us get away from the details of actual code, and thanks to Frege we can understand why they never will.
I can say all this with such confidence because I did once write a wild little Python library that used a bunch of introspection to actually do this[5]. And it absolutely did not work in practice beyond toy examples.
[1]: https://en.wikipedia.org/wiki/Observational_equivalence
[2]: https://plato.stanford.edu/entries/frege/#ProDef
[3]: https://en.wikipedia.org/wiki/Syntactic_sugar
[4]: https://en.wikipedia.org/wiki/Hygienic_macro
[5]: https://github.com/olooney/fourth_gen
>What did previous generations of craftspeople do when everyday goods and buildings suddenly could be mass-produced by industrial processes? One reaction was to copy the style of old, and make the industry crank out widgets and buildings that at least looked like they were handcrafted.
Is this a reaction by craftspeople? I don't think it is, I think this was what industry people did?
>Countering this trend of historicism, an alternative approach was developed by the Bauhaus movement of the early 20th century. Instead of pitting factory workers against craftspeople, their stated goal was to have them work together, and redevelop the arts and crafts with industrial manufacturing processes in mind.
From what I understand the Bauhaus movement has/had a huge influence on modern architecture, which people tend to like less than traditional architecture [1]. It feels weird to have that followed by "Caring about quality and the user".
>The industrialization enabled lots of cheap plastic products, designed by people who didn’t take the time to think how they would be used and by whom – yet good industrial design is still a thing.
>And software like Wix and Next.js enabled the creation of lots of websites that load terribly slow and are not accessible – yet there are still practitioners of the front of the frontend out there.
I think the author really really really underestimates how important is it that something is "cheap". I personally like a lot having the option to use cheap and relatively good stuff, or pricier and better stuff, for most things.
This is a bit stretching the definition of "accessibility" but, I think in a way price should be thought as part of accessibility. If we consider that it's important that websites work well on slow networks, partially because not everywhere in the world has access to good network, partially because good networks cost money ; then I think we should consider that while a good website beats a bad website, sometimes a bad website beats no website. Sometimes a "cheap plastic product" means someone that can't buy the well designed product can still buy a product, and get started in a hobby.
This is pretty bad news for craftsmen I think, but as a software engineer that is very happy to be able to get into crochet or photo or cyanotypes or pottery or hiking for relatively cheap, I can't help but try to see the other side of software getting cheaper.
[1]: https://www.sciencedirect.com/science/article/pii/S026427511...
A modern tent is arguably the evolution of the Bauhaus spirit applied to structure. Tents do suck in comfort compared to pre-Bauhaus European buildings, but if you're going to carry a building to the top of a mountain, they're not a bad option!
ie. Pre-Bauhaus = It costs what it costs. Tradition reigns. Bauhaus = Mass manufacturing and material properties in-scope for design, resulting in often better design when holistically considered.
I’m actually building better UIs just because it became less time consuming to do so.
There is just a super noisy minority that spams the internet with slop so bad that no one can take their product seriously.
If LLMs help me never use a front end owned/dictated by a corporation again it'll be no bad thing, regardless of the quality of the code they write.
I have been a programmer for a long time and CSS is still the hardest language to master. There are countless quirks and APIs most people have never heard of that solve extremely specific problems.
For example, using @starting-style with allow-discrete to use display: none on CSS transitions. Knowing that you would need to use this API, what it does, and how to debug your CSS is a skill that will be hard to replace with an LLM because of the fine grained detail needed for CSS. If you do not know how this API works and you need to use it for whatever reason, and then need to adjust your transitions later, it's probably faster to have real CSS skills than to constantly have to prompt an LLM for you.
This is now officially a pet peeve of mine. I don't write code "by hand" I write code "by brain." A craftsman who does something "by hand" actually needs manual skills to produce that carved wood thing. Even if you know what you want and know what it looks like, you need skill with your hands to make it happen.
Software is not like this. I don't need typing skill, the IDE autocompletes most of it for me. I think about what I want and it becomes reality. If you were using a bare text editor and typing out getters and setters your whole career, sorry, you were just doing it wrong. No wonder you love AI.
It still is!
> To distinguish what they’re doing from what “frontend” has become, practitioners of this arcane art nowadays often refer to it as the “front of the frontend”.
I have never heard this term before, but I'm sure someone will point me to the bullshit influencer who came up with it?
Frontend frameworks are really just for web apps and most frontend devs are familiar with several. If they cannot also write a web page from scratch, they're not really a web dev. This is not up for debate. If you hire someone for the role, you need them to handle the work. AI is not going to help you here when it gets into the testing and bugfix phase.
I'm sorry but that simply does not make any sense. How is increasing the breadth of your skills leading to a deskilling?
The author having worked with various technologies over time is also not an example of "deskilling", it's a way of asserting that they have had time to observe the deskilling of the domain (since deskilling means a particular domain requires less specialised skills than it did before, not that the workers are losing skills) happen.
When something goes wrong, no one understands anything.
Low accessibility, terrible performance, lack of any fundamentals of html and css, abuse of those awful solutions like Tailwind or using 2016 technologies like React for rendering what should mostly be static websites + some web component, all plagued by memory leaks and very basic usability bugs.
This idea that quality ever existed on the web is ahistorical at best.