At the risk of drawing ire.

HTML and CSS are not programming.

And neither does that have anything to do with elitism nor with gatekeeping, stop saying that and hear me out. It's just a statement about the nature and semantics of work and words. Let me explain.
When you say you program a TV, or you talk of the radio program, the context is TV or radio and that defines what program means.
When the context is computers, the word programming implies computer programming and thus computer science. That means something specific.
So what does computer programming mean? It refers to general computability. That's what the word computer means. With an underlying model like the Turing Machine or the Lambda Calculus, which allow for general computation, and a notation to describe a program on that model.
A notation to describe a computer program is what we call a programming language. And keep in mind, it's about a model that allows for general computation. In other words, you can take any algorithm and phrase it in any language that is a programming language.
By the way, regarding computation, all programming languages are equivalent. The effort to express algorithms varies greatly between languages and is a subject of constant debate and evolution. But regarding the ability to compute, they're all equivalent.
HTML and CSS aren't notations for models that allow for or are designed for general computation, they are not programming languages. One doesn't simply write some HTML and/or CSS to calculate the Fibonacci sequence, some digits of Pi, the flight path to the moon, or Game of Life.
That doesn't mean that HTML or CSS are rubbish or simple or anything like that. It is purely a statement about general computability. HTML and CSS can be tricky, and doing them well requires a lot of knowledge, skill, and dedication.
It's great that there are so many people that prove the skill and brains to master HTML and CSS. And many of these people do really great stuff with it. Super great stuff. Just not general computability.
You CAN build websites that utilize general computation to calculate the Fibonacci sequence, some digits of Pi, or the flight path to the moon, in the browser. You will then use JavaScript or something like that. JavaScript is a programming language, allowing general computation.
When your skillset is HTML and CSS, and you're good at it, you've mastered something difficult and can build great stuff. You're a developer, an engineer, a coder (sic!), but not a computer programmer.
And that has nothing to do with elitism or gatekeeping, but with the fact what computer programming means: using a programming language as means to tap into general computability to solve a problem at hand using computation.
When we put oxygen and hydrogen together, it gives an explosion, and we can drive rockets with that. But it's not a nuclear reaction, it's a chemical reaction. Calling it a nuclear reaction would simply be wrong. Same with HTML and CSS. It's not (computer) programming.
Why coder? Because of what code means. Code relates to the mastery of coding and decoding information using symbols and understand their syntax and semantics. Computability is not implied.
Does it matter? I think it does. If you know HTML and CSS, I know I can trust you with some DocBook and DSSSL work. You will learn it quickly, you know the principles. But I can't trust you with general programming work until you first learn, well, programming.
But I will also know that you don't need to start from scratch. You will already understand symbols, syntax, grammars, structure, coding. It's "only" the computation part that's missing. If you've picked up HTML and CSS, chances are, you'll pick up that as well.
P.S. You don't need to tell me that CSS is now Turing complete, that's neither useful nor helpful nor meaningful, if that's your argument, go learn yourself some TeX and then read some Knuth.
You can follow @christianhujer.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: