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

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. How do we structure our code so that our teammates, present and future, will be able to ramp up and contribute to it quickly and safely? One of the best ways to do this is to catch bugs as early as possible. Any bug that we can catch at build time is exponentially less expensive than a bug we don’t catch until run time (potentially causing an outage or other urgent situation).

Thankfully, trends in modern programming languages are giving us excellent options for moving our bugs forward to build time. In this talk, we’ll examine some of those trends: error handling with return values (go, rust); immutable data structures (clojure, kotlin); algebraic data types and exhaustive pattern matching (scala, swift, typescript, et al); and several others! Join us, and prevent your next bug from ever being deployed to production.

Interview:

What's the motivation for your talk at QCon San Francisco 2024?

In my early days as a software engineer, I thought that my job was to crank out code and features as quickly as possible. But after working on many different codebases at several different companies over the years, I’ve witnessed too many of those codebases becoming unmaintainable, and watched velocity slow to a crawl. I became really eager to learn how to prevent this.

I’ve come to believe that as developers, to ensure the long-term success of our codebases, there is no single thing that we can do that is as impactful as ensuring that we structure our code to allow us to catch bugs at build time rather than at run time. So now I’m extremely passionate about sharing what I’ve learned and highlighting the powerful new trends and language features that help us achieve that goal!

What's the focus of your work?

After helping build the initial foundations for Momento’s backend services and infrastructure, I transitioned over to lead our developer ecosystem. That means that my current day job is providing clean, simple libraries that allow users to interact with Momento’s serverless cache and pub-sub products, with as little friction as humanly possible, in whatever environment they are already building things in. Nowadays, instead of building out our infrastructure, I’m focused on helping users remove things from theirs :)

Who is your talk for?

This talk is intended for software engineers, at any level, who are curious about trends in modern programming languages. If you’re interested in learning about some patterns that are starting to become popular across a variety of different languages, and how you can take advantage of them to reduce the risk of bugs surfacing in your code at runtime, then this talk will have something for you!

Is there anything specific that you'd like people to walk away with after watching your session?

We’ll learn to recognize some common programming patterns that are likely to cause bugs that can only be discovered at run time. We will discuss alternate programming strategies that can be used to move those classes of bugs forward from run time to build time. My hope is that you will walk away from this talk armed with some actionable patterns that you can apply to your own codebase, the next time you spot some code that could cause an avoidable bug!

What do you think is the next big disruption in software?

As evidenced by the fact that this year's QCon SF has an entire track about Rust, I must say that the growth in popularity in Rust feels like an important breakthrough. The Rust compiler is one of the most impressive pieces of software I've ever used, and the language idioms really help steer developers towards writing cleaner, more maintainable, bug-free code. Add in the fact that the performance is so impressive and that it's the first mainstream language I've seen that manages to avoid using a garbage collector while still managing memory on your behalf, and it feels like a pretty big paradigm shift compared to other language trends of the last 10 years.

What was one interesting thing that you learned from a previous QCon?

At QCon SF 2023, one of the talks that made a big impression on me was Shweta Saraf's talk about Multiplying Engineering Productivity. She talked about the concept of engineering leaders being "Accidental Diminishers", which can happen when leaders don't give their teammates enough ownership and space to grow. It's had a big impact on how I relate to my teammates and try to empower them. I especially loved this observation because I came to QCon expecting to take away technical learnings (which I did, in spades!), and not necessarily to walk away having learned how to be a better teammate.


Speaker

Chris Price

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

Chris is a Software Engineer at Momento, where he helped design and build Momento’s cellular architecture and the corresponding CI/CD automation.

His interest in infrastructure automation began at Puppet Labs, during the genesis of the DevOps movement. After 5 years in a tech lead role at Puppet, Chris moved on to AWS, where he helped build the foundation for the brand new AWS MediaTailor service, a core component of Amazon’s NFL Thursday Night Football broadcasts and one of the first services inside of AWS to launch with a cellular architecture on Day 1.

Now at Momento, Chris is passionately working to improve the productivity and happiness of all engineers who have ever experienced the “joys” of building and operating a cache cluster, by contributing to Momento’s serverless caching products. When he escapes from the keyboard, you will most likely find him in the garden or on a bike ride in his beautiful home town of Portland, OR.

Read more
Find Chris Price at:

Date

Tuesday Nov 19 / 10:35AM PST ( 50 minutes )

Location

Pacific DEKJ

Topics

Programming languages Maintainability Engineering Efficiency Modernization Productivity

Share

From the same track

Session Types and Programming Languages

Refactoring Stubborn, Legacy Codebases

Tuesday Nov 19 / 11:45AM PST

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.

Speaker image - Jake Zimmerman

Jake Zimmerman

Tech Lead of Sorbet @Stripe

Speaker image - Getty Ritter

Getty Ritter

Ruby Infrastructure Engineer @Stripe

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

Clojure 2024

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