5 ms·
I still think Ruby on Rails is the #1 choice for launching a non-static web project in 2021. The lifecycle I've seen with the 4 companies I've built on Rails:
by buf 6y ago
I still think Ruby on Rails is the #1 choice for launching a non-static web project in 2021. The lifecycle I've seen with the 4 companies I've built on Rails:
1. Pure vanilla rails
2. Then the front end grows into an SPA as functionality becomes more complex
3. More microservices like search emerge into their own thing
By step 3, I've got a dozen engineers and things are still as smooth as one engineer. Engineering is never the bottleneck. The tech debt is super easy to spot. It's incredibly simple to know how to scale horizontally to many more engineers.
Rails can get you very very far. It's not sexy, but it gets me to market faster than anything out there.
- capableweb 6y agoReplace Rails with any framework and you'll have the same amount of success. I've done the exact same thing across Ruby, PHP, Golang and tons of other frameworks/languages and never had problems if following those steps. Problems usually come from when teams start with point 3 and 2 when in reality they should stay lean in the beginning.
- bambataa 6y agoWhat Rails-equivalent framework does Golang have?
- capableweb 6y agoI myself usually opt for the "small set of composable libraries" way of development nowadays, but I've worked with teams using Buffalo and Beego which kind of provides a "batteries included" approach that Rails follows too.
- enumjorge 6y agoSame question but for Node.
- capableweb 6y agoNodeJS has even more "batteries included" frameworks than Golang. Sails, Hapi, NestJS and Adonis are probably the most popular right now, at least from my viewpoint (traditional SaaS web development)
- LordHeini 6y agoI found Revel to be quite similar. I would say it is as productive as rails too. There is no ActiveRecord and way way less magic which slows (initial) development speed but it pays off in less bugs to fix. So overall development speed is roughly the same. But with Go you gain co routines and nice performance which can make life a lot easier. Gos type system, while somewhat poor, still helps too. The worst part of the whole thing is actually the weird Go std lib templating.
- regularfry 6y agoConstant factors vary framework to framework. I can't say I've ever seen anyone move as fast on Symfony as on Rails.
- capableweb 6y agoSymfony might be the odd one of the bunch. Jokes aside, Laravel is probably a more likely contender to provide a Rails experience for PHP. And it's easy to get clouded by anecdotal data, I'm sure I'm biased as well. But after some time in the industry, it matters more who the person is that is using the framework, than the framework itself. If you put an equally skilled developer with the same amount of experience in either Symfony or Rails, I'm sure they can be as productive as the other. But then skilled developers tend to gravitate towards Rails more than Symfony, so hard to judge in the real world.
- TylerE 6y agoI have seen multiple PHP projects at multiple companies go totally pear-shaped. I refuse to work at companies that use PHP anymore.
- capableweb 6y agoOk? I've seen projects go pear-shaped in probably 20 different programming languages at this point, and I guess after a certain point of experience, you start to realize that failures seldom have to do with the programming languages themselves, and more about the people actually writing and managing the code (and everything else around development).
- TylerE 6y agoWhen the 3 biggest disaster projects I've ever had to touch were all in PHP, I choose to believe that is a trend. Yes, you can write bad code in any language. PHP makes it hard NOT to. The footguns are all sitting out in the open, loaded, and the safeties are off.
- capableweb 6y agoWell, if you're not interested in factual discussions and you simply "choose to believe trends", all bets are off since you're pulling in your feelings about a programming language into your arguments. Hope all goes well for you anyway! As a counter-point, the biggest disasters I've seen has been involving either C++ or C#, but in the end I think the reason they were disasters were because of the programmers (and their ego) rather than the programming languages they worked with. C++ is plenty open and without safeties, but that doesn't mean you have to use it like that.
- herbst 6y agoSame experience. I've seen nice PHP projects on the internet, but not yet in RL. I know its possible, i guess its just that the language does not reward you for corecctness.
- 6y ago
- brightball 6y agoThis argument has been made for years and I’ve yet to see it really be true. You can make anything with anything, but Rails is the closest thing to an Aspect Oriented Programming environment that I’ve seen in the wild. It’s not easy to replicate that type of ecosystem with any other framework. I’ve spent ample time on teams using Go, Python, PHP, Java and C#. There’s just no comparison vs what a small Ruby team can accomplish.
- bestinterest 6y agoI really agree with this statement. I've never seen anything like Rails in Java/JavaScript land. In Java there's SpringBoot but its nowhere near a cohesive package with a strong online community behind it like Rails. It's more of a collection of libs put together with a good enough attitude.
- sedeki 6y agoI've thought about learning Ruby (and Rails), being a Python guy myself. Not sure if it is worth the effort.
- syspec 6y agoTry rails you won't look back
- mehphp 6y agoI tried (am trying at current company) and still don't like it. I completely see the appeal for getting an idea up and running quickly, it absolutely delivers on that. However, I joined a rails company about a year ago and the codebase is just a mess at this scale. I find it annoying that in order to know where dependencies are coming from, I can't just go to the top of the file and see what's imported. I have to know how rails injects it and then track it down from there. Don't get me wrong, there are issues with django, Go, etc.. but for the most part I can jump in and track down what's happening much easier. Now, Ruby itself isn't bad at all.
- awj 6y agoYeah, that's gotta be one of my biggest complaints after years of working with Rails. Eventually you sort-of memorize the conventions and can relatively accurately guess where a file lives, until someone decides to get clever and put things in a weird place. It also implicitly discourages you from asking yourself if you should be accessing the thing you are. IMO a lot of the tight coupling in Rails codebases begins with being able to grab literally anything and use it with no one the wiser unless the read that specific line of code.
- vidarh 6y agoI love Ruby. Have used it for 15 years, but I can't stand Rails. It's just massive overkill for most things. I prefer to start with Sinatra + Sequel for web projects. Sometimes Padrino + Sequel. As your project grows, sure, you'll pull in many things similar to Rails, and probably pull in some projects that started out with Rails too, but it allows you to be much explicit about which dependencies you pull in, why, and to limited where it gets pulled in.
- andy_ppp 6y agoPhoenix and Elixir, if you understand the choices made, is also a wonderful choice. The whole contexts thing allows you to design your system as micro services before you even add in network partitions, and Ecto, not being an ORM (it’s a DSL for writing SQL in elixir) is incredible, better than it’s possible to be in active record. Then there’s channels, presence, performance etc.
- syspec 6y agoI want to use this, but every time I try to switch it is not there yet. Sure it has the core stuff, but things like ActionMailer and the built in S3 support in ActiveStorage, Devise, keep me going back. Too many of those things are not there... yet ... with Phoenix Also nothing beats active record after they added Arel which turns your query into an AST and optimizes it before sending it out - Ecto is not really there yet and doesn't look like it will get there
- andy_ppp 6y agoI think most packages are just as good if not better than their Ruby equivalents these days (and really we can do all of the things you mentioned in elixir), the active record pattern is obviously easier to understand than Ecto, but if you know how to write well optimised SQL you never want to go back to an ORM (even if it tries to rewrite your queries for you with magic).
- anhari 6y agoActiveRecord and the scenic gem for database views is a very powerful combination. For the vast majority of queries, you don't need to write optimized SQL by hand. When you do, you can push that work to a version controlled database view, and wrap it in a ActiveRecord class interface and still get all of the ORM niceties.
- andy_ppp 6y agoThe difference here is between two different philosophies: 1) I want the thing to just work, it doesn't matter about underlying complexity, give me the magic and the version controlled database view and the ORM niceties. 2) I don't trust magic as it has bitten me in the arse before, let me make and be able to fix things myself as I'm working at a (slightly) lower level. I'm not saying either is correct but in Phoenix/Elixir magic stuff tends to be kept to a minimum. One man's "for the vast majority of queries" is another persons "will work fine until you need to do something complex". It's all trade offs and I choose mine carefully as I'm sure you do.
- flippinburgers 6y agoThe single most important part of rails is the orm. That, honestly, seems to be the "thing" that people are actually getting excited about when they gush over rails. A close second would be rspec. Finally, in production, it can be very helpful to be able to inspect the state of the db using the rails console (as long as the developer is wise enough to sandbox their actions). I find the tooling (I use vim with solargraph) to be not only underwhelming but frustrating. No I am not willing to use a different editor. Rails code is not at all discoverable because I cannot follow method calls/objects half of the time. In order to alleviate this, I suppose, rails tries very hard to standardize things. Ok. Fine. The ease of creating model relationships can also produce a nasty set of relationships between tables if you are not careful. One project I worked on used the fast_jsonapi where one table had relationships spanning most of the system. Dealing with that was borderline ridiculous.
- pjmlp 6y agoI don't know, I just keep using Java and .NET, alongside their top of the line JIT/AOT compilers and GC implementations.
- tomduncalf 6y agoThis is interesting - I'm evaluating what to use for the backend of a side project right now after having focussed more on front-end/apps for the last few years, so I'm catching up on the latest progress in this area. Interesting to see that Rails is still often considered the best option, seems like they must be doing something right. Ideally in my mind, I'd like to use JS (well, TS), because it's the language I work in most of the time these days... but I can pick up different languages as needed, that's not a major issue and I've done some Ruby way back when - more important to me is making the development of the backend as simple and as quick as possible (the less code the better!), and that it will run reliably. A good selection of well-tested off-the-shelf modules to integrate other services is always a good thing. It seems like Rails is well ahead of any JS-based solution in these regards, from what I can see. I had been evaluating PostGraphile, which appeals because of the "low-code" approach, but I guess I'm a little concerned about doing most of the logic in database functions, because I've worked on a system like that years ago and found things like testing and debugging pretty painful. If anyone has evaulated PostGraphile (or Hasura etc) vs. Rails, I'd love to hear your thoughts (or equally, any other solutions to check out!).