Hacker News new | ask | show | jobs
by Zealotux 971 days ago
Just had been thinking about this today, the current state of web development is making me seriously depressed.

I would pick what I'm most comfortable with, a simple monolithic Nest.js application running Fastify, with Postgres or SQLite, Dockerized, hosted on a predictably-priced host like Hetzner, and Ansible to automate everything. I know that stack will give me plenty of headroom until I eventually need to scale differently.

Front-end is still React, which has a massive ecosystem, and I feel like I can do _anything_ with it by just bringing in some dependencies, if it's a passion project then I want to deliver features fast, React allows me that.

I feel like a dinosaur, edge, workers, cloud functions... I'm familiar with none of that magic, there's probably a whole universe of amazing new ways to build for the web I'm sleeping on, but at that point I don't even care really.

3 comments

The discussion is making me scared from another perspective.

I have experience with a pretty wide variety of development. I've worked with embedded microcontrollers (minimalistic RTOS), embedded applications (on top of a proper Linux), desktop applications in Java and in C#, some C++ work, gamedev and more. But to this day I haven't touched Web apps. I have not written a line of JS and the closest I've done to modern web is a tiny API in Go that sends a JSON response and renders a static HTML page.

With my total lack of Web experience (and self-confessed hate of webapps as a user), I have no opinions on React, Rails, Node.js, Vue and whatever people are naming here. But I'm taken aback at the variety - there's 20-odd replies all giving different answers.

Does Web development in 2023 not have 2-3 tech stacks that dominate? Are the existing frameworks/techs so lacking that new ones keep appearing to address those problems? Is there a high rate of change because things keep improving? If so, where is that improvement for me as a user, when webapps still feel inferior to late 90s native programs?

I'm in the same situation as you, but have what I think be an incredibly unpopular theory on why all those competing technologies exist: Everyone is trying to unsuccessfully patch JavaScript.

Every few years, a group thinks they're the ones with the one true ring, and try again.

Each new shiny seems to promote even poorer practices than the last, lowering both the bar and the barrier of entry further.

I don't think that is an unpopular view. Though I think it is more fair to say people are trying to patch the browser runtime environment and its APIs. JavaScript the language is "fine", it is that doing things the way the browser wants you to do them is often quite verbose, so people build layers of abstraction on top.

Unfortunately these abstraction layers end up being just as, if not more complex than what it is building on top of.

People creating frameworks can work a lot faster than the browser development teams. The modern browser stack is actually getting pretty good, but still some things like creating web components are awkward compared to many of the popular frameworks. And when people find something awkward to do, especially in as flexible a setup as JS, they will make their own abstractions.

My suggestion for anyone feeling overwhelmed by the JS ecosystem is to just work with plain ol' vanilla JS for a while. It'll give you a much better understanding of what is actually going on and you'll likely realize the problems you're trying to solve are pretty straightforward. But you'll also see that things can end up quite verbose (though the comprehensibility will likely be quite high). You'll find that there are some areas that are kind of annoying and this is where when you go back to one of the frameworks you'll see its value (but also likely where it is totally overkill). At the end of the day if you can keep your mindset focused on the browser runtime rather than the specific framework you happen to be using, you'll have a much better time. At least that is my experience.

I was in the same situation as you, and then I tried it a few years ago.

I realized that front end software is actually pretty shallow.

Design is important, deep, and requires talking to users, but once you have a design it is pretty straightforward to get the pixels into your favorite JavaScript/React/Vue/CSS/etc code base. Importantly, design is not about the code. Designers work in tools like Figma, not react.

Web frontend applications will then need to call into a backend. If you are doing anything computationally heavy or complex you are back in the world of normal software development.

I think this is why you see more full stack than frontend engineers.

If you are worried about it, I’d suggest trying a project. If it looks like crap, you probably need to get help from a designer or learn design, not figure out which web stack to use.

My 2 cents: keep working with Go. Learn just enough about templates to start, JSON to struct mapping and URL routing. It's not a great backend, but the client is what you really need to learn. For the client look through browser tools F12. For the basics of HTML, CSS and JavaScript skim through https://www.w3schools.com/ [People HATE this site but it has very limited info, making it a quick read.] For actual documentation use MDN https://developer.mozilla.org/ and skip any framework/library until you have the basics.
> Does Web development in 2023 not have 2-3 tech stacks that dominate?

no

> Are the existing frameworks/techs so lacking that new ones keep appearing to address those problems?

The existing frameworks are fine. Most languages have just 1 or 2 frameworks for you to build in that language.

The problem child for all of this is the JavaScript ecosystem. A lot of developers in that space just keep proliferating a bunch of heavy-handed frameworks that do not accomplish anything new, but represent some opinionated take on architecture, tooling, etc., and which obfuscate everything behind layers of magic and indirection.

> Is there a high rate of change because things keep improving?

For the most part, I wouldn't say things are "improving" that much. I mean, React and Vue and Svelte are better for front-end development than what came before, for sure, but, speaking at least re: React, it's become a bit of a monstrosity. Pluses and minuses, I suppose.

Again, the problem is mostly in JS land. They are a little like the stereotype of Java devs, in some ways.

It's the inner child of developers. They feel the need/urge to show the world they can do it better than existing bloated thing. And they show it, and people jump on the shiny new train. Rinse and repeat. The problem is, those that could really make a dent are not present in this space :P.
Web dev frameworks are like pizzas: everyone has their favorite toppings and styles, some are more popular than others, and others are sometimes loathed (pineapple), but it generally all comes down to cheese, dough, sauce at the end of the day.
Is the dough HTML, cheese CSS and sauce JS?
There is a high rate of change because the big frameworks solve the wrong problems, massage over a catastrophic knowledge/skills gap, and do less than what is needed while imposing an unavoidable, yet unnecessary, tremendous cost/size.

If developers could execute with confidence in the browser understanding the compile target, the DOM, we wouldn’t be in this mess. But, most developers are scared shitless of tree models and/or writing any form of original code. That is not a technology problem. It’s a people problem.

Curious what are you doing with both ansible and containers? What does ansible actually do in your setup?
I use it to install docker and other tools on my vm. I guess the commenter is doing something similar
> edge, workers, cloud functions

Those are things people do not need unless at an appropriate scale, or appropriate use-case, etc.