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.

Top comments (80)

Collapse
 
shalvah profile image
Shalvah

Replace "Rails" in this post with "Laravel", and everything still applies.

Collapse
 
ben profile image
Ben Halpern

Unless your name isn't Ben

Collapse
 
shalvah profile image
Shalvah

Haha

Collapse
 
tomk32 profile image
Thomas R. Koll

There's no greater honour for Rails than to inspire others.

I left PHP for Ruby in 2007 and never looked back once.

Collapse
 
blackcat_dev profile image
Sasha Blagojevic

Was just about to write that, 100% nailed it.

Collapse
 
luonghoang2404 profile image
luonghoang2404

if you had work on both of them, I think you wouldn't say the same

Collapse
 
itmayziii profile image
Tommy May III

I will say my first reaction to seeing "I'm a rails developer" was to tell you I'm sorry for your loss.
This sort of mindset is something I'm trying to avoid, because at the end of the day the only thing that matters is this.

Does your software solve a problem?

I think we all have some sort of ego when it comes to the software WE use and tend to think of others as not as good, or subpar, it's almost human instinct. The reality is that we should choose whatever makes the most sense for the problem your trying to solve.

This article hits the nail on the head. Software choice is irrelevant if you can't solve a problem with it, and the needs for many startups is quick development and ability to change ships fast. You can worry about things like scalability, testing, etc.. once your business is proven and it is more important for your software to be stable than adding new features.

Collapse
 
brlafreniere profile image
Blaine Lafreniere • Edited

Hard to tell exactly what your point is, and it seems as though you're contradicting yourself?

Like you're saying your stack choice doesn't matter at first, and then you go on to describe how people choose their stack because it helps them develop quickly and ship changes fast?

Collapse
 
itmayziii profile image
Tommy May III

Choosing the stack that helps them ship fast and they are comfortable with instead of the stack that will provide the most performance, security, or has the most popularity is the point.

Where is the contradiction? The stack choice not mattering is the exact same thing as saying choose what your good with so you can ship fast instead of worrying about details that don't matter early on like scalability.

Thread Thread
 
brlafreniere profile image
Blaine Lafreniere • Edited

"I will say my first reaction to seeing "I'm a rails developer" was to tell you I'm sorry for your loss.
This sort of mindset is something I'm trying to avoid, because at the end of the day the only thing that matters is this."

So you're implying that Ben picked Rails because it's trendy? Like you assume that it's "bad" to "pick a framework you like" and you're implying that you look down upon Ben for being so foolish. Then you go on to say "if the software solves your problem then bingo you're golden" as if this isn't exactly what Ben did by choosing Rails?

Like overall, whatever you're saying just sound self contradictory and confusing. It's as if you're saying "ah ha you're such a fool for picking a framework that is simply trendy, as if you didn't pick Rails because it does solve your software problems."

Thread Thread
 
itmayziii profile image
Tommy May III • Edited

Dude you good? I explicitly said that I am trying to avoid behavior of looking down on others for the technology choices they make just because those choices are different than my preferences. You are trying to argue on a post that is 2 and half years old that you CLEARLY misunderstood.

So you're implying that Ben picked Rails because it's trendy?

Nope never came close to implying this.

Like you assume that it's "bad" to "pick a framework you like" and you're implying that you look down upon Ben for being so foolish.

I literally said the opposite by stating that this was behavior I am trying to avoid.

Then you go on to say "if the software solves your problem then bingo you're golden" as if this isn't exactly what Ben did by choosing Rails?

The whole point of my comment. Software choice is irrelevant as long as it solves your problem. Of course Ruby isn't able to solve every problem because of how high level it is, but that doesn't mean you shouldn't use it if it solves your problem.

It is honestly like your trying to pick a fight and are intentionally reading the words I'm saying with malice.

Thread Thread
 
brlafreniere profile image
Blaine Lafreniere

I see your point now, but you didn't state it very clearly at first.

Lol, I'm not trying to start a fight, I'm just trying to understand what you were saying, which was very confusing.

Collapse
 
uriel_hedz profile image
Uriel

This is an amazing post with a lot of words that many Rails developers have tried to say but couldn't. Congrats!

Collapse
 
ben profile image
Ben Halpern

Thanks!

Collapse
 
makiten profile image
Donald

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.

This is because investors in startups (and founders) are only rewarded for productivity when it matters. In one startup, I used Django to build an MVP, because having a product at that point was critical. At another, they measure "productivity" completely differently, i.e., do something so that it looks like we're doing something. That's a poor long-term strategy, but I imagine is more prevalent in the Valley since that startup is closer to SV than the Django MVP one.

That said, I still pretty much use Django, because I care about productivity and moving on.

Collapse
 
rhymes profile image
rhymes

100%. I wrote an API in Go but the sister web app is going to be in Django 2. There's no way I'm going to write a web app in Go, I'd be many times slower and fighting static typing 😝

I can love both eheh

Collapse
 
codehakase profile image
Francis Sunday

Slower? I don't really think so

Thread Thread
 
rhymes profile image
rhymes • Edited

Hi Francis,

I'm totally focusing on me here. Go is definitely faster than Django and Python.

What I meant is that I would be slower in building a prototype MVP of a web app which is essentially Django admin and a few dashboards I guess. That doesn't reflect badly on the language itself just on my limited experience with Go.

Also although I can justify the choice of building an API server for millions of clients in Go I don't feel comfortable enough nor I would find it advisable to build the front-end and administration tools with it.

Hope this clears up my sentence.

Thread Thread
 
codehakase profile image
Francis Sunday

Putting it this way, sure clear things up

Collapse
 
molly profile image
Molly Struve (she/her)

Great post Ben! Really liked it

Collapse
 
ben profile image
Ben Halpern

😄

Collapse
 
rhymes profile image
rhymes

Well said Ben, Rails is still a solid piece of technology.

I had to make modifications in a web app I haven't touched in a while and was super happy that thanks to Arel and Rails writing complex queries is a breeze.

Having wrote an app in Go I definitely agree, what you get in power you lose in productivity. It's also hard to find developers and that's another thing you should keep in mind when starting a business venture.

It's like we all forgot that the old saying "premature optimization is the root of all evil" applies also to technological choices.

Rails can be scaled and if you arrive at the limits of it it's, hopefully, because you have a very successful product 😎

These big frameworks are perfectly fine in 2018.

I guess this microservice thing went to our heads a little. Most apps should be a monolith first.

I bookmarked the news on Rails 5.2 ✌🏾

Collapse
 
yechielk profile image
Yechiel Kalmenson

Ruby Conferences will do that to you.

I was at RubyConf last year when I had just accepted a PHP job, and I was already awash with feelings of nostalgia and "why couldn't it have been a Rails job?"

All of my side projects are still in Rails (unless I specifically took them on to help me learn something else).

Collapse
 
cutiko profile image
Erick Navarro

This is pure personal insecurity, you are a developer on dev.to an awesome media for developers, stop feeling like that and contemplate your accomplishments, what you do should validate you not make you stutter.

Collapse
 
ben profile image
Ben Halpern

Dude, totally.

Collapse
 
clickclickonsal profile image
Sal Hernandez

I started a new job at a small startup in Baltimore about a little over a month ago & their API/admin app is built with Ruby on Rails. Prior to this job the only rails stuff I've done was when I first was learning how to code. I remember loving to program with Rails because of the convention over configuration & how it made it easy to build things quick.

At my first Job their backend was built with express.js & I just remember how messy it was at first. It was hard to understand & follow mainly because their wasn't a well designed pattern in place. And then the team & I spent a lot of time refactoring it to clean it up. And then it was better after but I feel like if we used something like rails we wouldn't have spent 3 months refactoring the entire backend. We could have spent that time creating new features, squashing bugs quicker, etc.

That's the one thing with node.js, it's the wild west out there. All the tutorials, example projects, etc are done differently, so I feel like everyone kind of just create their own pattern which just adds time to get ramped up a lot longer.

At the startup I work now, we use codeship for our CI & heroku for our deployments & it just integrates so well with Rails that it just removes a whole bunch of unnecessary overhead when you're just trying to get your ideas built out & pushed out into the world.

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

Collapse
 
bilalbudhani profile image
Bilal Budhani 👨‍💻

This post resonates with me on so many levels. I have been a Ruby on Rails developer for a very long time and I have always been keen to explore other technologies like NodeJS, React etc. I often start new projects which a different stack to follow the latest trends but almost everytime regret the decision of not going with ROR.

Ruby on Rails is a "productive stack" for me. It makes me feel like home.

I'm Bilal and I am a product Rails developer.

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
 
jamesmskelsey profile image
James Kelsey

Thank you for this. I am so productive in rails and I keep trying to learn new backends outside of it. I always just end up back with a rails app but every time I hear about it, it's something negative.

Its so easy to use and deploy apps. I am even able to use it for making small, helpful databases for my coworkers and I in my very nontechnical (as in not webdev) job.

I'll just go ahead use whatever I like... As long as I'm finishing what I started, right?

Have fun at the conf!

Collapse
 
kayis profile image
K

Somehow I didn't have much to do with Ruby in my dev career.

First I worked at a dev shop that did PHP for years.

Later I switched to JavaScript, when Node.js came out.

Just knew a few students at university who did internships with Rails and they came back pretty disenchanted, so I never considered it later.

Now I'm pretty happy that I went for JavaScript back in the days. Browsers, React-Native, Electron, Node.js, AWS Lambda, pretty much everything can be used with it.

Collapse
 
ben profile image
Ben Halpern

Yeah, I wouldn't really advise anyone who doesn't already use Rails to feel like they need to get into it. Especially when you're well-versed in other fields that are way more hot.

But I think a lot of current Rails developers feel like they are supposed to move off for JS stacks or otherwise. It's just not the case. Rails is in a lovely mature state.

Collapse
 
rhymes profile image
rhymes

I'm using node by way of yarn and webpack but I never built a node app so I'm just using it as a tool.

I don't know exactly why but I've never felt the attraction.

Does it make sense? There are some technologies that, unless you end learning because it's required of you, you don't pursue.

Am I missing something? Surely, but there's also a limit on how many pieces of tech we need to learn to write web apps.

Thread Thread
 
kayis profile image
K

Depends on what you want to do.

If you build front-ends, you probably need Node.js as a tool.

If you build back-ends, you may use Node.js as the server, but you could also use Rails or something else.

Thread Thread
 
rhymes profile image
rhymes

Agreed. I dipped my toes in the GraphQL ecosystem and the "universe" keeps telling me I should use Node for that :-)

Collapse
 
carlotscvdata profile image
carlotscvdata • Edited

How was the process of turning a Rails App into a PWA? I am currently working on a Rails App for a Customer and he seems concerned that the app would not be as friendly for Mobile devices. Any thoughts or advise? Thanks for your posts that are always very helpful for Junior Devs like me :)

Collapse
 
ben profile image
Ben Halpern

When we first got invested into the APIs related to service workers it seemed overwhelming but then I realized it's actually just a few simple things to start and you grow from there. The whole PWA ecosystem is still sort of overwhelming because it's not even clear what a PWA is.

But start by just building the most basic serviceworker.js possible, caching a few basic assets and go from there to build a basic manifest.json file and you're pretty much there already. PWA is basically just a website that is fast and has serviceworkers installed.

Collapse
 
ghost profile image
Ghost

I do believe that the project Ruby 3x3 will make Rails shine again.

Collapse
 
rhymes profile image
rhymes

I agree, the only issue is "time to market".