Ruby on Rails Rescue

"Ruby on Rails Rescue" is for small business owners who have invested a significant amount of time and money into a Ruby on Rails application.  Generally built by freelancers or small agencies, the application has grown over the years, but given a change in the developer marketplace, finding talented developers to maintain and enhance the application has become increasingly difficult.  

These business owners need to maintain that investment in their existing product - either in the short term, as they search for alternative provision, or longer-term, as they look to grow their business.  The project itself is built with an older version of Ruby and Rails, and they are aware of the growing security risk this presents.  

Finding home-grown Rails developers with the required skills is becoming harder as most experienced Ruby developers move into corporate roles.   And choosing off-shore talent, via freelancing sites, can be fruitful, but the recruitment process and managing the project can be fraught with difficulties.  

Instead, they are looking for an experienced, local, Ruby on Rails developer who has the skills to look after the codebase, upgrade it to the latest versions and keep it running safely and reliably.  

Who is a good fit to work with me?

  • You have an existing Ruby on Rails codebase that runs on Linux, with MySQL or PostgreSQL, but is ageing fast
  • You need short-term help to fix some urgent issues with the app
  • You have used a variety of Ruby on Rails freelancers in the past
  • You are struggling to find local Rails developers with availability to work with you
  • You find managing offshore developers difficult and fraught with risk
  • You would love to find a longer-term solution to looking after the code
Baz figured out a complex project of ours in no time; he couldn't be better if he was made of pizza and pooped diamonds!
John Leach, CTO Brightbox Systems Ltd

You know that the situation regarding legacy codebases is complex - most developers struggle to take on other people's code and often want to trigger a full rewrite.  And you understand why that might be a good idea - however, you need to overcome several hurdles in the short and medium term before you can think about that.  

So you're looking for someone who is not afraid of working with the legacy, who has the experience and know-how to take a pragmatic approach to the future.  

How does it work?

The work proceeds across a number of phases, each one dependent upon the one before.  
  1. Analysis
  2. Priorities
  3. Maintenance
  4. Enhancement

Analysis

  • You give us a walk-through of the application, highlighting the core functions and any potential areas for future development.  
  • We use Docker to "containerise" your application.  This gives us a standard, baseline, configuration and makes it easier for programmers to get started with the code.  The process of containerisation generally highlights things that could become future issues as well.
  • We examine the application dependencies (both Ruby gems and operating system components).  Which version is the current system using?  Which is the latest version?  How complex is the upgrade path?  What is the alternative if the component has been discontinued?
  • We audit the application for Personally Identifiable Information, as a first step to ensuring data protection compliance.  
  • We implement a "full-stack test" for logging in to the system.  By itself, this is generally meaningless, but the steps we take to implement this give us a good idea of how easy or difficult future modifications may be.  
By the end of this phase, you will have one of three outcomes: 
  • The project is not viable,  Either we cannot upgrade as too many components have been discontinued or irreplaceable, the current version is unsafe and unsupported or it is will be extremely costly to maintain and make changes to this code.
  • The project runs in Docker at its current version.  We have an upgrade path but the upgrade is not straightforward and will require some investment.  
  • The project runs in Docker at the latest version.  We have upgraded the application to the latest versions of Ruby, Rails and associated gems and, while the system still needs full testing by you, the basic functionality appears to work.  

Priorities

  • We take your list of urgent amendments and start working on them.
  • Ideally this will be on the latest version of Rails through our Docker container - if possible we will try to schedule in upgrade time if we are still on an earlier version.  
  • We build a seed database for testing and we anonymise the data in your live database, so we can perform performance tests using real data.  
  • We allocate up to 60 developer hours per week to work through your urgent fix list; however, bugs, by their very nature are unpredictable so formal estimates cannot be given
  • If possible, we write full stack regression tests to prove that the fixes have worked

Maintenance

  • We evaluate your deployment and hosting options
  • If necessary we move to a preferred host - Brightbox or Amazon Elastic Beanstalk - and use a container or equivalent to control the deployment process. 
  • We create a staging environment and perform a test deployment
  • You test the application on the staging environment and sign it off
  • We create the live environment, if required, and test the deployment process
  • We set up a nightly off-site backup of your data and files
  • We build a disaster recovery plan, detailing the steps needed to recreate the live environment from scratch
  • We perform a monthly upgrade check.  Are all components up to date?  If not, we upgrade and ask you to test the staging environment.  Once signed off, we upgrade the live environment as well

Enhancements

  • The exciting bit - we move your application forwards
  • Every feature request that you submit moves through the following stages:
  • Outcomes analysis
  • Roles and Feature definition
  • Development Plan and Estimate (including formal specifications)
  • Client approval
  • Development (including full-stack regression tests)
  • Code review
  • Deploy to staging
  • Client testing and approval
  • Deploy to live
  • We allocate up to 90 hours per calendar month of developer time; however usage is dependent upon the feature complexity and client responses to approvals and testing
Baz gets to the heart of the problem, solves it simply and makes sure it's fully tested.  I've worked with him many times before and I'm sure I will again
Dom Hodgson, Owner, Little Warden

Throughout each phase, the project will be managed through Basecamp and you can message me at any time (although I generally only respond during business hours); we also send you a regular progress updates (weekly in priorities or enhancement phases, monthly during maintenance).  

About me

My name is Rahoul Baruah although everyone calls me Baz.  I first started working with Rails in 2005, before Rails even reached v1.0.  Along the way, I've worked with one of the first specialist Rails hosting companies (Brightbox), built a startup that scaled Rails applications to millions of requests per second, managed teams from across the world and am extremely proud to have taught many junior developers how to write reliable and safe ruby code.  My clients tend to stick around for many years as we know and trust one another so well.  

Fees

If you're interested in working with me, the fees are as follows: 
  • Analysis: £1200 one-off
  • Priorities: £2400 per week
  • Maintenance: £240 per month
  • Enhancements: £3600 per month
All prices exclude UK VAT if applicable.  

To find out if this could be suitable for your project, book a time here: https://calendly.com/clientrobot/ruby-on-rails-rescue

It became apparent that Rahoul reflects on every project, even after completion, having at heart continuous improvement
Monika Czwerenko, AQR International