5 ms·
I'm in the process of transferring from being the CTO of one company to CTO in another one and I'm wondering if I should just start with Rails this time. I get
by haolez 4y ago
I'm in the process of transferring from being the CTO of one company to CTO in another one and I'm wondering if I should just start with Rails this time. I get a little uneasy given the popularity of the JavaScript ecosystem, and Rails seems a little harder to share code between the web app and mobile apps, but I don't know... It feels extremely productive to work on Rails.
- number6 4y agoMostly work with Django but have some expire with Rails: the speed you have with rails is insane compared with JS. Authentification, Routing, management of state, SSR. It's all done for you. Mobile App. Start with Service Workers and PWA and decide then if you need an app.
- jonesnc 4y agoI'm mainly a Django dev, and I'm curious how the productivity of Rails compares to Django. Do you have anything conclusions about their relative productivity, given a reasonable competency in both frameworks?
- tomc1985 4y agoI've worked with both extensively, though my experience with Django is mostly with very old versions. In my opinion Rails is definitively "higher velocity" than Django (recent versions of Rails have an answer to nearly everything you would need for a modern midsize web app), but I admired how simple Django was architecturally. Stack traces in Django were, at least then, easy to digest and you could comprehend most of the routing system by reading a few files, for example. Whereas with Rails your stack traces are much longer and there's a lot more machinery each request has to go through. Rails has a lot more abstraction in general (you can blame Ruby's powerful reflection capabilities on that), but I found that I have to go delving into Rails' internals very little.
- powersurge360 4y agoHey there! I've done a lot more Django than I've done rails, but have had both in my job title at different points in my career. My favorite language is python but my favorite development platform is Rails. They're mostly comparable but Rails wins for me. Rather than type it all out in prose I'll just give a short little blurb about what you get and don't get with one and leave the rest as an exercise to the reader: What you get with Django but not with Rails: - An admin panel out of the box - Python (which is a big win for me personally) - Authentication out of the box, but still fairly basic - A robust library of third party packages that benefits from python being used much broader than the web space. - Class based views (this is the biggest thing I miss, by _far_) - Better LSP support - Django REST framework (rails isn't _quite_ as good but you can get kinda close by leveraging resourceful routing and the serializers that ship with rails) What you get with Rails but not with Django: - Websocket support out of the box (but not the greatest performance. A third party drop in replacement [Anycable] makes it much better) - First party API for background jobs (but it requires a third party background job system to wrap, like sidekiq) - First party integration of a JS solution (import maps) - Second party integration of a JS bundler (js-bundling, written by rails authors but not included by default) - Hotwire (although Django trivially integrates w/ a comparable technology, htmx, Hotwire is still pretty dope) - Rspec and the rest of the Rails testing ecosystem (guard, VCR, factory_bot, capybara). Python has ports of some but not all. In my mind, Django adopted just two things, I'd be very happy. I'd love to see a better async story in Django that would enable web sockets and stuff. And the second thing I'd love to see is a better story out of the box for playing nice with frontend build chains. And, as a distant third, I'd like to see an html-over-the-wire technology like HTMX favored and some light integration in Django to recognize some headers so it can switch between sending just template segments or if it should send one w/ the layout included. The testing ecosystem I don't think is possible for Django to lift on it's own and I'm prepared to miss it while I'm away. That other stuff, though, is unfairly aging Django imo.
- mysterydip 4y agoI'm confused, is this a new company? If not, it seems like changing the tech stack as soon as you come in is a recipe for disaster.
- haolez 4y agoIt's a new company, the system is still small and they just lost 80% of their engineering talent. I think what's left of the system doesn't matter that much (but I'll have to check, of course). They are currently on C# + Angular.
- oblio 4y agoWhy drop C#, though? Angular, I get. But modern dotnet is quite cool.
- pas 4y agowhy would you drop Angular though? what would you use instead?
- brink 4y agoI'd start by questioning if I need a front-end framework at all.
- isbvhodnvemrwvn 4y agoThey lost 80% of engineering talent, baking a custom framework every single new joiner would have to learn would be a colossal waste of resources.
- ek750 4y agoDo you have any references to this? I must have missed the news, something like a cultural blowup internally?
- Lio 4y agoHopefully when Strada, part of Hotwire, is released latter this year that will take care of the mobile app part of the puzzle.
- a3w 4y agoIsn’t strada a running app? And also the name of Google’s gaming streaming service? And probably 5 other things that have higher search priority on PageRank? What is Hotwire , though?
- vxNsr 4y agoI think this answers your questions: https://hotwired.dev/ https://hotwired.dev/ > Strada standardizes the way that web and native parts of a mobile hybrid application talk to each other via HTML bridge attributes. This makes it easy to progressively level-up web interactions with native replacements. Strada will premiere in 2022 Hotwire is an alternative approach to building modern web applications without using much JavaScript by sending HTML instead of JSON over the wire. This makes for fast first-load pages, keeps template rendering on the server, and allows for a simpler, more productive development experience in any programming language, without sacrificing any of the speed or responsiveness associated with a traditional single-page application.
- jdoconnor 4y agogoogle's game streaming service - Stadia
- a3w 4y agoTurns out I suck at getting names right. Like wanting people to send money to me by means of PayBack (bonus points), instead of PayPal, and vice versa at the supermarket's checkout counter.
- NDT 4y agoStrava is the running app
- wefarrell 4y agoI’d also look at elixir/phoenix.
- haolez 4y agoYeah, I wanted to try it as well, but I don't think the team can handle such a drastic change right now (from OOP to Functional). But it looks like an awesome platform.
- rco8786 4y ago> It feels extremely productive to work on Rails It is. Nothing comes close. It's a shame there's such a stigma around it otherwise. I do think that we're seeing the pendulum start to swing from microservices/cloud/PaaS everything back towards simple architectures and simple deployments and I'm hoping Rails sees a bit of a renaissance with that. > Rails seems a little harder to share code between the web app and mobile apps I've personally never seen this done well, ever. At least not in a way that the amount of code that can actually be usefully shared is worth the effort.
- greggh 4y ago>Nothing comes close. Laravel is as easy and productive.
- meesterdude 4y agorails is awesome, and with hotwire we can reuse slices of the application and cut down required dev time. It's certainly optimized for developer productivity and happiness! been doing it for 13 years and still love it.
- Sparkyte 4y agoYou can just create modules or dependencies in other languages you know?
- Sparkyte 4y agoJust containerize everything put it in kubernetes or some other solution. Plenty of CI/CD tools that take the toil out of it.
- rawoke083600 4y ago"just containerize everything put it in kubernetes?? Dear lord !! That sounds horrible.
- rawoke083600 4y agoIn my experience ruby devs are just a little bit nicer to work with or have as teammates than JavaScript developers. YMMV.
- krschacht 4y agoIf you need mobile, consider a Rails backend and React Native/Expo front-end. This is a dream combination for my project which is mobile app first and web site second. I miss some of the rails view magic, but instead we get a single front-end that runs natively on mobile (iOS & Android) and it also runs on web. (It’s not common knowledge that React Native is for web too, it’s just an abstraction on the HTML elements: e.g. View instead of Div).