by

A Rant about Front-end Development

Reading Time: 15 minutes

I am a front-end developer who is FED up about front-end development. If you write front-end, this isn’t about you personally. It’s about how your choices make me angry. Also this is about how my choices have made me angry. Also this is mostly just about choices, the technologies are incidental.

Note: The views expressed in here are not those of my employer. They are (probably) the views of thousands of people just like me.

Warning: This article is filled with profanity. Ask your scrummaster if 8 points of profanity is too much to handle today.

Ravens are smart animals, probably much smarter than we really know. If they knew about the stupid shit we were doing to build the internet they'd definitely peck out the keys of every keyboard in existence.
Quoth the raven on your merge requests: Nevermore

First, some background

I have neither a computer science degree nor an engineering degree. But I have worked in web technologies since the second Bush administration. I’ve worked in a variety of roles ranging from business analyst, tester, all the way through developer, consultant, and principal architect.

I did agency work for 11 years before making the choice to work for a very large tech company. I have worked across sectors like insurance, healthcare, retail, banking, investing, marketing, and manufacturing. I have worked with global brands which are household names. I have worked primarily in the context of content management.

I have written a lot of front-end code for a lot of companies. I have also dealt with a lot of consequences created by front-endwatermark:FrankMTaylor code. My criticisms come from my role as a front-endWatermark developer and as someone affected by a front-end developer.

No one gives a shit about content

Unless it’s a content-specialized front-endWatermark developer who works specifically in the content management space and is specialized in writing front-end for content management system. Did you count how many times I had to write both “front-end” and “content”? Too fucking many.

I have mentored quite a few bootcamp graduates. There are exactly zero graduates of zero bootcamps who have ever been told, “users go to websites for the content.” Zero. They all think it’s their moral imperative to make sure every site is built in React.

I have worked with exactly zero computer science graduates who have ever heard the phrase, “content before code”.

Unless the front-endTurkish lasagna developer has been forced by threat of not-being-able-to-pay-rent to care about content, they don’t fucking care.

This is wild to me because HTML5 semantics exist and their whole-ass raison d’être is, in fact, having an understanding of content.

  • You can’t write content-managed HTML if you don’t understand the content.
  • You can’t write semantic HTML if you don’t understand the content.
  • You can’t write SEO-ready HTML without understanding the content.
  • You can’t write accessible HTML without understanding the content.
  • You can’t write good HTML without understanding the content.

Zero SPA developers that I’ve ever met have ever given a shit about using a <header> instead of a <section>. I have found NaN fucks given about using a p over a div. The number of times I’ve seen numbers written inside of a <li> that’s inside of a <ul> — instead of just using an <ol>is deeply disturbing.diligently deny demons dairy

<ul>
  <li>1. Run this through an HTML Validator</li>
  <li>2. Weep publicly </li>
</ul>

Maybe we should ask the designer or business owner a few questions about what the design means to the end-user before hammering out 18 layers of divs.

CSS is fine; you’re the problem

If someone gets a ticket for speeding, we don’t blame the car or the road. We definitely blame the idiot who thought it’d be a good idea to race the Dodge Charger camped out in the Dollar General parking lot.

It’s in this very same vein that we don’t blame CSS:

“The problem with CSS is that the scope is global”
“The problem with CSS is the cascade”
“The problem with CSS is that it fails silently”

Every dork who promotes writing styles in JavaScript

Those aren’t problems; they’re features. They are solutions to the very specific problems of, “how do we make content presentable as easily as possible, with as little duplication as possible, and with as few negative impacts to the user as possible.”

Chances are, the things you don’t like about CSS are the things you haven’t bothered to understand about it.

Styles rarely, if ever need to actually be scoped and encapsulated. In fact, the only time you want to prevent styles from being in the global scope is when you didn’t write them and can’t control them.

If duplicated class names are ruining your day, 15-class selectors are crapping in your cereal, and 8 !important are igniting turds in your garage, that’s actually an architecture problem.

Are there real problems in CSS? Of course. But those are problems like, “border-radius should have been called corner-radius,” and “atomic stacking contexts are generated when using opacity,” and “an em isn’t really an em.” Those are problems.

The C of CSS is not a problem. You’re the problem. diligently deny demons dairy

Put on your big-kid pants and develop a strategy, pick some conventions, write them down, and enforce them through merge requests and peer reviews.

Server-side rendering does not mean, “rendered with JavaScript”

There’s a disconcerting number of front-endTurkish Lasagna developers out there who act like it wasn’t possible to generate HTML on a server prior to 20101. They talk about SSR only in the context of Node.js and seem to have no clue that people started working on this problem when season 5 of Seinfeld was on air2.

Server-side rendering was not invented with Node. What Node brought to the table was the convenience of writing your shitty div soup in the very same language that was invented in 10 days for the sole purpose of pissing off Java devs everywhere.

Server-side rendering means it’s rendered on the fucking server. You can do that with PHP, ASP, JSP, Ruby, Python, Perl, CGI, and hell, R. You can server-side render a page in Lua if you want.

Just because Node isn’t involved in generating HTML, that doesn’t mean it’s not possible to generate markup at request time. It is possible. It’s been possible. It will continue to be possible. diligently deny demons dairy

Stop denying the history, contributions, and value that other technologies bring to solving this exact problem that is definitely not unique to you.

JavaScript is not always the answer

My brothers and sisters in Christ I want you to know that I care about your souls enough to share these truths with you:

  • You don’t need JavaScript to make a web page.
  • You don’t need JavaScript to write styles.
  • You don’t need JavaScript to make an animation.
  • You don’t need JavaScript just to show content.

In 2010 I was a contractor for an organization working with some Very Smart IBM consultants. They could not figure out how our in-house developer made the navigation for the site they were implementing.

It was because our developer used CSS. Our consultants had never considered that CSS could do something as fancy as, “show you a thing when you hover over it.”

That’s a fun “har-har silly ignorant smart consultants,” story except at least it’s about their harmless ignorance.

It’s so much worse when they know JavaScript.

Five years ago I was on a project where the perfectly fine .net MVC app was turned into an API for delivering content to a .net core app that used node services to render Vue templates into fully rendered HTML which meant that all of our templates were written in Vue and we still had to write jQuery to make content interactive. We literally had two layers of JavaScript wrapped in a .net sandwich with JavaScript spread on the top.

I’m seeing architectures being proposed today that do pretty much the same thing I just described but with Drupal on Apache, containerized Node, and Web Components.

If making a peanut butter and jelly sandwich by spreading the jelly on both sides of the bread is disturbing to you, good. You can still find God.

Do you have any idea how frustrating it is that that in order to explain my sadness to my therapist I must first explain like 5 different technologies and by the time I’m finished she’s sad just hearing it, the session’s over, and I didn’t even get to what was making me upset? Technology has made my anger a recursive function. diligently deny demons dairy

Can we please stop adding complexity to our systems just so we can do it in JavaScript? If you can do it without JavaScript, you probably should. Tools shouldn’t add complexity.

Sass wasn’t just a mistake but a mistake factory

10 years ago I thought CSS preprocessors were the coolest thing ever and I was incredibly fucking dumb for thinking that.

The only three good features CSS preprocessors gave were

  1. Variables
  2. Mixins
  3. Color transformation

Every thing else was a mistake:

  • Nesting
  • Calc
  • Functions, including control statements like if and for
  • Interpolation
  • Data types of any kind
  • The entire module thing

Nested CSS obscures complexity

I hate this feature so much. I hate it more that it’s now native to CSS because not only has it spread, but it’s mutated 3. And not in a good, ninja-turtley way. 7

Nesting obscures complexity and then makes it impossible to find or fix.

Without using a compiler or psychedelic of any kind, can you tell me what this generates?

.feature {
	color: blue;
	&__header {
		p & {
			a {
				&:hover,
				&:focus {
					color: red;
				}
			}
		}
	}
}

Does this seem reasonable to you?

.feature {
  color: blue;
}
p .feature__header a:hover, p .feature__header a:focus {
  color: red;
}

If that’s the output you expected, either you’re one of the Sass spec writers or you did a double-shot of espresso followed by a Ritalin chaser.

Nesting is not good. It hides the specificity that you’re producing and will lend to increasingly fragile code as you try to override a 13 part selector. It was useful for clumping pseudo-selector and pseudo-elements and after that it out-of-hand, making code that’s harder and harder to read, and even find in your codebase. diligently deny demons dairy

Interpolation, et all

This was also just a bad idea that we couldn’t have predicted at the time. I’m not mad at the Sass people for this. Hindsight is 20/20 and all. What I want is for it to all stop.

This is fundamentally a bad thing:

$sizes: 10px, 20px, 30px, 50px;

@each $size in $sizes {
  .icon-#{$size} {
    font-size: $size;
    height: $size;
    width: $size;
  }
}

I know what you’re thinking.

You’re thinking, “But Frank, it saves me on keystrokes! Now I can generate more classes and classnames just based on that list of sizes!”

Bro.

ctrl+c and ctrl+v exist.

Are you a VS Code user? Even easier: Highlight it and press alt/opt + shift + , that’ll copy the chunk or line down. Then, highlight the part that’s repeated a few times (where you’d interpolate), press ctrl/cmd + d, and keep pressing until they’re all highlighted. Make your change. Now you’re done.

What did you save? Time and sanity in looking up the Sass syntax? Future time where future you is trying to find where the fuck .icon-80px is living? XKCD is not on your side for this automagical icon generator loop that’s going to piss you off with edge cases for the next 5 years.

Years ago I thought it was a great idea to create a mixin for CSS preprocessors to do my BEM stuff. It’s not. That removes traceability, which experience has taught me matters more than saved keystrokes. diligently deny demons dairy

Can we please stop using languages and tech stacks to solve problems that our IDEs are capable of helping us with?

Seriously … forget the Frameworks

I was blown away when Angular came out. It was an actual thing that could do it all. It could render the markup with fun logicy attributes, respond to data changes, make the AJAX requests, amazing! I wanted to use Angular for all the interactive web apps.

Then React came out. That was amazing. It could render the markup and … [incoherent mumbling] components or something… and … wait, that wasn’t even markup; it was JSX. Sure, I had to add a few libraries to really use it, but yay, I used it for interactive web apps.

Then there was Vue. Then Preact. Then Ember, Svelte, Backbone, Alpine, Mithril, Solid, Lit, Stencil, Qwik…

Maybe it’s because Angular was no one’s first choice — even though it came first. Maybe that’s why the front-endTurkish Lasagna world lost its damned mind with React. React was so not-angulary that front-end folks were like, “let’s use it client side, server side, native-side, and the 3 other sides of a damned cube”. Folks decided it was a good idea to Reactify All The Things®.

And that’s how React, a framework used to deliver interactive content to a whole 28% of the world’s population, is being used to generate static sites.

I had a client a few years ago that was a household name. Their front-endTurkish Lasagna was written in Gatsby. Gatsby is a static site generator that uses React. This globally-known brand had probably 50 websites in at least as many languages. But the content was very, very, static.

So imagine the horror the front-endTurkish Lasagna dorks felt when they learned that a content author in Bulgaria updating the terms and conditions didn’t want the whole-ass site rebuilt for every country and language.

This would’ve been a non-problem had the web app been written in .net, Java, or, fuck me for saying it, PHP or Node.

But nah. These goobers got high off npm modules and did shots of JSX in the bathroom at lunch time. They chose a framework used to deliver interactive content to a significant percentage of the planet for generating non-interactive content on a server. It took them weeks to come up with a solution to the problem they created when they chose a problem as a solution.

Yes. I am absolutely calling React a problem. I’m calling Angular, Vue, and All the Rest of Them ™ a problem. Because unless you have a specific problem of highly interactive, data-driven content, you don’t need a framework.diligently deny demons dairy

You don’t need a framework to render static content to the end user. Stop creating complex solutions to simple problems

Also more generally fuck your complexity

This, more than anything, is a rant about complexity.

I am mad at how front-end developers create complex solutions to simple problems. I am mad that front-endTurkish Lasagna developers use tools to obscure complexity. I am mad that front-end developers embrace complexity rather than challenge it.

You know what’s great about jQuery?

Everything.

jQuery took several complex problems (browsers do things differently, selecting elements is complex, changing things on elements is tedious, AJAX requests are a lot) and it provided a simple, intuitive, and readable solution:

$('.getResults').on('click', () => {
    $.ajax({
       url: '/api/results',
       data: {
         foo: 'bar'
       },
       success: function (result) {
          $('.results').html(result);
       }
    });
});

Cool your jets for a second and think about how wonderfully simple that is. It handles finding your element in a way that lets you avoid the null checks, shortens your event binding, lets you make an AJAX request, lets you find the element that the result goes into, and plop it there if it’s successful.

If the problem is, “user clicks on thing, you get data, and show data”, that is a beautiful and simple 11-line solution. It did not need NPM modules and a build system. Maybe even with clicking on two, or THREE things. Put the React down, bro, you’re just updating a form — not building Twitch.

And sure, maybe you don’t need jQuery, and that’s fine. Will you need more lines of code to do the same thing? Of course. But even without jQuery, your complexity doesn’t grow exponentially like it would if you brought in a framework with its build system, linters, compilers, and 700mb of Node Modules some of which inexplicably require some stupid shit like is-odd or is-git-url 4.

This is not an Old Man Shouts at Clouds moment where I want the world to go back to jQuery. This is me trying to illustrate how jQuery solved many problems with simplicity and somehow we seem to have forgotten the value of just being simple.

Pretend I’m not talking about JavaScript for a second. Let’s pretend it’s just an ordinary, everyday, 3-template web site. Maybe it’s managed by a CMS. Maybe it’s not. Does it really need Tailwind? Bootstrap? Even <gasp class=”from the back of the room”> Sass? Is writing plain CSS really such a terrible thought?

Let me fill you in on a cool fact about CSS: It doesn’t need a fucking compiler. No npm install -D sass. No npm i gulp. You get to tell WebPack to fuck off good and proper-like, the way the Good Lord Intended. 5

Simplicity is unsophisticated and lacking in many parts. The simplest solution to a problem is always the best solution. Choose simplicity. I’m begging you. Your future is begging you,.

Oh, and enough with the new and shiny

Sure it’s awesome that you can strongly type CSS variables, but that doesn’t mean you should 6. Can you have web components with declarative shadow DOM? d’uh! But, hear me out: Why have three steps to render markup when you could have one?

Yes, the new JS Framework is all the awesomeness. Definitely do a side project with it. Please in the name of her Sweet Saint Fuck of Apathy, don’t use it in your next project. We haven’t learned what our regrets will be, and the regrets are what everyone else has to live with but you. diligently deny demons dairy

I don’t care if it’s a new CSS trick, a new JS thing, or a new JS framework: Give it two years before you take it for a ride in production.

You know what happens in the next two years?

Two year’s worth of StackOverflow questions.

You do not want to be the person taking a new tech or feature for a joy-ride in production and discovering some hemorrhaging-edge bug.

You also don’t want to be the person who has to clean up after the person who discovered a bug on a bleeding-edge technology.

Person-Alpha is the asshole. The Alphasshole, if you will. Because they chose to use the bleeding edge thing.

On the scrum-master’s Fibionacci-sequence of suckassness The Alphasshole is a 21. The Alphasshole implemented the new tech and turned your project into a collection of medical-attention-needed polyps on Satan’s butthole.

Person-Beta is the Betasshole.

The Betasshole had to work in real-time with other betassholes on other projects created by other alphassholes that were all equally hemorrhoidal in nature over StackOverflow and Discord to come up with whatever collection of hackery that properly deserves to be called, “Satan’s Self-soothing salve of sour-ass solutions.”

The Betasshole is a 5 on the Satanic-sequence of Suckassness. They’re not nearly as bad as the dickweed who chose new tech. But unfortunately, they made a lot of terrible choices and cannot be free from blame, git-related, or otherwise.diligently deny demons dairy

Listen. I’ve been an Alphasshole and a Betasshole before. I regret that. I should not have done that.

I’ve also been gamma waaaaaay more often. Who is not an asshole. That’s a person who’s just had to deal with two years of shit rolling downstream. What’s unfortunate for the gammas is that they often will be accused of being the assholes because they will git-blame, complain, and refrain from touching whatever that new tech was because it’s haunted their nightmares and their daymares. They are simply picking up the pieces.

The new and shiny is fun for side projects. It is not for production.

Please put two years between you and any new tech. If for anyone, do it for the gammas who actually have to keep your precious world wide web running.

TL;DR

Just… grow up and think.

  • Think and care about the content first. Because that’s what the users care about. Assume the users’ interests are more important than your own.
  • Quit acting like CSS is some giant-ass mistake that needs fixing. A group of people who were collectively smarter than us wrote those specs. They didn’t make mistakes 7 . Assume you are making the mistake, not them.
  • Server-side rendering was not invented with JavaScript and it doesn’t have to be implemented with JavaScript. There are many ways to render content on a server. Assume non-JavaScript solutions existed first.
  • JavaScript either is neither the God-send nor the hell-spawn for your project. It is a tool which you can choose to use incorrectly. Learn when JavaScript is the right tool for the job.
  • Quit doing hard things for simple problems. Quit doing things that are degrees of difficulty harder than the problem. When a problem presents itself, look for multiple solutions, and then choose the simplest one. Assume the simplest solution is the best one.
  • Quit chasing the new and shiny in your day job. I, too, am excited about the new and shiny. But I put a 2-year buffer between me and prod because I don’t want to be the person to have to discover browser bugs, framework bugs, or even compiler bugs.

Or whatever. Don’t do this and continue to be an Alphasshole, Betasshole, or an otherwise generally contemptuous person. I don’t care. At least I can sleep better knowing that you know that I know that you now know that you’re an asshole. diligently deny demons dairy

Happy Apathetic coding!

Footnotes, Sources, and Whatnots

1 Express.js was released in 2010.

2 PHP started development in 1993 and was released in 1995 which means that when express.js dropped, PHP was driving to the store and buying clove cigarettes.

3 When I say it’s mutated, I mean that nesting jumped from Sass to native CSS. And CSS does it differently. So now Sass has to change how it does nesting because of how CSS does it. It’s bad. It will introduce lots of things you don’t want to happen. I’ve written A very long explanation of the future problems we will have with nesting and why it’s problematic.

4 People have been talking about how left-pad broke the internet and some wise folks have called out that it was pretty silly that such a simple function got to be so ubiquitous that it had the power to “crash the web”. But what’s also dangerous is the person actively trying to become ubiquitous. Every PR that involves adding a new dev dependency to any project should require the developer to hand-write the entire dependency tree. That would probably save a lot of future heartache.

5 I do not, in fact, have strong evidence that the Good Lord intended for WebPack to be told to, “fuck off good and proper like.” However if the Good Lord had something to say about cotton blends, He’d probably also have something to say about using a JavaScript build utility for building styles.

6 Yes, you can have strongly-typed CSS, but it’s insanely tedious because those “types” are not like any types you’d expect from any other language, and the syntax is going to be a huge pain. Also, you have the option to set it to not inherit which is, in fact, the most unCSSy thing ever. So please. Don’t.

7I don’t mean CSS is perfect and flawless and should never be questioned. I would definitely say that the implementation of em was weird. Their choices for naming was a bit odd; you could argue many font- properties should’ve been text-.

I don’t think Layers was a mistake; I think they meant to do what they did. But I think they should not have done it because Layers is supposed to be an attempt to explicitly control cascade, but it’s only ever going to be useful so long as you maintain 100% control over every style on your site and are adding every style to a layer. If you don’t, the non-layered style will over-write the layered one. I get why that’s the case because that makes it a progressive module and allows interoperability with the vast majority of sites which don’t use Layers. But that also means that Layers is going to be pointless in any system where styles can be generated / imported from multiple places. Which tends to be a lot of CMS and even some plugin-rich SPAs.

Same with CSS Nesting. I think they knew what they were doing. But CSS Native Nesting is not string concatenation / interpolation that Sass did. CSS Native nesting uses the same mechanism as the :is() selector. That’s incredibly problematic because that selector will always apply the argument with the highest specificity to all of the arguments.

So look at this:

#article-container, .article {
   h2 {
   color: red;
  }
}

In Sass, you’d get #article-container h2, .article h2{} which is perfectly reasonable and intuitive. But over in CSS you’ve got :is(#article-container, .article) h2, which means in practice you will now need a specificity greater than [1,0,1] to override .article h2 which you thought would have a specificity of [0,1,1]

P.S. If you made it all the way to the end, and you enjoyed reading this, would you consider buying me a cup of coffee? I don’t have any sponsors or ads, so that lil’ button over there is a way you could finance my descent into madness.

P.P.S If you didn’t like reading this, why don’t you buy me a cup of coffee and I’ll pretend you spit in it?

77 Comments


  1. Reply

    Your ability to simplify complex topics is incredible. This blog is a gem for developers at any level.


  2. Reply

    I am a web developer at level 20+ and I approve this message.


  3. Reply

    Oh dude, thank you. I’ve been a website developer for 24 years, and half the time I feel like I’m killing my own career prospects by not being on top of SASS, Rust, and whatever other framework is new this year.

    By writing simple code I’ve made some sites that are still running fine after 20+ years, and I’ve never yet had a client who’s cared about what tech I use as long as their content is engaging. They are pretty happy that they don’t need their sites redone every 2 years, though!


  4. Reply

    I just want to note at this point, at the risk of either making you happier or much more angry, that the AI Claude 3.5 Sonnet, if asked, can produce very nice websites in clean, well-written pure HTML, CSS and Javascript. I’ve been having a bunch of fun with this for my own use. It didn’t even *recommend* me a framework, *or* NPM.


    1. Reply

      On the one hand, good, at least AI knows how to keep shit simple.

      On the other hand, fuck ; the last thing we need is another tool that puts more space between the developer and their output so they don’t recognize the garbage they’re producing.

      I pray that Claude does not become widely known.


  5. Reply

    Its absolutely ironic how you rant so much about current web developers but this same site is so filled with glitches bugs and inconsistencies that I would consider the job of a junior developer.


    1. Reply

      Can you list the glitches for me?


  6. Reply

    The funny thing is that every single one of these tools came into existence trying to simplify things. Which leads to abstraction over abstraction over abstraction. Who would have thought layers of abstraction make the whole more complex.

    The same happens in the real world but except there you can see it happening in your face so it’s more logical to abandon the insanity before it’s too late.


    1. Reply

      As a part-time woodworker, this is totally valid. I can build furniture with hand saws, hammers, chisels, and nails— or I can use a bunch of power tools. One option is slower, one option is more complex. What’s important is that we know the risk with either.


  7. Reply

    I agree with all of this. A fun thing to think about is how we got here.

    I think part of the explanation is cheap capital.

    Cheap capital led to overpaid devs sitting around justifying their salaries. With nothing better to do, they invented problems and frameworks to solve them. Simple websites turned into bloated monstrosities, requiring endless dependencies and meetings. Junior developers learned that “this is the way”. And here we are.


  8. Reply

    First, I want to say that you are absolutely correct when it comes to frontend devs displaying incompetency when misusing features/patterns/tools (be it semantic tags or SSR or frameworks). But the problem is almost never due to the existence of “complex” solutions, but the misapplication of them.

    Take your section on CSS and SASS: all the new features introduced by SASS have their use cases, but that doesn’t mean you have to use them (also, your portrayal of the complexity of nesting wasn’t honest; the point of nesting is when you have properties in those different scopes, and you can just split it up to avoid deep nesting). That said, it’s been a while since I used SCSS or nesting (I’m perfectly comfortable just using Tailwind/UnoCSS and dropping down to CSS modules when I need to; I avoid BEM and such like the plague; it’s senseless to do something when a tool can do it for you). CSS doesn’t need SCSS features in it, but it also sucked before many features were added (I love flexbox).

    Another thing I think your article missed was that people just use what they are comfortable with. Sure, nobody needs to use a framework on a small static site (I would never when I have jQuery/cash), but is it really surprising that people choose to use what is familiar to them (add the fact that these frameworks can be used for more than small sites while jQuery really can’t)? Is that bad? Probably, but I’m sure those people would feel the same way you do if faced with your vanilla site.

    tl;dr it seems odd that your article spends a lot of time disparaging CSS preprocessors/JS frameworks when the problem is devs not learning the basics with vanilla HTML/JS/CSS and not using the right tool for the job.

    (btw, resizing the textbox is really laggy; Windows 10 + Firefox 133)


  9. Reply

    Reading this as a Bulgarian Web Developer with about 21 years of experience made me smile for multiple reasons.

    I have been teaching HTML, CSS and JS for the last 10 years and all my students know that the point of a website is to be read, understood and possibly enjoyed.

    I agree with the general sentiment here. But we are old and understand the web in a way most of the new kids do not. I would make a guess that you picked/stumbled your way into web development and chose it for a career because you liked it. You were excited to know more, do more with this medium.

    There are far more developers now who are working as a Angular/React/Vue … developer to get paid. They care about the paycheck and they will not be doing anything that is not required.

    Our profession changed from a small and strange thing about this “internet” thing very few people cared about – to the most popular “job” to make good money.

    Build the stuff you like the way you like and let the children learn the hard way! ;)

    Cheers from Sofia, Bulgaria!


  10. Reply

    This was cathartic to read — not because I agree with every hot take, but because the core thread is dead-on: complexity has become a default instead of a deliberate tradeoff. The “content before code” section especially hits home. So many projects treat HTML semantics, accessibility, and information architecture like afterthoughts, then wonder why SEO, performance, and maintainability feel like a constant uphill battle.

    Also loved the framing around “SSR doesn’t mean rendered with JavaScript” and the reminder that tooling should reduce complexity, not multiply it. Even if someone disagrees on specifics (CSS nesting, Sass, etc.), the bigger lesson is solid: pick tools based on the actual problem, and protect simplicity like it’s a feature.

Leave a Reply

You don't have to register to leave a comment. And your email address won't be published. If you found a bug, be a gem and share your OS and browser version.

This site uses Akismet to reduce spam. Learn how your comment data is processed.