Skip to content
DevMeme
3686 of 7435
The First Rung on the Coding Ladder: The HTML Debate
Juniors Post #4025, on Dec 13, 2021 in TG

The First Rung on the Coding Ladder: The HTML Debate

Why is this Juniors meme funny?

Level 1: Cooking vs Plating Analogy

Think of making a website like preparing a meal. HTML is like the basic ingredients and the arrangement of food on the plate – you decide what pieces go where: meat here, potatoes there, a side of vegetables in the corner. CSS is like the seasonings and plating style – you choose the colors of the plate, drizzle sauce in a fancy pattern, and sprinkle herbs on top to make it look nice. Now, actually programming (using a true programming language) is like cooking the meal in the first place – heating things up, mixing ingredients, and following a recipe to turn raw stuff into the finished dish. In the meme, the person thought arranging things on the plate (HTML) and sprinkling some garnish (CSS) was the same as cooking the meal. Their friend kindly pointed out, “Hey, cooking the meal (programming) is a bit different from just arranging or decorating it.” The newbie then said, “Fine, I’ll start by sprinkling garnish (CSS) instead,” which is funny because seasoning by itself isn’t cooking either. In simple terms: HTML and CSS are how you set up and style the webpage (like arranging and decorating food), but a true coding language is how you actually make things happen, like cooking the food. The joke makes us smile because the beginner is eager and doing the easy parts first, while the friend is nudging them to realize there’s more to learn beyond just the presentation. It’s a light-hearted way to show the difference between making things look nice and actually making things work.

Level 2: Markup, Style, and Real Code

Let’s break down what’s going on for someone new to this WebDevelopment joke. The conversation is between two people: one is just starting to learn to code (a newbie), and the other is a more experienced friend. The newbie says, “I’m starting with HTML… it’s coding.” The friend replies, “HTML is not a programming language.” What’s the deal here?

First, some definitions in simple terms:

  • HTML – which stands for HyperText Markup Language – is essentially the structure of a webpage. Think of HTML as the skeleton or building blocks of a website. You write HTML to put content on the page: headings, paragraphs of text, images, links, etc. Each piece of content is wrapped in “tags” (like <p> for a paragraph, <h1> for a top-level header, <img> for an image). These tags tell the browser what each piece of content is, but not what to do with it beyond displaying it. HTML by itself is pretty static. When you load an HTML file in a browser, it will show everything you wrote (the text, the images) in the order and hierarchy you put them, but it won’t have interactive behavior beyond clicking links, for example. It’s often called a markup language because it “marks up” content with labels. It’s a foundational technology of the web, but it doesn’t handle logic or interactivity on its own.
  • CSS – which stands for Cascading Style Sheets – is the design and styling language for the web. If HTML is the skeleton, CSS is the skin and clothes — it makes the webpage look pretty and well-formatted. With CSS, you can choose colors, fonts, layouts, and even simple animations. For example, you can say “make all <h1> headings blue and 24px large” or “put a background image on the page” or “when someone hovers over this button, change its color.” CSS “cascades” in the sense that styles can apply broadly and be overridden for specific sections. It’s powerful for visuals, but importantly, CSS doesn’t add new content or logic; it just decorates the HTML content. You usually write CSS in a separate file (style.css) or inside <style> tags in the HTML, and the browser applies those styles to the HTML elements.

Now, what is a programming language then? A programming language (like Python, Java, JavaScript, C++, Ruby, etc.) is a way to write instructions that the computer can execute to perform tasks or make decisions. When you write code in a programming language, you can do things like:

  • Perform calculations (e.g., calculate a salary, simulate a physics equation).
  • Make decisions with conditions (e.g., “if the user entered a positive number, do X, otherwise do Y”).
  • Use loops to repeat actions (e.g., “repeat this action 10 times” or “for each item in this list, do something”).
  • Store and change data in variables (think of labeled boxes holding values that can change over time).
  • Respond to user input or events (e.g., when a button is clicked, run some logic).
  • Basically, implement logic and dynamic behaviors.

HTML and CSS do not do those things by themselves. If you write pure HTML and CSS, you can create a page that looks nice, but it won’t calculate anything or respond with new behaviors when you click a button (beyond maybe using built-in browser capabilities like a checkbox checking itself, but even that doesn’t require any logic from you). For real interactivity on a webpage, you’d introduce JavaScript – that’s the programming language that works in the browser to make pages dynamic (things like reacting to clicks, fetching new data without reloading, showing alerts, etc.). In other words:

  • HTML = content and structure.
  • CSS = presentation and style.
  • JavaScript (a programming language) = behavior and logic.

So when the friend in the meme says, “HTML is not a programming language,” they’re pointing out this distinction. HTML and CSS are often the first things beginners learn in web development because they are relatively straightforward and you get visual results quickly. It’s really common for newbies to proudly say “I’m learning to code! I’ve done some HTML.” And indeed, writing HTML/CSS is writing code in the general sense (you’re typing in a computer language syntax). But seasoned developers often use the term “programming” to specifically mean writing logic or building algorithms.

It’s a bit of a semantic nitpick, but in developer culture, it’s a running joke to clarify it. Think of it like this: if someone said, “I learned a new language,” you might assume they mean a spoken language like Spanish or Chinese. If they actually meant they learned Morse code, someone might reply, “Well, Morse code is a way to encode letters, but it’s not a full language by itself.” That’s similar energy here. HTML encodes content structure, but it’s not a full-fledged programming language with logic.

The meme is highlighting a beginner’s misunderstanding and the gentle correction from their friend:

  • Beginner (Grey messages): excitedly says they want to learn coding, mentions it’s free (you can find tons of free resources to learn, and indeed writing code doesn’t require buying anything special beyond a computer). They say “I’m starting with HTML. It’s coding.”
  • Friend (Blue messages): Encourages the idea of learning (“great resolution!”) but then corrects a specific point: “HTML is not a programming language.”

You can sense the beginner feeling a bit defensive or embarrassed. They respond, “its coding” — basically insisting that what they’re doing counts as coding. This is totally relatable; when you start out, you want that validation that you’ve joined the coder club by writing some HTML. From the beginner’s perspective, they wrote text in a file and made the computer do something (display a webpage), so heck yeah it feels like coding! The friend, likely an experienced developer, doesn’t want to discourage them but is compelled to be technically accurate (classic programmer move). We care about definitions like markup vs. programming, perhaps more than we should. It’s that classic html_is_not_a_programming_language discussion you’ll find in many forums and chat groups.

Finally, the beginner concedes: “Ok fine I’ll start with CSS.” Here’s where an experienced reader chuckles: switching to CSS first instead of HTML is a bit like deciding to icing a cake that hasn’t been baked yet. Usually you need some HTML content to apply CSS styles to. The beginner probably figures if HTML isn’t “real coding” in their friend’s eyes, maybe CSS will earn more respect. Little do they know, the friend is probably thinking, “Uh, CSS isn’t a programming language either, but okay…” This miscommunication is where the humor hits home. It’s a cute misunderstanding: the newbie is so eager to be seen as doing “real coding” that they jump from one non-programming language (HTML) to another (CSS) thinking it will satisfy the friend’s criteria, not realizing the friend is internally facepalming. Seasoned devs see themselves in that friend and remember being the newbie too, so we laugh with a mix of empathy and “oh dear, I was there once.”

In summary, HTML and CSS are fundamental technologies for making web pages. They are often the first step for junior developers (gotta start somewhere!). But in the strict sense, they are not programming languages because they don’t involve writing algorithms or logic. The meme plays on this nuance. It’s poking fun at the beginner’s innocent mistake and the experienced friend’s need to set the record straight. This kind of exchange is extremely common in developer communities – someone will confidently say “I just wrote my first program in HTML!” and a chorus of devs will reply with some version of “Congrats! And by the way, HTML is not exactly a programming language…” It’s practically a rite of passage on the learning_to_code_journey. The good part is, once you’ve had that explained, you’ve leveled up in understanding what tools like HTML/CSS do versus what “real” coding entails. And hopefully, like in this chat, it’s done in a friendly, supportive manner (no one wants to crush the enthusiasm of a newcomer, just direct it correctly). The developer humor here is both instructional and good-natured: a wink from those who have been around, saying “Welcome to coding! By the way, here’s a fun fact about HTML.” It’s the tech equivalent of telling a first-time cook, “Awesome, you made a salad! You’re cooking now… well, sort of – technically there was no cooking involved, but it’s a start!” 😄

Level 3: Gentle Gatekeeping

At the core of this meme is a classic WebDev inside joke: the friendly but firm clarification that HTML and CSS are not programming languages. In the screenshot, one person excitedly declares their New Year’s resolution to learn coding, starting with HTML. The friend responds supportively at first (“That’s a great New Year’s resolution”) but then can’t help sliding in the well-worn correction: “HTML is not a programming language.” This moment captures a tiny rite of passage in the LearningToCodeJourney: discovering that not all languages in software are created equal.

Why is this funny to developers? It’s a combination of beginner_coding_confusion and a bit of frontend humor gatekeeping. Every experienced coder has met someone new who enthusiastically says, “I’m learning to code! I’ve started with HTML and CSS.” Seasoned devs grin because we’ve been that person – eager to call anything that involves typing angle-brackets and curly braces “coding.” Technically, writing HTML feels like coding: you type structured text, save it with a .html extension, open it in a browser, and voilà – something appears! It’s empowering for a newcomer. But veterans know that HTML (HyperText Markup Language) is, as its name shouts, a markup language. It tells a browser how to layout content: headings, paragraphs, links, images. It’s declarative and static. By itself, HTML doesn’t have logic or runtime decision-making. CSS, which our intrepid beginner offers to start next (“Ok fine I’ll start with CSS”), is for styling those HTML structures – making the background black, the text blue, positioning things just right. CSS (Cascading Style Sheets) is even more about aesthetics and layout. It’s powerful for design, but you’re still not writing instructions to perform calculations or handle input; you’re writing rules for how things should look.

So when someone says “HTML and CSS are my new coding languages,” senior developers chuckle. It’s a bit like someone saying, “I’m now a software engineer, I mastered Microsoft Word and Excel formulas!” There’s some overlap (Excel formulas are Turing-complete, funnily enough, but that’s another meme), yet it misses the point of programming. The humor partly comes from a subtle form of gentle gatekeeping in tech culture. Developers have this long-running, tongue-in-cheek debate: Is HTML a programming language? The near-universal consensus (often stated with a smug grin) is “Nope.” It’s almost a litmus test in forums: a newcomer conflates markup with programming, and veterans can’t resist correcting them. Not to demean the newbie, but to uphold our nerdy classification of tools. We love precise definitions: markup_vs_code. It’s like an inside rule – you earn a stripe as a developer when you stop calling HTML code “programming” and start calling it, well, markup.

This meme’s text exchange shows that dynamic perfectly. The enthusiastic newbie texts in lowercase casual tone (“I’m starting with html. its coding”). The friend, likely a developer, initially encourages (“great resolution”) but then sees the phrase “html… coding” and the inner pedant triggers. The blue bubble replies, “HTML is not a programming language.” You can almost hear the gentle sigh or the nerdy glee of correcting this. It’s done in a friendly way here – a quick reality check, not a harsh put-down. But it is a tiny gatekeeping moment: drawing a line between real coding and just playing with webpage structure. The newbie’s response “its coding” (insisting anything typed into a computer is coding) and “Ok fine I’ll start with css” shows they’re a bit flustered, possibly thinking “Ugh, semantics! If HTML doesn’t count, maybe CSS will make you happy.” Ironically, to the seasoned friend, CSS isn’t a programming language either! So the friend is probably shaking their head with a smile, seeing that the point flew slightly over the newbie’s head. This layered misunderstanding is comedic gold for developers – we’ve all either been the confused learner or the one facepalming at a well-meaning friend who thinks making a webpage is the same as writing code that solves equations or runs algorithms.

There’s also humorous irony in the idea of “starting with CSS” as a beginner. In practice, most people learning web development start with HTML, then add CSS for styling once there’s content to style. Saying “fine, I’ll start with CSS” as a first step is like saying you’ll decorate a cake before you’ve baked it. It’s backwards – and that absurdity isn’t lost on an experienced reader. It highlights the newbie’s lack of understanding: they’re just picking things they’ve heard (HTML! CSS!) without grasping how those technologies are actually used together. This triggers knowing laughs, as every developer remembers fumbling through those early days of confusion, mixing up terms and tools.

Finally, consider the context: “It’s free and if I’m serious about being a math major, I need to know how to code,” says the beginner. Many of us in tech recall a similar naive logic: I want to do X, so I should learn programming. True enough, but then they jump into HTML because it’s easy to find and start (just open Notepad!). It’s endearing because HTML/CSS are often the hello world of visible coding – instant gratification with minimal complexity. The friend’s reply, “That’s a great New Year’s resolution,” acknowledges the intent. We want newcomers to feel excited. But the follow-up correction shows the other side: developers also enjoy their in-jokes and precise jargon. It’s a fine line between educating and gatekeeping. The meme leans into DeveloperHumor by exaggerating that gatekeeping moment just a tad. No one is getting truly scolded here, but it’s a playful poke: “Heh, kids these days calling HTML a coding language.” The seasoned devs get to feel momentarily superior (in a fun, collegial way), and the juniors get a free lesson in tech linguistics. In short, it’s a relatable scene from the beginner_coding_confusion playbook, wrapped in the warmth of a friendly roast. The contrast of grey vs. blue iMessage bubbles even visually reinforces the “two sides” – newbie vs. mentor – dynamic. We laugh because we see ourselves on both sides of that exchange at different points in our careers. It’s a tiny screenshot of mentorship and mild gatekeeping that the web development community knows all too well.

Level 4: Turing-Incomplete Markup

In the realm of computer science theory, HTML and CSS occupy a very different niche than general-purpose programming languages. A programming language, in the formal sense, is typically Turing complete – meaning it can simulate a Turing machine and express any computation given enough resources. Languages like Python, Java, or C++ have loops, conditionals, and variables that allow developers to implement arbitrary algorithms (from sorting numbers to simulating physics). HTML (HyperText Markup Language), however, is declarative: it describes what content is (e.g., "this text is a heading", "this is a list of items") rather than how to compute something. There are no if statements or for loops in pure HTML – you can’t write an HTML page that calculates Fibonacci numbers or makes decisions at runtime without embedding a real scripting language (like JavaScript). In formal language terms, HTML is a markup language defined by a grammar, closer to a structured document format (think XML) than an algorithmic language. It’s intentionally Turing-incomplete – by design, you cannot express arbitrary computations using just HTML tags, and the browser’s HTML parser doesn’t execute logic; it just interprets structure.

CSS (Cascading Style Sheets) is also declarative. It’s a rule-based language for styling HTML elements – essentially a set of pattern-matching rules that the browser applies to render colors, layouts, and fonts. Classic CSS can’t do loops or math beyond basic calculations (calc() is just a convenience for simple arithmetic, not true programming logic). There’s actually an esoteric question: can CSS be Turing complete? Over the years, clever hackers have tried to push the boundaries of CSS by abusing features (like counters or animations) to create weirdly complex behavior. But for all practical (and sane) purposes, CSS alone doesn’t have the constructs needed for general computation. It’s more akin to a styling configuration. In theoretical classification, neither HTML nor CSS qualifies as a programming language because they lack the ability to perform conditional logic or repetitive algorithms on their own. They live in a different layer of the web stack – the markup and presentation layers – and rely on actual code (JavaScript in browsers, or backend code on servers) to handle dynamic behavior and computation.

This fundamental limitation is actually a feature. By keeping HTML/CSS descriptive and not Turing-complete, web browsers can render pages more predictably and securely – there’s no risk of an <h1> tag suddenly starting an infinite loop or a <style> tag performing network requests. It’s a clean separation: HTML defines content structure, CSS defines appearance, and scripting languages (JavaScript) handle logic. The meme humorously highlights this separation through a beginner’s confusion: calling HTML/CSS “coding languages” is technically a category error from a theoretical standpoint. It’s as if someone proudly announced they built a working computer by arranging LEGO blocks – cute and creative, but theoretical computer science would note that without the electronics (logic circuits), it’s not a real computer. In the same vein, without loops and conditionals, HTML is not computational in the way languages like JavaScript or Python are. This is why experienced devs playfully insist “HTML is not a programming language.” It’s not gatekeeping to be mean; it’s grounded in the academic notion of what programming languages can do. The joke lands because every programmer remembers learning the difference: at some point, we all realize that writing static HTML is a different game than writing code that calculates or makes decisions. The newbie’s misconception in the meme is a tiny innocent collision with deep CS theory: confusing a descriptive markup system with a computational language. And the seasoned friend can’t resist a gentle correction, implicitly invoking decades of computer science definitions (and the whole markup_vs_code debate) in one simple text bubble.

Description

A screenshot of a text message conversation on a black background, timestamped 'Today 12:31 PM'. The conversation depicts a beginner's enthusiastic first steps into coding being met with classic developer pedantry. The first person (grey bubbles) announces, 'I have decided to learn how to code,' stating it's necessary for their math major, and that they are 'starting with html.' Their friend (blue bubbles) responds, 'HTML is not a programming language.' The beginner defends themselves with 'its coding,' but then concedes with a hilarious misunderstanding: 'Ok fine ill start with css.' The humor is rooted in a rite of passage for many developers: the semantic debate over what constitutes 'real programming.' It perfectly captures the disconnect between a newcomer's perspective and the gatekeeping tendencies within the tech community, as the beginner swaps one non-programming language for another

Comments

32
Anonymous ★ Top Pick Correcting a junior that HTML isn't a programming language is a rite of passage. Watching them pivot to CSS is the universe's way of logging an unhandled exception in their career trajectory
  1. Anonymous ★ Top Pick

    Correcting a junior that HTML isn't a programming language is a rite of passage. Watching them pivot to CSS is the universe's way of logging an unhandled exception in their career trajectory

  2. Anonymous

    I told the new hire HTML isn’t a language; now he’s busy proving CSS is Turing-complete and Legal’s asking if we need to license it as an execution environment

  3. Anonymous

    This is like watching someone escape a burning building by jumping into the volcano next door - technically they're no longer in the building, but we've somehow made the situation worse

  4. Anonymous

    Joke's on the gatekeeper: CSS with selectors is closer to constraint solving than half the YAML we call 'infrastructure as code'

  5. Anonymous

    Ah yes, the classic 'HTML isn't a programming language' correction - the developer equivalent of 'actually, it's GNU/Linux.' While technically accurate (HTML is a markup language, CSS is for styling), this pedantic gatekeeping perfectly captures why beginners often feel unwelcome in tech. The punchline? After being corrected, they pivot to CSS - which is *also* not a programming language. It's the Turing-completeness litmus test applied with all the warmth of a 404 error. Perhaps we should tell them that to truly code, they need to start with assembly, or better yet, toggle switches on a PDP-11. Because nothing says 'welcome to software engineering' quite like immediately correcting someone's terminology before they've written their first 'Hello World.'

  6. Anonymous

    Tell a newbie HTML isn’t a language, then spend your afternoon modeling CSS specificity as a nondeterministic finite automaton

  7. Anonymous

    Mentor: “HTML isn’t programming.” Reality: our 12k-line global.css has a release plan, incident history, and a bigger blast radius than half the microservices

  8. Anonymous

    Math major: 'HTML is coding!' Senior dev: 'Sure, and your proofs handle production race conditions?'

  9. @tercio133 4y

    Umm sweaty akchually html+css is turing complete

  10. @SHPR8 4y

    Well they aren't wrong. It is coding. HTML and CSS encode what we want the page to contain and look like. These languages aren't programming languages, but the original message said coding, not programming.

  11. @Baksy93 4y

    he must try coding in SQL

    1. @kitbot256 4y

      SQL is Turing complete. Also html5 with CSS is Turing complete, and (lol) being Turing complete is not a necessity for being called a programming, let alone coding, language

  12. @kitbot256 4y

    Also I had a discussion recently, a guy tried to convince me that Bash is not a programming language, because its main function is being a shell.

  13. Deleted Account 4y

    Technically, programming language - is a set of commands, which can be executed by a computer. And it doesn't required to be turing complete by definition. So as html so and css can be considered to be a programming languages.

    1. @RiedleroD 4y

      can be considered? Technically yes. Should be? Definitely no. There's a reason we usually differentiate between programming langs and design langs.

      1. @RiedleroD 4y

        I mean fuckin yaml is turing complete and it's still a config lang

        1. dev_meme 4y

          YAML IS FUCKING WHAT??????????????????

          1. @RiedleroD 4y

            another reason to use json

            1. dev_meme 4y

              I do

              1. @RiedleroD 4y

                I do aswell

            2. @dsmagikswsa 4y

              I think json is better too… with strong IDE or editor today, it is more easy to understand the nesting data in json instead of yaml. Such as auto format and highlighting of bracket.

        2. @callofvoid0 4y

          wait yaml is a config lang? I never knew that

          1. @RiedleroD 4y

            do ppl use it for other stuff as well? I hope not.

            1. @callofvoid0 4y

              i thought its a backend programming language because i never have seen code samples for yaml and now that I see json is better

              1. @RiedleroD 4y

                bruh

            2. @CcxCZ 4y

              I used to use it for pretty-printing data structures and greppable memory dumps. It handles circular references which is practical.

              1. @RiedleroD 4y

                omg ew I mean, idk what else I'd use, but still ew

                1. @CcxCZ 4y

                  As long as you're not writing it by hand YAML is not that bad. Still bog slow because overcomplicated. But among the options of the time (this was around YAML 1.1) definitely one of the more readable options.

  14. @RiedleroD 4y

    real OGs use ini files

  15. @affirvega 4y

    Wait what json5??

    1. @affirvega 4y

      Wow it's better

  16. @CHRKSLAYER9000 4y

    Cyka

Use J and K for navigation