Refactoring Stubborn, Legacy Codebases

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.

Read more

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.

Read more

Date

Tuesday Nov 19 / 11:45AM PST ( 50 minutes )

Location

Ballroom A

Topics

Types and Programming Languages Developer Productivity Ruby

Share

From the same track

Session Programming languages

Moving Your Bugs Forward in Time: Language Trends That Help You Catch Your Bugs at Build Time Instead of Run Time

Tuesday Nov 19 / 10:35AM PST

As we grow as engineers, one of the key realizations that we inevitably come to is that the maintainability of our codebases is of paramount importance to their long-term success.

Speaker image - Chris Price

Chris Price

Software Engineer @Momento, Previously Launched New Video Streaming Services @AWS, 10+ Years in Engineering Leadership at Software Startups

Session Platform Engineering

Platform Engineering: Evolution, Trends, and Future Impact on Software Delivery

Tuesday Nov 19 / 01:35PM PST

Platform Engineering is frequently hailed as the latest paradigm shift enabling developers to ship code faster - but is it simply a return to the pre-DevOps era of siloed teams focusing on narrow parts of the software lifecycle?

Speaker image - Paula Kennedy

Paula Kennedy

Cofounder & COO @Syntasso, Previously Senior Director Platform Services @VMware and @Pivotal, 20+ Years in the IT Industry

Session Staff Plus Engineering

Persona-lized Problem Solving with Clojure

Tuesday Nov 19 / 02:45PM PST

In 2007, Rich Hickey introduced Clojure with a clear mission: to offer the simplicity of functional programming with the practicality of languages like Java and C#.

Speaker image - Jordan  Miller

Jordan Miller

Sociotechnical Staff Engineer @Nubank, Co-Founder of Clojure Camp, Host/Producer of Lost in Lambduhhhs Podcast, Co-Author Clojure Brain Teasers, Co-Orga Heart of Clojure EU

Session

Taming the Configuration Beast with Pkl!

Tuesday Nov 19 / 05:05PM PST

Infrastructure-as-code has revolutionized the way that infrastructure and applications get managed, increasing velocity and scalability. However, this same philosophy has introduced its own problems.

Speaker image - Dan Chao

Dan Chao

Software Engineer @Apple

Session

Unconference: Programming Languages

Tuesday Nov 19 / 03:55PM PST