I have been in professional web development since 2004 and I mostly agree with the author that there are massive amounts of groupthink going on. "Modern" web development has standardized in tool stacks which are insanely complicated, far beyond anything that is warranted in most cases. We have forgotten how to make simple things in simple ways.
At a minimum you need node, npm, webpack, babel, an spa framework, a frontend router, a css transpiler, a css framework, a test runner, a testing functions library, and a bunch of smaller things, and that's just what is "needed" to build a static website with a bit of interaction. We're not even talking about the dockerized insanity that happens as soon as you want to slide an API under that beast.
I understand why every piece is there, I was there when they arrived on the scene, I understand what problem they solve. What I don't understand is why as a group web developers have decided this is the only way to solve the problem of web development. What we don't have are simpler web stacks. Why do we need npm or babel at all to make a simple web frontend? Modern browsers are good enough that with the right tooling we don't need build pipelines or package managers. Similar arguments can be made for the server-side parts.
usually docker has resulted in a lot less debugging "works on my machine" issues, because unless you have patched your kernel in a really messy way it is impossible to not reproduce issues when testing in docker.
hell, I moved a startup-ish company single handedly from uploading PHP scripts to a "development server" (VM on a scuffy proxmox box in the closet) where they didn't even know if all the code was current and constantly stepped on each other's toes to a docker-compose.yaml, a Dockerfile and an A4 cheat sheet on how to use it (including resetting the database and such) in a week or so. it's an amazing tool to ensure consistency.
Don't get me wrong. I deploy all my API's in docker containers as well, for similar reasons. But I do feel like a victim of stockholm syndrome whenever I think of docker as a solution instead of a workaround for problems self-imposed by our byzantine development tooling stacks. It is now even starting to make sense to run the entire suite of tools for local web development inside of a local docker container, because of the risk of subtle conflicts in devDependencies between machines. At what point are we going to concede this way of building software is madness? How many layers are too many layers?
> Why do we need npm or babel at all to make a simple web frontend?
See, that's a reasonable argument: many companies tend to reach for complex web tooling when simpler tools would do for the task at hand. But that's not what the author is arguing. He's convinced that none of this tooling should have ever been produced in the first place, it exists solely to stroke the egos of their creators, and anyone who uses it is stupid. That's just absurd. I've worked on complex client-based applications that would have been an order of magnitude more difficult to develop, maintain, and refactor without React.
Wouldn't you agree though that the vast majority of clients don't have that complex a need?
These tools are taught to new developers as "the way things are", yet a significant portion of them statistically must be working in lower complexity environments that may not be serves by this level of tooling.
Sure, but again, the author is explicitly not arguing that. Look:
> They keep inventing "revolutionary new ways" of doing the same thing that could be done in a dozen ways already. And they do that by coating more and more and more unnecessary complexity on top of existing technology stacks.
He's mad that the tools exist at all. He's going after the people making them, not just using them.
> At a minimum you need node, npm, webpack, babel, an spa framework, a frontend router, a css transpiler, a css framework, a test runner, a testing functions library, and a bunch of smaller things, and that's just what is "needed" to build a static website with a bit of interaction.
no you don't. just because you use react doesn't mean that everyone else also has to do the same.
At a minimum you need node, npm, webpack, babel, an spa framework, a frontend router, a css transpiler, a css framework, a test runner, a testing functions library, and a bunch of smaller things, and that's just what is "needed" to build a static website with a bit of interaction. We're not even talking about the dockerized insanity that happens as soon as you want to slide an API under that beast.
I understand why every piece is there, I was there when they arrived on the scene, I understand what problem they solve. What I don't understand is why as a group web developers have decided this is the only way to solve the problem of web development. What we don't have are simpler web stacks. Why do we need npm or babel at all to make a simple web frontend? Modern browsers are good enough that with the right tooling we don't need build pipelines or package managers. Similar arguments can be made for the server-side parts.
Anyway, here's my own two cents to a simpler web dev stack: a version of create react app that is entirely self-contained and has no build steps. https://github.com/jsebrech/create-react-app-zero