RoR and Djano seem to be frequently recommended, any thoughts? Other ones come to mind, maybe Clojure?
For some reason RoR doesn't seem to be as popular where I live (Finland) though.
My background: I was a Python dev that worked PHP because that was the jobs I got (more than 10 years ago) and decided to invest more into JavaScript (2007) because I though it was going to be the future. When I couldn’t stand PHP anymore I got a Ruby job (because, still no Python web jobs back then) and it changed me fundamentally. I love Ruby and Rails till this day and Ruby, JavaScript and Python form the backbone languages.
One thing in particular that it's still really hard to get used to is keeping track of a whole discrete set of framework conventions while also making a first meaningful dive into Ruby to begin with. It's nice not having to, say, implement logins myself, but it's still a little mystifying how indistinguishable from magic that approach makes things looking at it from the outside. (But then again I guess when I first picked up JavaScript I wasn't also concurrently learning React or Express...)
From my experience there's a lot of room to build robust applications using the vast and mature ecosystem of ruby. I had the opportunity to work with api only, with react on rails, pure erb with vanilla js. Each with some pros and cons.
One of them was really interesting, based on lessons from Domain-Driven Rails, which I much appreciate for scaling busineses with high complexity in terms of rules.
Tooling today is quite mature too, even from simpler ones as VSCode or even RubyMine (unfortunately paid as opposed to other editions... Subject for another thread tho).
I'd highly recommend Ruby as a starting point for founders, cause there's no silver bullet indeed, however the speed and flexibility of a full featured Rails app today is impressive. Both for coding core app features, scripting and even fastly mungling data (let's be honest, it's quite common pivoting in early stages) using the rails console.
Yeah, single thread and stuff out of the box, but I'd guess that a startup having such a requirement in day 1 is 1 in a hundreds of thousands cases (I can be wrong, want your thoughts too folks).
https://guides.rubyonrails.org/
Other than that you might find something interesting in on reddit.
https://www.reddit.com/r/rails/
The changes for frontend development between Rails 6 and Rails 7 are so huge that it doesn’t pay to get an old Rails 6 book right now.
About Node, I have been using NestJS[1] and quite like it! Definitely has a lot more functionality out of the box when compared to other options in the Node ecosystem.
PHP gets a bad reputation everywhere, even if is less deserved nowadays. I am still not a fan, the syntax, the libs, the community, it’s not mine. My impression of the community is they have a chip on their shoulder because of the bad rep and the bad rep keeps most new devs away that could significantly change the community. They also are in denial that a lot of the “bad old code” is the main reason they are as huge as they are today and that a lot of people chose PHP back then because it was better (cgi) or cheaper (own server vs cohosting) than the alternatives.
Clojure has been a perfect fit for my needs, very similar to what you describe, and neither Rails nor JS have been able to match that.
With Clojure/Clojurescript you get:
- sane, single lang for both backend and frontend (much more seamless than JS/node),
- REPL-Driven-Development - immediate feedback loop translating to huge productivity boost,
- a very refreshing approach to programming,
- access to both two largest ecosystems JVM, npm and of course clojure's own amazing libraries,
- vibrant and diverse community, converging people from all different programming backgrounds,
- much, much more.
Rails and Django are a bit tied to 2005ish MVC paradigm and while it's reliable and gets job done, it comes with compromises on flexibility and user experience - making it hard to be competitive in 2022 as a solo founder. Clojure on the other hand is known for empowering single/few developers to outcompete much larger teams.
Seriously, forget about Rails and Django and just focus on Clojure.
It’s also an amazing choice for launching an MVP because it handles, well, near everything.
For a novice developer, it’s one of my top recommendations for getting experience across the full gamut of web development.
Being not as popular as Ruby/Rails I wouldn't recommend it for anyone who isn't comfortable researching some answers that aren't immediately found in search results.
While I wouldn't personally use it for my own projects (since I'm productive in React/Node), if I had to start fresh again with what I know now, I'd pick Ruby on Rails.
The creator of rails recently wrote a great article on how Rails is the perfect choice for solo founders here: https://world.hey.com/dhh/the-one-person-framework-711e6318
I also recently wrote a short article about how enjoyable it is to work in Ruby and Rails here: https://jmarchello.com/a-love-letter-to-ruby-and-rails
If you have any questions or want to talk more about learning Rails, DM me on twitter @j_marchello. I'd love to help.
Hotwire is new, but it seems to cover the gap between applications that need modern front-end components, but don't need all the react/api/etc...
I think it's also worth looking at the Rails front-end story. StimulusJS is one of my favorite parts of the Rails stack (though totally usable elsewhere). Instead of ever again writing an event listener in JavaScript, you can write it inline in your HTML, using data-* attributes. It is to JavaScript what Tailwind is to CSS. I heard DHH in a podcast talk about the value of seeing your actions directly in the HTML, not needing to open your JS file to know what's going on. Stimulus and also Turbo definitely have an interesting place in the world and are extremely powerful when they're a good fit. On the other hand, I've still had use for React at times.
Outside of Rails, I'm excited to try Remix (https://remix.run/) because of its batteries-included approach and what seems like a novel approach to server-side rendering without all the work.