There are certain kinds of developers who flinch as soon as they hear "Vanilla CSS", "Vanilla PHP", or "Vanilla JS".
At first, I always felt like frameworks are the way to go. But, they actually aren't.
I always thought that things like node_modules, vendors, boilerplates, component libraries, and other potentially very large files and directories are and will always be a part of your codebase.
That having them is a must in order to ship software that will solve your clients' problems.
But here's the thing, there's a lot you can do with just the core fundamentals alone.
CSS has evolved.
JS has become more powerful.
SQL is still fast, and simpler in most use-cases.
And of course, PHP is way better now.
My experience
I am a relatively younger web developer. As of this writing, I have been a developer for just about four to five years.
My main focus at the moment is custom WordPress and Drupal builds. But, there are a couple of times when I have to step out of those territories and solve very focused problems.
This requires us to potentially create "micro apps or tools". These could be standalone web apps or components, or integrated as custom plugins or modules into WordPress and/or Drupal.
I've implemented a couple of custom solutions from custom web components, AI or third-party integrations, and client workflow automations or enhancements.
During my earlier years, I remember immediately resorting to VueJS + axios just to implement a custom dropdown component with custom popups when an option is selected.
The data was managed and fetched from a locally-hosted CSV.
I immediately thought to use the mentioned stack as, like many juniors, I was also caught up in the idea that shipping production software must be built with a framework for "maintainability" and "speed".
This is so not true.
Looking back, I simply shipped an over-engineered dropdown + popup/modal component that ships way too much unused boilerplate code that stacks on top of the hosting website's probably already bloated code as well.
Vanilla JS and CSS could have simply done the job, at way lesser than a fraction of the size. And fetching the data could simply be done with fetch().
Lesson learned
Today, I have learned to love vanilla development.
It's fast, simple, and is native to the browser.
Maybe in the past, vanilla would be a nightmare because of the huge differences among browsers.
But, this isn't the case nowadays.
I also know that solidifying my fundamentals would not limit me to a specific stack or set of frameworks and libraries.
Mastering the concepts, or what happens under the hood of specific features of a given framework, makes it way easier to comprehend.
You won't be relying only on "magic".
So far, I have only met (through LinkedIn) around two other people who practise the same principles as I do.
They are both seasoned or veteran devs already, which gave me hope that amidst all the hype that doesn't really live up to real practices or scenarios, the best part of web development is still here -- shipping simple (even minimalist), reliable, resilient, stable, and easy-to-understand software.
I still appreciate frameworks & libraries
Don't get me wrong, I still see the value in frameworks and libraries.
They save time and make lives easier for developers.
Personally, I am currently learning Symfony.
It's just that people tend to use them unnecessarily or out of their intended purpose.
And it's the clients that suffer -- having to invest more in hosting, being limited to a certain ecosystem, and possibly more.
That is quite irresponsible, don't you think?
On top of that, some would even go so far as to post on social media, downgrading the vanilla stack and claiming that their glorified framework is more supreme.
That is pretty naive to me.
Conclusion
For developers, solidifying your fundamentals is one of the best investments you can make in your career.
Not just because it makes you a better developer, but because it gives you clarity.
You start making deliberate choices instead of defaulting to whatever is trending on social media, or what you glorify.
Vanilla web development is not a step backwards.
It is not the "budget option".
It is a tool, just like any framework is.
The difference is that it comes with no baggage, no lock-in, and no unnecessary overhead.
Pick the right tool for the job. Sometimes that is React, Laravel, or Vue.
But a lot of the time, especially for focused, scoped problems, plain HTML, CSS, JS, and PHP will get you there faster, leaner, and with far less regret down the track.
Ship simple. Ship well. And know why you made the call.