Speaker
Abstract
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
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!
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 :)
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!
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!
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.
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.
Topics
QCon San Francisco 2024 is a three day conference for senior software engineers, architects and team leads. An international program committee of working engineers selects every session. Patterns and practices, not products and pitches.
Part of the track
Programming Languages and Paradigms for the Next Decade Hosted by Julie Qiu Uber Tech Lead, Google Cloud SDK @GoogleFrom the same track
Tuesday 19 November
10:35 Pacific DEKJ Session Programming languages Moving Your Bugs Forward in Time: Language Trends That Help You Catch Your Bugs at Build Time Instead of Run Time Chris Price Software Engineer @Momento, Previously Launched New Video Streaming Services @AWS, 10+ Years in Engineering Leadership at Software Startups 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. 11:45 Ballroom A Session Types and Programming Languages Refactoring Stubborn, Legacy Codebases Jake Zimmerman, Getty Ritter 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. 13:35 Ballroom BC Session Platform Engineering Platform Engineering: Evolution, Trends, and Future Impact on Software Delivery Paula Kennedy Cofounder & COO @Syntasso, Previously Senior Director Platform Services @VMware and @Pivotal, 20+ Years in the IT Industry 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? 14:45 Pacific DEKJ Session Staff Plus Engineering Clojure 2024 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 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#. 15:55 Seacliff D Unconference Unconference: Programming Languages 17:05 Pacific DEKJ Session Taming the Configuration Beast with Pkl! Dan Chao Software Engineer @Apple 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.