Ask HN: Which tech stack is the most fun?

100 points by chickenWing ↗ HN
After unintentionally ending up on several React Native projects, I hunger for the days when I used to enjoy coding. The developer experience of React Native is tedious, frustrating, and unrewarding. But as I ponder a job change, I wonder: What is better in this day and age?

I remember when Ruby on Rails hit it big, one of its mantras was that it made coding fun. As Rails has waned in popularity, has any other tech stack taken that crown?

What do you all think?

EDIT: Obviously this is highly subjective so if you can provide your motivations for why you feel how you do, that would help us all. Thanks!

186 comments

[ 5.1 ms ] story [ 84.6 ms ] thread
Pleasure is subjective.

I might enjoy what you find distasteful and vice versa.

Personally, I enjoy using Python and C. I am curious about Rust but haven't had an opportunity to use it much.

Your mileage may vary. I recommend trying a few different languages and see what you enjoy.

Edit: I like C because it feels simple and has a "what you see is what you get" property. The amount of "hidden" code feels like zero.

I like Python because the syntax is elegant and it is easy to get a lot done with a few lines of code.

Yes indeed. To clarify, what I'm looking for is people's subjective opinions, and if possible, some reasoning behind them. I can see this being helpful to many people, especially if we know what you're priorities are and whether they overlap with our own. Thanks for your answer.
Pure C*

*Your mileage may vary

Thanks. My first few jobs out of college were programming in pure C, doing embedded software. I do have good memories of that time, although I'm not sure I would have the patience for ten-minute compile times these days. (Obviously not all C projects have that, but the ones I worked on did.)
If you haven't already, you should check out the C projects from Justine Tunny. Specifically redbean, cosmopolitan libc and ape. https://justine.lol/

Whether you should use them professionally is questionably. But for me they made writing C fun again.

How do you define a pleasurable language? Aesthetics? Bug/LoC ratio? Feature by LoC? ROI?
That depends what you want to do and what you see as "pleasurable".

If you just want something to manage a web site with as low effort as possible, go for either Wordpress or Drupal. Every web hoster offers some form of hosting for these platforms.

If you're in for something a bit more fancy frontend-wise, go for ReactJS combined with Parcel - the latter is multiple lightyears better than Webpack or, heaven forbid, Gulp. Seriously, discovering Parcel was an eye-opener. Beware though, a lot of Parcel plugins haven't been updated to Parcel v2 yet - backwards compatibility still isn't regarded highly in the frontend world.

If you're more interested in building APIs and know PHP - dive into Symfony, the progress there has been massive over the last years.

That's very subjective.

Personally I love Elm on the frontend, for being so orthogonal to mainstream platforms. On backend, rust is great but maybe too intense. Go is bland but overall easy-going.

I feel like rust being intense is highly dependent on how you use it and your choice of frameworks. Building up huge types to avoid any dynamic dispatch for instance will suck the fun right out of trying to get an application to compile.
Building a UI is usually tedious irregardless of stack. The fun part is what’s new and creative in the project, which is usually a small part of the overall thing.

My solution is generally to work at many different things in parallell, but that largely works because I’m a senior engineer and I’m naturally pulled to step in and assist in various places. I don’t think there’s an universal answer. Fundamentally, it’s probably not reasonable to expect that all aspects of once work should be thoroughly enjoyable.

As others have mentioned, this is highly personal. My own favorite stack is Elixir and/or full-stack Clojure.
Can you give some details about what you use with Clojure? I was looking at Fulcro.
Not OP, but we're currently using Pedestal to serve Lacinia (graphql).

Previously I've used compojure and all that.

I've only done the data/backend stuff, so I've personally never seriously used cljs, and my companies would use a regular reactjs frontend.

But Clojure is definitely a joy and if I had to make a frontend I'd probably reach for something like reagent.

Thanks! What do you use for editor tooling, REPL setups, testing, etc.? Also describe your workflow if you can. I know this might mean a longer reply but I'd appreciate it ;)
I will second the question, I kind of tried Closure few times and never stuck with it. Now for fun, Rails and Elixir for sure, but would love to hear from you if you have a moment, how to go about it and have fun with Closure.

Thanks!

The one that gets the job done the quickest so I can put my feet up and continue contemplating a complete career change.
Pleasure to me means I can sleep at night knowing whatever system I’ve built will remain online when subsystems fail, and will self-heal when infrastructure goes down.

When it comes to a career change I’d focus less on lang/stack and more on engineering culture, approach, practice. A team that builds good software, regardless of language or stack, will be a pleasure to work with.

I think that functional programming ideals lend themselves to this nicely. Specifically: data as a first principle, with actions/mutations/calculations of that data being separate.

pleasure == productivity

ruby on rails is still awesome. But since you might have to work with react anyways...nextjs is a second.

On the mobile side - Flutter is unparalleled. No seriously - im a react guy. And Dart is weird. But Flutter is seriously the Ruby on Rails of the mobile world.

Not anymore with Rails 7. You can now bootstrap a new project with hotwire (html over the wire) to build a SPA
I absolutely agree! Rails, Nextjs and Flutter are the best and most funny technologies I've ever worked with
I’m intrigued with Funny. What makes these frameworks funny?
Since you mentioned React Native, I assume you're pointing towards mobile app development. The best stack combination for me has been webview + PWA + webassembly + toucaan to create an intrinsically designed universal mobile-web app. There's something really powerful about deploying just one application on three separate distribution platforms. And it's not even a monorepo anymore!
Do you have an example repo of this stack you could point to? Been trying to scope out something similar lately and can't get all the pieces to fit together
For me, native macOS with AppKit (Cocoa) and Objective-C is still the best and most productive development environment.

No client/server division to worry about, all of the desktop environment's capabilities developed over decades, insane CPU and GPU power and memory bandwidth (now on Apple's industry-leading ARM chips). Obj-C gives seamless access to both C/C++ APIs and the best desktop GUI with incredibly powerful features like the Cocoa text system.

You still like Obj-C more than Swift? I vastly prefer Swift to Obj-C, and I used to code in Obj-C professionally.
Like the person you replied to, I vastly prefer ObjC, I find the compiler pedantry in Swift to be annoying and to slow me down. ObjC is very fast to write and to iterate on, particularly in my style where everything that's an object gets typed as `id` so trying new ideas just means swapping out implementations.
I (have to) write C++ professionally. With that constraint, it's easier for me to work in Obj-C because its runtime is so thin and it's generally obvious how it interoperates with C/C++.
I'll take Obj-C over Swift any day. With Swift I feel like I have one arm tied behind my back and I'm constantly wrestling with it in order to do what I want.
Frontend: Svelte! (and SvelteKit) Backend: Rails (still! API) Mobile: Flutter
Whatever gets the job done without adding unnecessary complexity.
I believe Rails 7 value proposal ("The one man framework") is designed to lure in people with SPA fatigue. And hell, Rails and Ruby are still fun.
> I remember when Ruby on Rails hit it big, one of its mantras was that it made coding fun. As Rails has waned in popularity, has any other tech stack taken that crown?

I think Phoenix and Elixir are trying to. I like them.

I like Objective-C a lot too. It's a reasonably thin layer on top of C and has a dynamic flavor (which I prefer). The documentation is showing its age.

Rails. Nothing really beats it for the combination of

* Getting something up and running quickly. Something that does what you want.

* Iterating quickly on the thing you're building. Need a library (gem)? There's very likely a pretty good one.

* Building the thing in a fairly clean way (tests, code organization) in a way that's not too bureaucratic and tedious.

* Friendly community of people.

I've done some playing around with Elixir/Phoenix, coming from the background of a long-time Erlang user as well as Rails, and it's fun to learn, but I'm not 100% convinced that it's more productive than Rails outside of some niches. It's certainly not a bad thing to learn, though.

I’m at least a bit amused that you have a whole comment about how nice rails is without mentioning ruby ;-)
To me it's just sort of a given that Ruby is pleasant to work with. Otherwise Rails wouldn't be. If Rails itself were unpleasant, though, merely being in Ruby wouldn't be enough to make up for that.
I actually meant it affectionately. I always enjoyed using Ruby and wish it had a larger footprint outside of Rails.
I believe this is why ruby decreased in popularity. Rails preceded its reputation. A similar thing almost happened with Django and Python. I've heard of a few people who call themselves django developers.
My super subjective answer is SwiftUI. Obviously only applicable to iOS apps, but that's the most fun for me at present.
As a react native developer I can confirm SwiftUI is more fun. Mostly because of the relative simplicity. You just need Xcode or these days an iPad with Playgrounds on it and you can build stuff.
I still think Ruby with Rails or Ruby with Sinatra are the most pleasurable for me.

In Rails I can spin up very quickly a prototype, either with frontend or without and do some small experiments, consume an external API.

For me is also a great way to find ways to express my ideas in coding as Ruby is a somehow permissive language, allowing multiple ways of doing something thus one can find lets say their "coding voice"

I've been having a wonderful time spinning up small projects using Tcl, Wapp, and Sqlite. Tcl's quoting rules makes it really easy to embed HTML (or anything else, really) inline within a procedure. Simple example:

    # available at /style.css
    proc wapp-page-style.css {} {
        wapp-mimetype text/css
        wapp-cache-control max-age=3600
        
        wapp-trim {
            body {
                background: aliceblue;
            }
        }


    }

    # available at /hello
    proc wapp-page-hello {} {
        wapp-trim {
            <html>
            <head>
                <link href="%url(style.css)" rel="stylesheet">
            </head>
                <body>
                    <h1>Hello HN!</h1>
                </body>
            </html>
        }
    }
I loved Tcl way back before I switched to Perl. So cool seeing Tcl and HTML combined like this!
This is great! I write a lot of one-off utilities that run on my main desktop as web applications backed by sqlite so you're really speaking my language here!

I enjoyed the little bit of exposure that I had to Tcl/Tk through EXPECT, I used to write a lot of embedded test scaffolding using it back in the 00s. I've also been interested in checking out Little Language [0].

Wapp looks like a great place to start with Tcl.

[0]: https://www.little-lang.org/

I really hope Rails make a comeback.

Older versions of Laravel were superb - but when I went back recently I was shocked at what a clusterfudge had been made of shoehorning a frontend framework in.

UI components were removed from the framework and made optional with Laravel 6 in 2019.
.NET framework - framework is complete and IDE (VS) works great. QT - same as above