DEV Community

Ben Halpern
Ben Halpern

Posted on

I’m Ben and I am a Rails developer

There, I said it. Even though most of my professional experience is working in the Ruby on Rails environment, I rarely like to admit that. Not consciously, but sub-consciously I’m affected by the industry notion that Rails is a framework for n00bs and that Ruby can’t be used for anything serious. It hasn’t been my experience, but the Hacker News mindset on Rails eats at my insecurities.

However, hanging out at Railsconf, where I'll be giving the talk How We Made Our App So Fast it Went Viral in Japan, I'm feeling very excited about this 15-year-old framework I use every day.

I am a perfectly capable software developer who can code outside of Rails just fine. But Ruby on Rails is how I stay efficient. It’s what lets me translate what is going on in my brain and turn it into pixels before I lose my train of thought. Rails makes a lot of tradeoffs—They call this magic. It's the things the framework does without making it clear in the file what it is doing. But all technology makes tradeoffs, and Rails remains so lovely for those who use it well.

I’m not a Rails absolutist or apologist—I like to acknowledge its many warts. Perhaps that’s why I don’t introduce myself as a Rails developer. I have always seen our Rails app, dev.to as an eventually not Rails app. Maybe not this year or next, but I feel like eventually it will be the dev.to codebase, a portion of which is based on Rails. But I don’t understand why more people don’t start projects with Rails regardless of their notions of what a perfect finished app looks like. It’s the ultimate starter project software and it can scale as far as you feel like scaling it. In startup land I feel like Silicon Valley moved past Rails because it was no longer fashionable—and lost a lot of productivity in doing so.

I recall a blog post about a new company that had some non-technical momentum which was completely derailed by taking a simple idea and writing it in Go microservices. I cannot remember where I found the post, but the story was telling. They scratched their work and took a week or two with Rails to make up for months of lost productivity overthinking the problem.

Startups should be the ones embracing the fast productivity Rails offers and not rejecting it out of vague future concerns—or fashion.

I got back to Rails in order to create dev.to because I was getting burnt on a complicated application and I needed to get back to an environment where I could wrap my head around the whole thing. What started as therapy turned into momentum because things were moving fast and the website fit the greater project’s needs in that small changes could be implemented in a timely fashion. But speed isn't about being sloppy, it's about working with an opinionated framework that seeks to have all the tools you need remain within grabbing distance when you need them. If you cannot get past the phase in a project where a few people need to be quick and productive early on, you won't have scaling problems, you'll have never-launched problems.

And it’s not just small projects like mine that benefit from the Rails environment. Any large company is filled with small projects—or at least they should be. Rails remains the standard of productivity in most web development environments.

Rails is not the only “simple” framework. There have been many new inspired projects, but it is the most mature simple framework. It’s evolving nicely, staying just behind the bleeding edge of web development and introducing good new features along the way. Rails 5.2 looks nice and I'm happy with the state of things.

I’m Ben and I am a proud Rails developer.

Latest comments (80)

Collapse
 
vaarun_sinha profile image
Vaarun Sinha

Many people say the same thing for django 🥲

Collapse
 
simrandotdev profile image
Simran

I needed this. I am an iOS and C# backend developer and have played with ExpressJS in last couple of years. And I hate the inconsistencies of JS. So today I decided to learn Ruby and then finally Rails to use in my personal projects. Thanks for writing this.

Collapse
 
shaijut profile image
Shaiju T

Which web framework you would desire other than Rails for dev.to code base ?

Collapse
 
molly profile image
Molly Struve (she/her)

Great post Ben! Really liked it

Collapse
 
ben profile image
Ben Halpern

😄

Collapse
 
jdickey profile image
Jeff Dickey

Crowd: Hi, Ben!

(Sounds like a 12-step program — very different than a 12 Factor app.)

Seriously, though...we were gung-ho on Rails for about five years, up until 4.0 was new and shiny, and then we spent the next three years writing fun, readable, effective Rails-free Ruby with a ton less overtime and stress.

Why? As Nick Sutterer put it in his book Trailblazer: A New Architecture for Rails:

For every Rails project, there is exactly two outcomes. Either someone in the team’s an experienced architect and leads the software to an advanced design with service layer, view components, maybe forms, and so on. Or, and that’s the classic way, the project strictly follows the Rails Way and will end up as a code disaster.

Explaining why a conventional Rails architecture fails is simple: There is no architecture.

Fortunately, there are other choices. We now prefer Ruby development with the Hanami framework, which will be Very Helpful if you, as I was, had been looking in at the shops kicking butt with Clean Architecture and related concepts, then looked back at Rails' ActiveModel::Base class and its hundreds of methods, thinking "how on earth am I going to understand that?" The answer: you're not. Deal, and adapt, or continue to throw yourself up against the serrated reinforced-concrete wall that you're beating yourself against now.

Rails can be used to write great software; there are dozens of large-scale, successful apps that prove that point; several of which are produced by companies that I'd dearly love to work for. But, as Sutterer said in the quote above, it is possible. But do you really want to bet any money that you'd terribly mind losing on those odds?

Collapse
 
eclecticcoding profile image
Chuck

Learning Sinatra at Flatiron and Rails at rubytutorial.com and loving it. Planning a DEV future which hopefully will include Rails. Thanks for a good read.

Collapse
 
mahendrachoudhary profile image
Mahendra Choudhary

hi @ben when i was about to start my rails journey I also affected by the notion of rails phobia . I read many article online which saying only one thing "rails is dumb ass ,its so slow bla bla bla " .I agree its slow to some extent but all these article never compare it with other frameworks on #productivity. Rails(aka ruby ) care about the person behind the framework who is writing code . I love to write code and I feel so human while writing code in ruby and rails . It elimated the pain points which i faced in PHP and python .

for example :-

def meow(say)
#do something...
end

looks so beutiful and meaning full , then this in python

def meow(this,say)
#do something...
end

10.minutes.ago

=> Sat, 20 Aug 2016 15:03:30 UTC +00:00

and many more examples ..

I am mahendra , I am proud to be a rails dev

Collapse
 
jacobherrington profile image
Jacob Herrington (he/him)

All tools are just tools.

Rails is fun. 🤠

Collapse
 
andrewbrown profile image
Andrew Brown 🇨🇦

I've been using Rails for 15 years and quite proud to keep using it.
The first web-app I ever launched was called Markadee and for some reason, it was really popular in Japan. Go figure.

Collapse
 
skatkov profile image
Stanislav(Stas) Katkov

Thanks for sharing. I do have similar feelings though, I mostly don't mention much that I'm a rails dev.

But most of my gigs last couple of years are rails - making it fast. I've been dealing with rails problems for so long, that I totally forgot what joy it brings from a start.

I started out building my own project ...and after a lot of thinking, I decided to use rails for it

Man, rails 5.2 really feels solid.

Collapse
 
viniciuscamargo profile image
Vinicius Camargo

Hey, I'm about to start a new project and I've been thinking about rails. Would you mind to share some of this problems?

Collapse
 
jvarness profile image
Jake Varness

Saying Rails is for n00bs is like saying C++ is for experienced programmers.

I don't agree that any one technology is better than the rest. I think that having knowledge about a lot of different technologies can help you with any kind of job. I also think that different languages and frameworks are tailored to solving specific problems.

Rails was your way of solving how to create this website. You also could have used Java or PHP or JavaScript or Dart, and to me it makes no difference. If you used any one of those other technologies, you could probably find a clone of Rails because of Rails history of being a useful web framework.

Amber for Crystal? Rails clone. Grails for Groovy? Rails clone. Django? I think it's a Rails clone? Angel for Dart? Pretty sure that's a Rails clone.

For being a framework for n00bs, people try to be quite a lot like Rails 😉

Collapse
 
georgeoffley profile image
George Offley

You should be ashamed.

Collapse
 
georgeoffley profile image
George Offley

Just playing. As long as the software gets the job done, you've done good work.

Collapse
 
telexen profile image
Jake C • Edited

I really feel that the MVC-like frameworks only work well when you have a very simple domain or are strictly CRUD. I develop Enterprise software, and the limitations of those frameworks always present themselves quickly.

This might make you think that Rails is for n00bs, but I also get hamstrung by some of the features of ASP.NET MVC.

Collapse
 
zenmumbler profile image
zenmumbler • Edited

A couple of things came to mind while reading this, first is that I believe I read a very Valley place like Y Combinator had been telling startups to "just use Rails" so it's at least not universally dismissed in "big tech".

As for Hacker News, it's like Twitter but without the good parts. While the articles linked can sometimes be interesting, the comment sections are circlejerks that do good to no one. It is, in a sense, an anti-dev.to. Ben, they're not worth the anguish.

If you want to still see the articles linked, use a Twitter account like @newsycombinator (twitter.com/newsycombinator), which only share the story links and no direct links to HN pages and if you still end up on a page with comments (HN or otherwise), extensions like Shut Up (rickyromero.com/shutup/) can help avoid you glancing at them accidentally (you can whitelist sites like dev.to of course.)

Finally, if you want to participate in the madness from a safe, abridged distance, visit n-gate.com/hackernews/, with the caveat that the author of that website is rather vicious, but he does have a way with words. Don't visit if you want to eliminate casual negativity in your life, but the same should be said about HN itself.

With regards to Ruby, I found myself agreeing with a post by a Ruby programmer about the various mental approaches to programming and the tools and languages people use them for here: mkdev.me/en/posts/the-three-types-...

I am firmly in the "programmer-engineer" camp and am not too fond of Ruby and other more "literary" languages, but the post made me appreciate much more how different minds map to different language families.
If you have the time, try out some exercises in a language you don't know or think you wouldn't like. You may not end up liking it still but it will broaden your mental horizon and may teach you a concept or two you can use in your favourite language.

Collapse
 
okolbay profile image
andrew

tl;dr: watch clean architecture talk by Rob Martin

long version: many of you guys in comments say how you are fast and productive with rails, and how it has magic. and you dont get ranting about magical aspect of rails that you like so much. startups kicking off with rails (or any RAD framework) and failing to move to more explicit architecture are having hard times and blaming the tool they’ve picked. Solo (or should I say Siloed) projects some of you refer to might survive with business logic residing in your head and expressed with RoR web-specific building blocks for years. For a business running with IT dept and a team (or few) its not the case. You want to scale your business and your team. And this is where obscure, implicit descision on extnding your application user from framework’s User makes little sense to newcomers. Problem is, many modern frameworks are flawed, they pretend that they can help you, by offering building blocks too specific, encourage to use their implementation and move fast, without communicating, that each non-legit extension from framework base class is a technical debt. It building up, and your domain blended into “web” framework, results in an unmaintainable code. And here goes all ranting about RoR - its just one of the frameworks that is too helpful )