At Stripe, we manage a codebase of tens of millions of lines of Ruby. Like any large codebase, people have no shortage of complaints about it, and it's our job to fix those complaints. Fixing them means refactoring the problems away, and over the years we've learned what it takes for these sweeping refactors to be successful: it comes down to leverage and ratcheting.
We'll use two examples to talk about what it means to have leverage over a codebase and how to ratchet increment progress: how we built a Ruby type checker to make developers happier, and how we're building a Ruby package system to introduce modularity. The ideas will be high-level, and apply to basically any team that wants to run a migration in a large, stubborn codebase.
Click here to view the live version of the slides.
Speaker
Jake Zimmerman
Tech Lead of Sorbet @Stripe
Jake has been at Stripe for the last 7 years, 6 of which he's spent working on Sorbet, a type checker for Ruby. His focus is on using types to make Ruby developers more productive: improving the type system, building type-driven tooling, and making sure that type checking is fast.
Jake first became interested in types while attending CMU, meaning he's still a recovering Standard ML enthusiast. Outside of work, he loves anything that takes him outdoors.
Speaker
Getty Ritter
Ruby Infrastructure Engineer @Stripe
Getty has been an infrastructure engineer Stripe for over 5 years, working on the Ruby platform and related tooling to support engineers working at Stripe. He is passionate about finding ways to maintain a high quality and incentivize clean code without sacrificing developer velocity. Prior to his work at Stripe, Getty worked for several years doing research and implementation work at Galois with a focus on programming language theory and compiler implementation.