Before we dive into specifically what makes a good Ruby on Rails developer, let us first consider what makes a good web developer. We will then go into specifics for the Ruby on Rails platform.
TL;DR
I’ve interviewed over 1000+ people at SoluteLabs, being in the web development industry. With my experience in working closely with the web developers I hired, I feel the following are the essential skills:
Technical Skills
- Strong OOPS fundamentals
- Sound Knowledge of Databases (NoSQL, GraphQL would be a Plus)
- Data Structure and Algorithms
- Logical Reasoning
- Analytical Skills
- Test-Driven Development
Non-Technical Skills
- Communication Skills
- Interpersonal Skills
- Lifelong Self-Learner
- Best Practices Follower
At SoluteLabs, we have been very selective about our hires. We not only look for technical skills, but we also gauge the person through a psychometric test to try and understand how the person will gel into our culture.
Let me go through them in detail, my reasoning behind why you should look for these traits and what weight should you give to them because we all know that no one’s perfect. Post this, we will delve deep into what makes a good Ruby on Rails Developer.
Technical Skills
Technical ability is the backbone of any developer; it gives them credibility and authority over everything else. But let’s get into specifics.
1. OOPs Concepts
Object-Oriented Programming concepts are the pillars on which most modern languages are built and hence, their frameworks. They are:
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
If the developer has taken a formal course in development, this should be instinctive. They would have probably started by learning C++, Java, or Python.
Irrespective of what language you’re using (apart from functional languages), these concepts are essential so that you make the right choice while building products for your client.
2. Database Knowledge
Understand what is a database and the fundamentals thoroughly as I believe that the Database is the defining pillar of your web application. Unless you get the Database Design done correctly, there’s little chance that anything else can salvage the product.
Your core team members must understand databases very thoroughly; else, it can lead to a huge technical debt.
With growing complexity in terms of data and the number of users, you must leverage NoSQL. For example, we have created an app that stores vehicle location data — you could manage this via a NoSQL Database.
3. Data Structures and Algorithms
Honestly, while most web developers would not need to implement different algorithms in their day to day activity — they need to know the concepts in theory and practice. It’s essential to understand things like (Time) Cyclometric complexity things like O(n) and O(n2) to improve the performance of your application.
I’ve seen code running on servers meant for mathematical research and still run slow! Imagine, as a client, if you get a $2000 invoice for a server while you bleed users because of slow response times.
Also, knowing and using apt data structures for the problem at hand improves your app performance as well.
4. Analytical and Logical Reasoning Skills
While this isn’t a strictly technical skill, having sound analytical skills is vital for any developer. It doesn’t matter if you’re a web or mobile developer or someone who creates software for NASA.
At SoluteLabs, this is the first thing that we test for through a series of online tests. It would be a safe bet to hire someone with strong analytical skills with no knowledge of Rails rather than get someone with experience with Rails and not be good at their comprehending and analytical skills. The rationale behind this is a notorious 90–90 rule:
If you have any experience with product development, you will know that it takes more time to think through, understand, and design a feature than to code it. If you’re not doing it, it’s an alarm to take notice!
5. Test-Driven Development (TDD)
TDD is a way of development in which test cases are written based on user stories that fail initially (obviously) — post to which you write code to pass those tests. Finally, refactor the code to get rid of any technical debt.
This practice is known as Red-Green-Refactor
Non-Technical skills
With the advent of Agile methodology — teams are increasingly becoming more self-managed. As an outsourcing partner, we require all of our devs to be in stand-up calls with their clients.
Thus non-technical skills have taken an upper seat. Let’s break them down.
1. Effective Written and Verbal Communication
While Shakespeare and JK Rowling are not needed to write code, it is crucial to convey effectively with your clients and co-workers. Verbal skills are essential not just for standups but also to express and understand what others in the team are expecting or viz. This is also very important in a remote-friendly organization like ours.
Written skills are essential to create better documentation (dev docs), understanding documentation, writing useful emails, blogs (like these) or even asking questions on Stack Overflow ;)
2. Life-long Self-learner
The only constant about this industry is change — and this changing does not happen just rapidly but exponentially. Unless you have a spark from within to learn more than what your current work demands, you will never grow. Not only grow, being stagnant will make you outdated and eventually out of business!
3. Developer Consciousness
Get someone who writes code only with the best practices. Best practices are subjective and can vary from individuals or teams, but it is essential to stick with one standard and practice along.
Most developers know if they are making a wrong decision when applying hotfixes — get people on the team who would cringe at the thought of such lousy code.
4. Interpersonal Skills
Working as a developer would mostly mean working in teams, either with more RoR developers or across other groups, and it’s important to gel with the organization (whether remote or in-person).
No one can whistle a symphony. It takes a whole orchestra to play it.
— H.E. Luccock
These are the skills that should make or break your decision to hire developers in general. Now, I wish to focus on RoR (Ruby on Rails) specific skills that are good to have below.
I am again stressing that people with the above traits with no Rails experience are better to onboard as opposed to people with Rails experience and lacking the above must-have skills.
Ruby Skills
Ruby first appeared in 1995, way back before Rails came into the picture. It’s the language on which the framework Rails was written.
Most RoR developers ask, “Do I need to know Ruby to learn Rails?” My answer to this question is, YES.
Before you master the framework, make sure you have solid ruby fundamentals. Ruby is not a difficult language to learn, but it’s essential to get your bases cleared.
While there are numerous resources to learn Ruby, I recommend trying out Ruby Koans after you cover the basics.
Learn about the latest Ruby on Rails 6 features to better understand what’s new in RoR.
Rails — the Holy Grail
A developer should understand the Rails framework well, grasp its ins and outs.
If you’re getting a dev on board, make sure concepts like the below are clear:
- MVC (Model-View-Controller)
- DRY (Don’t repeat yourself)
- Active Record (For interfacing with your Databases)
and other vital features such as:
- Action Cable
- Routing and Environment Variables
- Authentication
- API creation and Management
- GraphQL
- DevOps
The RoR developers looking to improve their Ruby on Rails skills need to work hard on the above-mentioned concepts.
Front End Development (Good to Have)
Rails have shown increasing support for Javascript starting version 5.1 and continue to do so. If you have a small team, we recommend that you get a full stack developer (someone who knows frontend and backend both).
This person will be responsible for not just creating the databases and the logic to support your app but also generate the UI, which will make the magic happen.
In all honesty, it is challenging to get devs good at all the three things, being:
- Backend Development (including Databases, DevOps)
- JS Development (by using React with RoR, Vue or Angular)
- UI/CSS Developer (someone who creates pixel-perfect UIs)
DevOps + AWS/Google Cloud (Good to Have)
Applications today are becoming increasingly complex because of the number of services that are used to create an app. On average, we employ more than 14 services of AWS to deploy a typical Rails application.
A developer must understand as to which service to use in a particular situation. To answer this, pure Ruby and Rails knowledge will not suffice. You will need different tools for:
- Hosting static files
- Tools for distributing it over a CDN
- SQL and NoSQL Databases
- Key-value stores
- Sending emails
- Sending push notifications
- Performing CD/CI and much more.
I would recommend an AWS/Google Cloud certification — it can go a long way for all web developers.
So, these are the essential skills every ROR developer must have, when you’re looking to hiring RoR developers for your web development.