This guide represents my current best understanding of how to get productive with an existing Ruby on Rails app. I currently work in a consulting / contracting role on various web development projects, and this general process would work with other frameworks similarly. I thought about the process that I go through (or would like to go through) when starting to work on an existing Ruby on Rails project, and wrote down those thoughts. Afterward, it seemed valuable enough to clean up a little and publish.
In this post I won’t cover getting a legacy project’s tests up to snuff. I also will not cover taking an existing Rails project and upgrading it to the latest version of Rails. There are existing resources that already cover this.
So what will I cover?
Let’s pretend you are starting to work on a Rails project today and this isn’t your first Rails rodeo. However, the project that you are starting on has been in development or on production for months or years. How do you quickly get up to speed to make a contribution, and how do you not break everything in the process?
This project could have been unmaintained for a little while. You could be joining up with an existing team. It could have been outsourced and in disrepair. It could have been insourced and in disrepair. :) It could be well-tested or have no test coverage. But someone, somewhere, cares about this project, or you wouldn’t be working on it. Where do you get started?
Overview
The first thing to do is to understand what the project does at a high level. This might seem obvious, but still important. Questions to answer include:
- What value does this project have to the business that owns it?
- What is the primary functionality of this project?
- Where does this fit in with the company’s other projects / products?
- Who uses this app on a daily basis?
- How many people use this app on a daily basis?
- What is the history of the project development?
- If the old developers are still available, can you contact them?
Once you have this information, you have a better understanding of the context of the project and those things most important to keep running.
Get Access
You can’t get very far without having access to anything important. You’ll eventually need access to:
- source control (Github)
- project management (Trello, Jira)
- team communication tools (Slack, Teams, Zoom)
- supplementary docs (Google Docs, Notion, wiki, Miro)
- deployment credentials (Heroku)
- error notifications (Airbrake, Exceptional, Honeybadger)
- storage credentials (AWS)
- end user message apps (Helpscout)
- performance monitoring (New Relic)
- continuous integration (GitHub Actions, Jenkins)
I would generally send out one email to whoever should have most of these and see if you can get credentials or get your account added. I would then make a document that has all of these services in one list, and then whenever you onboard a new developer you can add them more quickly the next time.
Reading the Fine Manual
After understanding the project, the next thing to do is to look at the clues previous developers have given you. Sometimes you get the dreaded Welcome to Rails documentation, but often your predecessors or teammates have left a breadcrumb trail of how to get up and running on the app.
