- Abi Raja
- Follow me on Twitter @_abi_
You can build amazing web apps today. But it could also be a lot less complicated.
That's the point that this article makes. There's never been a better time to build websites.
Of course, if you look at some of the replies on Hacker News, there are people complaining that it's harder than it was 15 years ago. But they are just wrong on a technical point: the web is backwards compatible, no one is stopping you from creating a Django server, using JQuery and CSS files. But in essense, the problem is that Django, etc. was the state-of-the-art back then and all you had to do was install Python and Django (or Ruby on Rails) and you were all set. But now, the state-of-the-art is much harder to get set up. Much much harder. Yeah,
create-react-app gets you a working app in 2 seconds, to do anything, you have to learn a bit about all these technologies. This tweet is a good illustration of the problem:
I don't want to dive into static site generators and server-side generation too much but I'll just say one thing: I think they add a lot of complexity. They trade off ease of programming for ease of deployment and performance. The latter clearly helps heavy traffic websites but not amateurs and students who want the former. Gatsby for example makes you learn graphql to render even simple websites. next.js, on the other hand, defaults to sever-side generation and half the packages built for the browser won't render on the server-side.
And then there are comments like this that suggest we are running around in circles:
This article strikes me as hopelessly naive. Filled with the same kind of 'new is better and solves everything' mentality I've seen in the JS community for years. There's no desire for maturity because nothing has ever matured. Even frameworks from huge companies go through radical internal paradigm shifts every 18 months. JS runs natively in the browser. the author implies compilation is required to deploy client-side rendered websites. Sass, Less, css grid, all claimed to 'solve' CSS for whatever the problem in the mind of the author happened to be. ... more of the same.
I don't think we are going around in circles though. Tailwind, for example, truly is a better way to write CSS than everything that came before. React is a lot better than Angular 1.0, which is a lot better than pre-JSX god-knows-what (strings in PHP?). We can build and maintain large, fast web applications only on the shoulders of these technologies.
At the same time, we should strive for simplicity and programmer ease of user, the kind offered by Rust today and by Django and Rails from yesterday.
There's some hope. Rome offers this pitch:
Iteration has been good for discovery over the years and as we coalesce around good ideas, we can mature those into all-in-one tooling. Rome might or might not be a dead project, but for the benefit of all the new programmers and the sanity of existing devs, hopefully all-in-one tooling and some consolidation happens soon.