July 20–24, 2015
Portland, OR

Refactoring systems with confidence

Jesse Toth (GitHub), Nathan Witmer (GitHub)
11:30am–12:10pm Thursday, 07/23/2015
Architecture Portland 251
Average rating: ****.
(4.64, 11 ratings)
Slides:   1-PDF 

Prerequisite Knowledge

Some programming background. Code will be presented in Ruby, but no Ruby knowledge is required.


At GitHub, we recently replaced a large subsystem of our application – the permissions code – with a faster and more flexible version. In our talk, we’ll share our approach to this large-scale rewrite of a critical piece of our Rails application, and how we accomplished this feat while both preserving the performance of our app and proving the new technology over the course of the project.

We’ll go over these general themes:

  • An explanation of the challenge, including a brief overview of the permissions models, both old and new
  • Our approach to testing, validating, and then changing our codebase to use a new system for authorization, using a Ruby library we created to help us with this task
  • How we used production traffic and data to verify the correctness of our changes and reveal data quality issues
  • How we used metrics and gradual rollouts to track performance and errors as we integrated the new permissions system
  • Examples of the user interface we built to control and visualize our experiments
  • Some stories about what went wrong (and right!) as we made these modifications.

After this session, we hope the attendees will gain a new perspective on ways to tackle a large-scale refactoring project with confidence.

While code examples will be in Ruby, no Ruby knowledge is required.

Photo of Jesse Toth

Jesse Toth


Jesse Toth is a back-end Ruby engineer at GitHub, where she spends a lot of time thinking about forking, permissions, and data quality. When she’s not working, you can find her traveling, hiking, or playing with her cats.

Photo of Nathan Witmer

Nathan Witmer


Nathan Witmer is a back-end developer at GitHub. He focuses on data quality, squashing bugs, and keeping the app servers and databases happy and fast. He’s been writing software professionally for more than a decade at companies large and small, and when he’s not programming, he’s probably wiring small electronics together or enjoying the Colorado sunshine.

Comments on this page are now closed.


Srivatsa Radhakrishna
07/23/2015 5:29am PDT

Hi Nathan/Jesse,

Great talk, can you please post the slides and share the link?


Charu Pasternak
07/23/2015 4:37am PDT

Where can I find the presentation??
Thank you!