See the entire conversation

The JS community has done a lot to rubbish the value of HTML and CSS and it has not been a good thing for users or developers.
This thread is giving me a lot of feels. I learned HTML/CSS so I could make simple fan sites and edit LiveJournal. It was incredibly fun. I was one of the only kids in my friends group doing it. By the time I reached college this wasn't "real programming."
Anil Dash 🥭 on Twitter
“Because the tech industry fought like hell to erect barriers against platforms like MySpace & Neopets that were letting underrepresented folks actually *make* the web instead of just consuming it.”
107 replies and sub-replies as of Nov 10 2018

:( Why is it always the fault of JavaScript and engineers? I started with HTML and CSS too, but now we work in large teams trying to build highly dynamic apps for people who compare them to their experiences with native apps.
JS developers who build everything with the wrong markup because they think HTML isn’t worth learning properly? Or that CSS is broken because they don’t understand it? Those JS devs?
Do you think I don't understand CSS?
Did I name you specifically?
Come on, he obviously didn’t mean you. There are always exceptions. I also know some really good and proper fullstack devs, but that doesn’t change the fact that the majority of them treat the frontend as a second citizen in their work (speaking from personal experience).
probably it is just not their daily bread and butter. I've seen plenty of FE engineers shamelessly writing low quality backend code too and I get why/don't blame them.
Teams and orgs are made up of people with diverse background/expertise so you cannot expect everybody to be good at everything. Abstractions can improve quality by hiding implementation details or extremely low level API complexity and enforcing good practices.
abstractions and tools*
Totally agree with you. The problem is that HTML/CSS is broadly considered to be simple/easy/trivial, which it isn’t of course. You need specialists for every layer of the stack. Frontend teams depend upon a diversity of talent, not a single conception of ability.
Yeah, I think that "people think that HTML/CSS is simple" is a false myth. I've never heard that from non-specialist coworkers. Actually I often hear "it is tricky" but the barrier to entry is low.
Then they just need to get something done and use the minimum knowledge necessary to get things done. Now expecting that only specialists are allowed to touch that part of the stack is a bit naive and doesn't work in reality.
That's why I said that better abstractions and tools are the way. Eg. styles in JS or a framework that has accessibility built-in is a way to help less knowledgable people being more productive and get thins done the right way.
Nah, I’ve heard it from plenty of back-end devs. I’ve seen those same devs churn out some of the worst front-end code I’ve seen in 20+ years, before handing it over so I could fix it once they were stuck.
yeah that's the example that shows that having small group of experts is not the way to fix this in organizations/teams. A small group of people can't keep up with the speed and needs of a larger organization. In proportion this is also valid for small companies with 1 expert
It's not always that; Java/C++ folks (particularly server-side) have a long history here. But there *is* that strain in the modern JS community (not you, ofc)
Isn't it still based on the fact that we build apps using technologies to build interlinked web pages?
It's frustrating that the attached thread doesn't seem to identify security concerns as one *valid* reason why "Put your random code on our servers" might not have been a great design.
This is the second time I've heard someone say that JS people rubbish HTML and CSS. I spend a fair amount of time talking to JS developers and I have never heard anyone do this. Can you remember who did this and when?
It doesn't make any sense to me. The primary thing JavaScript does is generate HTML and CSS. It's like somebody who builds ovens saying that bread is stupid.
Not "stupid", just not as valuable (in the eyes of ovenmakers) as excellence in ovens. Warped perspective plays out in subtle ways.
focusing on html/css is not different, just another middle technology to the real thing we're after: the user experience.
Of *course* that's true. Strong agreement. What I observe in so many cases these days are bad trade-offs being made because CSS/HTML aren't the "right way" (when they very much are, post total-ordering)
I'm again struggling to understand. What does somebody who thinks HTML and CSS aren't the right way think is the right way?
Usually arguments like this are circuitous complaints about JSX and css-in-js. Not sure if that's the case here, of course.
I guess when people talk about ignoring html is with js you can do a entirely website without using anything but div Use it properly is about a hundreds of components created for each use
Agreed. One example of this can be when adhering to good a11y practices “ruins” certain declarative codeflows and therefore (I’m guessing?) their developer experience. I’ve seen trade offs made because they didn’t want “ugly” code and blamed HTML.
It is possible that I am too deeply a native HTML speaker to understand somebody who finds it difficult.
I honestly think that a lot of tools used nowadays gloss over nuances and can make some folks who are not well versed in HTML feel that it’s wrong, instead of realizing the tool was not initially designed to elegantly deal with finer details.
I'm really lost in this conversation too. What tools keep people from using a button instead of an div ... or am I totally missing this all the way?
It's not that any of these tools prevent people from making accessible web apps (In fact, many of them make it easier to build complex a11y flows)... it's that, for some reason or another, developers *aren't* making their apps accessible
Silent routing, “ugliness” of dynamic focus calls, avoidance of real form submissions, and divs as buttons in official documentation are all trade offs I have seen as a result of not valuing deep semantic HTML/CSS knowledge.
Btw if you see anything like this in React docs please let me know and I’ll fix! Thanks
Thanks Dan, will do! 🙇🏼‍♀️
Yes on a11y, and yes, div vs button argument is important But when “semantic” conversations like this come up, I get confused What happens when you have anything more complex than an article? In an SPA, does the end user see the effects of sections, asides, mains and headers?
A user with a screen reader sure does
And so do keyboard navigators
Yes! That means something to the web rotor. Assistive tech users rely on the semantic meaning of these things to navigate your document. They can jump to a header, or footer, or nav, etc. It matters a lot!
This is a fun part of my advanced react workshops. I pull up some pages and turn on my screen reader and show why semantic markup matters. Most people are like 😳
My Stuff Everybody Knows talk always pushes hard on the importance of semantic markup for its accessibility impact.
Ok, now I’m learning something! I need to do some googling Beyond flying you to NYC for a workshop (I will def. try to make it happen), do you have handy any good v bad comparisons regarding semantic SPAs? These days, I’m lucky to have v. limited envs to build for, but...
I know a guy who runs a JS bootcamp. He just "discovered" HTML event attributes last week. He got excited and told the instructors to stop teaching DOM event listeners, because learning HTML event attributes will help students more quickly acclimate to writing JSX. true story :(
I'm with you. I cannot really get into the headspace of HTML being a difficult language to learn/use. Knowing some nuances takes time to get expertise in, but that's every language.
Value of something is not necessarily linked to its difficulty. We’re not saying it’s overly difficult we’re saying that knowing it well is culturally devalued and has been for a while.
Ahh gotcha, gotcha. I must have misunderstood Laurie's tweet 😅
are we friends now alex
I don’t know Alex, I think Suz hate you 😌
my deepest irrational fear yet again exposed
Yeah Suz, I think you should read into the fact Alex is responding with just gifs and hasn’t actually……used words
CSS isn't hard, but there is almost no friction against doing it badly if you don't take it seriously, which requires understanding both CSS & the design system. So I've noticed developers often think it's difficult, and that expectation them to do an even worse job writing it.
I do wish CSS the language had more friction against bad CSS (though I'm not sure what that would look like), but that's only tangential to your point as it wouldn't necessarily make developers value CSS.
When I see a website full of div's with onclick handlers, it seems like somebody churned through a tutorial for React or whatever user UI abstraction JS framework, then wasted a few weeks rewriting HTML/CSS stdlib (poorly) instead of learning to use their full toolkit.
Do the React docs have div click handlers or something?
(Also, don’t forget everybody learns in a different order than yourself, mistakes are part of learning)
That's the hard part! I empathize with these devs for doing the best they can to produce something workable. It's just frustrating to see a poor experience due to inexperience or deadlines or other constraints, and being unable to help them improve their skills and product.
<button onClick={...}>, more like 😉 And that's just fine! ... if you're building a cool client-side interactive experience, like an app that runs in a browser. My bugaboo is code like <div className="link" onClick={ window.location = '/next' }>.
I literally have a slide about not doing that in one of my talks.
I bring this up in all my workshops too. I guess I don't get why this is React's fault as people seem to imply?
Perhaps double-edged sword + Maslow's hammer? JS UI/interactivity libs like React provide astoundingly usable and flexible tooling for webdev. If a dev can easily code a pretty good website using only these great JS-first tools, is there a need for <a href>?
Wash your mouth out with soap!
Natch, it's not really any particular lib's fault: vanilla clientside JS is plenty of an enabler for making an inaccessible website. <div class="link" href="/next" onclick="window.location = this.getAttribute('href')" /> ... ugh, @seldo, now I really need some soap.
JS, CSS, and HTML are trivial when your needs are trivial, otherwise they can be a challenge. When you want your HTML to read like a novel, it' easy. When you want it to read like the House of Leaves novel, that's when it's tricky to Rock a rhyme that's right on time. It's tricky
Or another is using divs and spans in replacement for interactive buttons, headers, menus, and other things because you can just change the style in css or use JS to make it look more good and interactive.
In fact, I would argue that it’s HTML (& HTTP) that’s been wildly successful, and JS has just been riding its coat tails.
in my own experience it has commonly been former exclusively backend developers who have decided to switch to frontend. They trivialize details and nuances, and also reject learning HTML and CSS at the depth needed to write great experiences.
For me, it's stuff like… that springs to mind. The tide has turned there though, although it's rebranded as serverlessside isomorphic prerendering buildtime.
Progressive Enhancement: Zed’s Dead, Baby
I've got bad news: Progressive enhancement is dead, baby. It's dead. At least for the majority of web developers.
This is always fascinating perspective for me b/c when I first read that article, I let out a sigh of relief that someone finally called out all of the righteous patronizing attitudes I’d heard from many PE purists. Maybe we’ve all been a bit sensitive, IDK.
An article that promotes 141kb of JS for first-render isn't going to bring me relief. Especially as I've seen how much the less privileged in the world struggle with that.
That’s a detail, there was relief with the push back against an attitude. I hope people see and understand how that attitude comes across on any side.
That's a pertinent detail that affects more than feelings.
It’s not relevant at all to what I was talking about. I’m not debating the details of file size and download perf. I’m saying people can be jerks about their ideas and we can be better.
I legitimately was just ranting about this very concept today, as a former Backend dev who switched to Frontend I get so frustrated having my advice and feedback ignored because I'm a FE engineer. I shouldn't have to spotlight my resume of 7 years of BE to get a word in?
Lately for me it's people who identity full stack or JavaScript developers who seem to need reassurance that they're doing real, serious engineering.
I feel that the sentiment is that knowledge of HTML/CSS alone is useless, and if you aren't a JS developer, you don't have anything to contribute. i.e. you interview for a position where you'll be doing a11y and pushing pixels around and you are judged on doing Fibonacci in JS
HTML and CSS are sort of taken for granted and the JS is seen as the "hard" part. Don't want to open the sexism can of worms, but can't say I haven't seen the CSS and HTML viewed as something for the women on the team to do.
Lots and lots and lots of JavaScript developers I interview (or work with) say they don't like CSS, will avoid writing CSS, are excited when there are JS solutions to things they would do otherwise with CSS, sigh when they have to work with CSS. The general message grows apparent
Go into any thread about CSS in JS or JSX vs HTML and see a tweet saying, "this is about a bunch of butthurt web designers afraid of their skills becoming irrelevant." One whiffing of that here too. Safely ignored in this perspective is the man behind the curtain.
Implicit in it are that HTML and CSS have no value worth preserving and are rightfully becoming irrelevant.
Which JS community are you talking about? Not the one I belong to indeed. Maybe you meant "backend programmers community" instead? If so I'd agree. Because a lot of them still look down on HTML, CSS *and* JS, which was also not a real programming language then...
...but are js community
Yes. And that's why my heart is so heavy over our devaluation of our peers' work.
like what tho I don’t get it I can’t connect your subtweet to a specific action or person
Then you are perhaps conjuring an absolutist version of my statement, which is not what I meant (apologies for not being clearer)
It was incredibly fun to develop HTML and CSS in your machine ! Until Chrome started to require stricter sandboxing and not allow loading local resources. Now you need a local webserver and CS degrees. Thanks Chrome
You can still load local CSS and HTML. You can’t make XHR requests from a file:// loaded page, but that’s a 💯 valid security constraint.
that entire quote thread is self-indulgent butthurt (and explains why I have them all muted). times change. shit happens.
Honestly, as a JS/React dev, the thing that impresses me the most are people who are CSS wizards.
I think it’s a sign or symptom that engineers want to build apps with one language. I don’t style my iOS app in another technology if choose swift as my language of choice.
HTML and CSS are simply weak languages - can't do DRY. We've been exploring ways to address this since the web started. JS is just the latest tool to be used for this.
Web Components and the CSS cascade are both DRY mechanisms.
Web Components is JavaScript. CSS cascade isn't DRY enough for some.
Some people don't understand CSS enough to use the cascade nicely. And I'm not sure how you're wanting a content container to be dry. I want my content to be anything but...
Wait... you’re just realizing this?
Me? Nope. Finding a little of the gumption I've lost, though.
Alex, don’t forget... you are a part of that JS community.
Or the industry and hiring and it’s bullshit! These things matter and the days of being devalued are over!
Never met a developer who said HTML and CSS are not valuable. Now let’s be clear, if you only know HTML and CSS, you will probably not get hired over a JavaScript dev. Not because your skills are not valuable but because HTML and CSS and are not considered as difficult to learn
1. "Never met a developer who said HTML and CSS are not valuable" 2. "HTML and CSS and are not considered as difficult to learn" I hope in #2 the people not considering HTML and CSS difficult to learn are not developers, because that’s a clear way of saying it’s not valuable.
I guess it also depends on the company. My experience with agencies is that they do hire HTML/CSS coders (but pay them less than other devs). Startups and product teams I’ve interviewed at were more focused on JS, and especially "full-stack".
JS community has done what was needed to fill the gaps browsers left people with.