How we control quality at Rubydevs.io
After 15 years in my career of remote software development, I managed to create a consistent process that delivers successful products.
In this article, I want to highlight how we at Rubydevs manage to write clean code, deploy bugless code, work at a consistent pace and have an excellent, smooth communication with clients.
We start with hiring rising talents and teaching them the best practices of Ruby on Rails. Every developer that are more than one year working in Rubydevs team becomes a tutor for our new hired talents.
Books we read
- The Pragmatic Programmer by Andrew Hunt and David Thomas
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- Refactoring Book by Kent Beck and Martin Fowler
- Algorithms 4th Edition by Robert Sedgewick, Kevin Wayne
- Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt
- Programming Ruby by Dave Thomas, with Chad Fowler and Andy Hunt
- Design Patterns: Elements of Reusable Object-Oriented Software Book by Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm
- Exceptional Ruby by Avdi Grimm
- Practical Object-Oriented Design in Ruby by Sandi Metz
- Agile Web Development with Rails 5 by Sam Ruby
- Ruby on Rails Tutorial by Michael Hartl
- Testing Rails by Josh Steiner
- Test Driven Development: By Example by Kent Beck
- Rails meets React.js by Marcin Grzywaczewski, Robert Pankowiecki
Online courses and tutorials we take
- Rails for zombies
- Agile Development Using Ruby on Rails
- Surviving APIs with Rails
- Advanced ActiveRecord Querying
- Full-Stack Redux Tutorial
- Learn AngularJS With Bootstrap
Guides we use
- A community-driven Ruby coding style guide
- A community-driven Ruby on Rails 4 style guide
- Data Structures and Algorithms Overview
- Top 10 Algorithms for coding interviews
- The Security Checklist
- RSpec cheatsheet
- A kickstarter guide to writing ES6
- All things Vim!
We pair program on complex tasks, bugs, and new features. Also, it is incredibly valuable because of transferring knowledge. It is not possible to happen that one person is out sick or taking a vacation and nobody knows what to do because there is always somebody who worked with that person. No one person becomes a bottleneck for changes. We believe in collective code ownership.
Our experts analyze every commit, and every pull request to catch code quality issues, manage code coverage, or even new bugs before we even accept the pull request.
We write tests. We write a lot of tests. We write feature tests, model tests, controllers tests, view tests, mailer tests, request tests. We track code coverage and setup continuous integration.
QA is an essential part of our development process. Our QA engineers are always on top of every task acceptance criteria. Acceptance tests guarantee that a customer’s requirements have been met and the system is acceptable.
Every team has a dedicated SCRUM master that is responsibility for the pace and predictability of the team. We do daily meetings as well as weekly retrospectives.
Product manager is the person who is responsible for the success of the project. While our developers are located in different parts of the world with different time zones, our product managers are located in California to make sure communication goes smoothly and during our clients daytime.
I believe that following these principles is the key to a successful product.