Why did you decide to learn Rails?

By Najaf Ali

We at Happy Bear Software love Ruby on Rails. We work with Rails every single day, so naturally we wanted to know what drew our team members to the framework initally and why they decided to invest their time in learning it. To find out, this week we asked them why did you decide to learn Rails?

Steve Brewer, Senior Developer

I was three months into my career as a front-end developer at FutureLearn. We had a hack day in my first week and came up with an idea for an app that connects people in the company based on skills and interests they wanted to share. I was desperate to build it but support from other developers was flailing as I seemed to be the only one who had time.

The only Rails developer who had time to pair with me was Liam, and he moved back to Scotland soon after. So I learned what I needed to know, little bits at a time to get the app built. The excitement of what the app would do was enough to get me over that steep learning curve.

People started using it and talking about the interests they had in common, and asking about new interests they’d never heard of. I’d overhear these conversations and that pushed me harder. I remember several people realising they were all into sewing, and all our Spanish speakers discovered each other. We got to know each other on a deeper level, and that’s what programming is all about for me. It’s not about the code, I enjoy creating something that’s useful.

Rails lets you build apps very quickly. You can get the basics done so fast and put it in front of people and have them start using it so you can tailor it to their needs, not what you think they’d want. At meet ups I’ve had developers from other languages in awe of how productive you can be with Rails, and getting the work done is the most important thing to me.

Kaitlyn Tierney, Senior Developer

I never "decided to learn Rails". I decided to try to change careers via a web dev boot camp, and Rails is a pretty large component of all of the ones that I considered. This seems logical to me, because there's an extremely limited quantity of concepts you can teach within a 3-month program. Rails is a good choice for boot camps for the same reason it's a good choice for many projects: It extracts out a lot of complexity related to configuration, in favour of opinionated simplicity.

I actually wasn't a big fan of Rails during my bootcamp. We started with learning a bit of Ruby, then building simple web apps with Sinatra, before moving on to Rails. I didn't understand most of what Rails was doing under the hood—the word "magic" was thrown around a lot—and not understanding how things work is something that's always made me deeply uncomfortable. In some ways, it makes sense that I'd end up working as a Rails developer because that's the only way I'll ever truly figure out what is actually happening when you start up a Rails application.

For me, learning Rails is just one tool in my journey of making a career in web development. It's served me well so far, but I don't intend to work solely on Rails applications for the duration of my career. Actually, I'm still kind of trying to figure out what sort of path I want my career to take, so... any suggestions?

Kriszta Matyi, Senior Developer

Similarly to Kaitlyn, I did not so much decide to learn Rails as I decided to switch careers into tech and become a developer. Also similarly to Kaitlyn, I did this by attending a bootcamp a few years ago. At that time, all of the bootcamps I considered taught Ruby and Rails as part of their curriculum so it is the language and framework I ended up learning first.

Although at the time it did not feel like it, I now consider Rails a good framework to learn as a beginner. Because it hides away so much of the configuration and is quite opinionated, it is relatively easy to get going with it and achieve results within a short amount of time. I think it's important for beginners to have that sense of accomplishment when starting out, to see their code running and in the browser as soon as possible (as opposed to spending days just on configuration). Rails has a large and for the most part welcoming community so it's easy to find help online or find people to learn from. Similarly, there are countless tutorials, guides, etc. online so it's always easy to expand your skills.

Although after my bootcamp I took a detour to JavaScript and Node.js, I now use Rails in my professional life and still find it enjoyable. Rails has a mature ecosystem and well established conventions so it's easy to figure out what to do when starting a new project or where to start understanding an existing project. Countless conferences, meetups, and online communities offer the chance of networking and professional development. And lastly, as far as I can tell there are still a lot of job opportunities out there for Ruby/Rails developers, which is an important consideration when learning a framework.

Hannah Dwan, Apprentice Developer

Well uh... to be blunt, I was offered a chance to apply for my apprenticeship at Happy Bear Software.

I used to code primarily in Python, having done most of my basics in Java, but eventually I was given a chance to apply for this apprenticeship! Of course, I wasn't a Ruby nor a Rails expert, but I really wanted this job, so I started to get to work on learning how Rails works.

Thankfully I had already worked with Django and Web2py, so there was definitely some common ground there, even if I was learning a completely new language to me. From there, the rest is history: I got this job, now I'm still constantly learning.

Other than actually working on client projects and pairing with other people at Happy Bear Software, I'm learning via the medium of Effective Testing with RSpec 3 and The Rails 5 Way, in case you want a little recommendation for yourself/the apprentice in your life.

Esther Olatunde, Senior Developer

Ruby was the first language that I truly enjoyed after struggling to learn Java using the Head First Java book, building web pages with a bunch of PHP scripts and attempting to build an airplane ops application with Laravel.

I had lots of haha, light bulb moments when I was learning Ruby. A lot of things became crystal clear and I could finally explain code to a 5 year old. Ruby was the first language that made me truly enjoy programming! Maybe because the language itself is pretty readable because it’s a high level language or because I had the best teacher Akshaya who helped me figure out how to think about code.

Sorry, I know the paragraphs above do not really answer the title question but I'll get there. In 2014, Ruby was the language chosen by the tech fellows at MEST Africa as the primary language to teach the students. See, it could have been Python, JavaScript, or PHP but they chose Ruby and I’m super grateful for that choice.

Naturally, the next step after learning Ruby is to learn the web framework Ruby on Rails. So, when we started learning Rails, I also loved it because Rails built on top of all the good things I love about Ruby and added its own layer of goodness. I remember the phrase “convention over configuration” was used a lot when I was learning Rails and I loved that because I enjoy working within a set of rules! I mean, I like breaking rules like the next human but when you’re building a product, there’s already so many unknowns that you’d appreciate having the fundamental toolset for building that product to be consistent or operate within a set of known rules.

While a lot of people struggled with the concept of convention over configuration, it was fun for me because it matches the way I think in a lot of ways.

I like structure, I like coming up with a well thought out operation manual for a particular goal I’m trying to achieve and working within that framework and I think that's what the Rails team has done for web development.

If you attempt to solve a problem without first coming up with a plan and deciding on a toolset beforehand, you will become pretty scattered as you will want to try so many things to figure out the best choice that it’s possible you will get lost along the way. You would have wasted time and you wouldn’t have achieved a thing. So the Rails team is saying: use this set of toolbox to solve this set of problems without having to start from scratch and decide what set of tools to use whenever you face this set of problems.

I love that Ruby on Rails is utilitarian in the sense that they’ve made all the decisions on the toolset for you beforehand and you just need to follow those conventions while trying to fix your problem. Choice overload can become confusing and trust me, Rails has thought of everything you need.

So, yeah, back to the question - I didn’t decide to learn Rails, it fell into my laps and I loved it because the founding concepts and doctrines of the framework match the way I think. In addition, because I thoroughly enjoyed programming in the Ruby language and the web framework Rails as a foundation, I am able to pick up any language I’m interested in and work with it. I went back to Java - crushed it, I also later learnt Python, JavaScript, Swift, etc. and I’m coming for y’all other languages - looking at you Go and Rust!

Recently, I got super curious about what’s going on behind the hood in Ruby and I’m exploring that using the Ruby Under a Microscope book and absolutely loving it.

Etienne Mustow, Apprentice Developer

I didn't so much decide to learn Rails as much as it was the first framework I was asked to learn when I first started learning in my coding bootcamp. Ruby was the first programming language I knew so it was only natural that this was the first web framework I'd learn too.

I liked learning about Rails because since it was built with Ruby, the syntax for writing was pretty easy as it's close to human language as oppose to machine language. Rails also enforces learning best practices pretty well. From the jump, you're introduced to RESTful resources when you create controllers and models. Since it's an MVC framework, you get to grips with how the Model, View and Controller interact. You also are exposed to testing as there's a test suite installed by default in Rails.

Rails does a lot of heavy lifting, such as handling database migrations, so you don't have to configure SQL. It's built with convention over configuration in mind so in following its way of doing things, it becomes easier to use over configuration based MVCs.

I also liked Rails because the Ruby/Rails community is big so it's always easy to find help with this tech. The job market for Rails also seemed attractive so it seemed like a good skillset to maintain.