7 ms·
I'm gonna go back a short bit and say, for me? Ruby on Rails. In 2007 I was plugging away at PHP with whatever frameworks were around at the time -- the vast m
by generalk 6y ago
I'm gonna go back a short bit and say, for me? Ruby on Rails.
In 2007 I was plugging away at PHP with whatever frameworks were around at the time -- the vast majority of web dev that I saw then was pure procedural scripting down the page, maybe some `include` statements to pull in database functions. Especially in PHP, which encouraged mixing logic and HTML. The consultancy I was with had built custom stuff on top of Zend framework, and it helped a lot.
But around summer of 2007 is when I started hearing folks crow about Ruby on Rails, this hot new web framework written by a Dane in a Japanese programming language. It had been out for a few years and it was the hot topic in web dev circles, and so I decided to see what the fuss was about one weekend.
Instantly stuff I'd always had to do by hand was done for me. A decent data access layer with a few lines of code per db table, that automatically handled preparing and executing statements, and could handle keeping the database up to date with migrations. A REPL where I could load up the code I'd written for the app and use it for one-off debugging or maintenance tasks. A thriving plugin scene where many of the things I'd bashed together over the years were available, for free, just by cloning a repo.
That weekend I reimplemented the core functionality of one of the apps we'd been working on for a client. We'd taken about 10 weeks to get this thing into rough shape and I had its equivalent in two not-very-busy days. Authentication, authorization, CRUD, and fancy database queries I'd all had to hand-roll before just fell out of Rails.
I'm not overselling it when I say that for me, Rails was an absolute game-changer, and I myself and many folks I know owe their careers to the Ruby community and its (not always perfect) attitudes about software development. MINASWAN.
(I'm still active in Rails and the local Ruby community [Columbus Ruby Brigade!] but I'm running an Elixir/Phoenix shop now, which feels to me like the next step on the path Rails forged us.)
- ant6n 6y agoCan i do Ruby in rails without having to learn Ruby? I like Python, I think.
- BrianOnHN 6y agoShort answer, yes.
- generalk 6y agoOh definitely. I picked up Rails without doing a single line of Ruby beforehand, and I think that's true for many of the Rails devs I know. Knowing Python is a plus, much of the language is gonna make basic sense. For me, the big hurdles early were Blocks, which seem strange at first but make sense, and some of the metaprogramming stuff which you can definitely ignore to start and be just fine.
- skohan 6y agoThis was what I did when I was playing with Rails, but I felt like I was missing a lot about the fundamentals of the language. Especially because Ruby has a very free syntax, and steps far away from other languages in terms of syntax, I was able to copy things and make it work, but it was harder for me to really get the language than with many others.
- generalk 6y agoOh definitely, but for me I was never gonna be able to learn Ruby in a vacuum. If I had needed a general-purpose scripting language in 2007 I'd have reached for PHP or Perl, both of which I knew from web dev. But with Rails I had a reason to pick up Ruby in the first place. So I didn't know a damn thing about metaprogramming or duck-typing going in, but I knew Rails was lightning and I wanted to capture it.
- tboyd47 6y agoActually, yes. Contrary to received wisdom, most Rails devs learn Rails before or as they learn Ruby.
- zests 6y agoI haven’t used RnR but I assume its similar to Python/Django in taking people who know how to program in any language and turning them in to full stack web developers. Its a funky learning curve where all team members are effective and few need to have extensive experience with the framework.
- generalk 6y agoI've used Django, and while there's a base similarity the philosophical differences between it and Rails are definitely there. Not gonna take a side on the Rails vs Django deal though. Like you said, if a team can effectively ship software with it that's the only measure that counts.
- aantix 6y agoCannot agree more. The convention over configuration was brilliant - the implicit mappings made so much more sense. I could look at any given url and imply so much about what route/controller/view code was going to execute. The standardized code organization. ActiveRecord using the column names as data attributes. Was CoverMyMeds written in Rails?
- generalk 6y agoThe initial application that powered CoverMyMeds was PHP, as it grew out of the consultancy I mentioned in my original post and we were a PHP shop then. AFAIK it still exists and is actively maintained. Most other apps and services at CMM were written in Rails after we showed that we could ship better software faster with it, and it now accounts for the vast majority of code there.
- skohan 6y agoIronically this is exactly what I don't like so much about Rails. It's such a "batteries included" framework that if you want to do what Rails is good for, it's going to be super easy, but if you want to do something a little bit different a lot of times it feels like you have to almost break Rails to make it work. To some degree I think it's a matter of taste, but I would much rather start from a blank slate, with a set of sensible tools to build my solution up from scratch, rather than having an almost finished product I have to carve my solution out of.
- generalk 6y agoFor most of the professional work I've done, I'm doing a CRUD web app. So if Rails or Phoenix lets me get to market faster with a tested solution, I'm sold. I've even got a talk I used to give about getting Rails to work with a legacy database, which has gotten much easier from the early days. Now that I'm hiring devs, I do not want to pay them to build a CRUD framework from scratch, I'd rather have them building business logic we can't get off the shelf for free. But whatever ends up working for you is cool!
- eightysixfour 6y ago
- peteretep 6y agoAs a Perl programmer I didn’t get the hype of Ruby. Then I wrote my dissertation on it. I still didn’t get it. Python is fine and I see it’s strengths and weaknesses but Ruby is just hipster Perl and doesn’t have Moose. Don’t, as they say on Twitter, “at” me.
- elliottkember 6y agoI think you’re making the classic mistake of confusing Ruby with Rails.
- x86ARMsRace 6y agoWhich is an oddly pervasive mistake! I had a coworker once assume since I knew Ruby the language, that I'd be completely comfortable with Ruby on Rails' Active Record system.
- elliottkember 6y agoAbsolutely. I learned Ruby at the same time as Rails, and then when I started using Ruby by itself I saw how much heavy lifting ActiveSupport had been doing for me.
- ipnon 6y agoRails seems to land best with those having an Intimate and Arcane Knowledge of the Ye Old Webbe and Its Attendant Developmente.
- jeremyjh 6y agoGP is talking about Rails.
- TimTheTinker 6y agoI’m curious what your take is on the JAMStack+lambdas style of app development. I am working on a new web app. Initially, Elixir/Phoenix was looking like an excellent option, but then I looked at hosting and decided it would be easier to use something like the Serverless framework for AWS deployment which JAMstack+lambdas seems to match better — no need to manage VMs and networking infrastructure, mostly.
- generalk 6y agoJAMstack is...not my jam. I'm a big fan of rendering majority on a server and then shipping it, especially with Phoenix's LiveView which allows you to write reactive UI without writing Javascript. But I said it in another comment: shipping value beats everything. If you can ship quickly and effectively in JAMstack to lambda, don't let anyone tell you that's wrong.
- garethmcc 6y agoShipping value is important. If you can build a solution faster in a monolithic, MVC style framework running on EC2 instances, then do that. I think people get too bogged down in the minutiae up front and forget they are being paid to solve a problem ASAP. Worry about optimisations and improvements when its going to add more value than right up front when the burning need of the business is to have something - ANYTHING - up and running and helping generate revenue.
- garethmcc 6y agoI have been building JAMstack apps since 2016 using exactly the stack you are asking about. Using something like the Serverless Framework to help you build and deploy your collection of microservice backends into AWS as well as your static frontend into S3 is just awesome to behold. I have had an app running for 3 years with spikes of traffic and have never had to worry about maintenance or downtime.
- interactivecode 6y agoEarlier this year I played around with Phoenix for a bit. As a JS dev learning about all this all at once it looks like such a great dev env. One thing that still felt rough around the edges was the tie in with npm packages. Has that part been improving?
- generalk 6y agoAFAIK Phoenix doesn't tie in with npm packages whatsoever. You have an `assets/` dir that contains your javascript stuff, and out of the box Webpack is set up there, but besides that it's all your choice, with the exception of the pre-shipped stuff for Channels and LiveView.
- jswny 6y agoIt’s not supposed to tie in with NPM packages. Phoenix handles the back end, and can handle the HTML as well. If you want to include any front end JS stuff, just include the scripts or bundles like you would a regular site where you include JS stuff.