Are you looking for a Ruby on Rails development company to help with your project? Are you looking to build a Minimum Viable Product (MVP)? Or do you oversee an existing Ruby on Rails application that needs maintenance?
Do you have a spreadsheet with a few companies listed that you’re vetting? How do you know that the companies you’re speaking with are qualified to handle your Rails app?
I encourage you to ask them the following questions before making a decision. These few questions can tell you a lot about each development company’s experience handling Rails apps.
1. What’s the longest you’ve maintained the same Ruby on Rails application?
No, their own website does not count. It’s vital that you hire a company that has long-term experience maintaining production Rails applications.
Development companies that deal with long-term support understand the benefits of following best practices. I’ve had many conversations with companies that hired a freelancer that was able to cheaply deliver an MVP but cut a lot of corners in the process. This often results in technical debt that you’re going to end up having to pay to repair in the future.
Find a team that works from the assumption that they will be accountable for your project in a few years. If they’re good at what they do, they’ll be more inclined to adhere to best practices.
This also means you won’t be “stuck” with whatever development team you decide to hire initially. Rails applications that are built with the framework’s best practices in mind can be handed off to another agency or a full-time employee at your company in the future.
(As of September 2018, our oldest client project has been in production for ten years)
2. What automated testing framework(s) do they prefer?
Ruby on Rails encourages automated unit, functional, and integration testing. There are some great tools at our disposal.
Did they respond with anything other than one of the following?
- Unit Testing with Test::Unit
If so, it’s possible that they’re trying to bullshit you.
(At Planet Argon, we’re big fans of RSpec.) We’ve also used the other options when applicable or previously set up on Rails apps we’ve inherited from other developers.
3. What service do they use for Continuous Integration?
If the team is mature, they will have Continuous Integration (CI) in their workflow. This is a form of automated quality assurance on your source code.
In a mature development cycle, the following should happen:
For each significant change that a developer makes to the source code, the CI server will attempt to run an automated test suite. If the tests no longer pass successfully, the team is notified that a possible bug was introduced.
“Carlos broke the build!”
We’ve recently been using Solano and Bitbucket Pipelines for continuous integration on client projects.
We’ve had many projects come our way where the automated tests have been failing for months (in some cases, 2+ years) and the client doesn’t even know about the situation. Quite often, this was because nobody was responsible for keeping an eye on it.
We believe that when you hire a Ruby on Rails dev team to handle your application, keeping up with automated testing should be part of their responsibility. This is a major quality check for your Rails app.
4. What service do they use to monitor application performance?
Development firms responsible for Ruby on Rails applications should rely on performance monitoring tools for your app. You might ask them for more details, too.
For example, ask them what metrics, specifically, do they keep a close eye on?
There’s a lot more to keeping an application well-oiled than fast page speed. They should be able to speak to performance with some experience. What areas of your project do they believe might have issues to keep an eye on?
We’re longtime customers of New Relic for this purpose.
The most common performance issues that we see in projects that we inherit are:
- Slow database queries
- Search indexes
- A lack of caching
- Missing database indexes
- Slow AJAX requests
- Slow page rendering on key pages
Ask them how often they check on these. Is this a high priority for their dev team? Do they get alerted when performance metrics cross thresholds? What examples can they provide of application performance improvement?
5. Have they contributed back to the open-source community?
A great selling point for Ruby on Rails is that it’s been one of the most innovative open source projects.
Every Ruby on Rails application benefits from the hard work and energy of those who helped shape it. In order for Ruby on Rails to continue to be innovative, it relies on developers to push it forward. This includes not only the Rails framework itself but the wide realm of open source plug-ins and gems that help production Rails apps operate.
If the team that you hire does not contribute to the open source community, I would question their ethos. You can view some of our open source contributions.
6. What did they work with before Ruby on Rails? Why did they make the switch?
At Planet Argon, we were early adopters of Ruby on Rails. We were using it on client projects in early 2005. We didn’t switch to it because was the shiny new thing, we switched because it offered us a huge speed boost to our development workflow. Our team consists of developers that came from Java, Perl, PHP, ASP.NET, C#, Cold Fusion, and Python. There’s a large pool of experience on our team.
Everyone on our team made their own decision to pursue Ruby on Rails. We were lucky enough to find each other.
For me, it was the conventions that Ruby on Rails bundled into the framework that won me over. At the time, Ruby was such a breath of fresh air. Rarely do I miss my old PHP, Python, or Perl days.
While I could continue to share other questions, I wanted to keep this short and sweet for you. I truly believe these six simple questions can reveal a lot about a company’s ability to develop and maintain your Ruby on Rails application.
If you’re searching for a new Ruby on Rails team, we’d love to talk with you about what you’re looking for in a new development partner. Click below to tell us about your project and schedule a call.