RubyConf 2020
Keynote: If you can move it, it isn't broken

Keynote: If you can move it, it isn't broken

by Kerri Miller

In her keynote address titled If You Can Move It, It Isn't Broken at RubyConf 2020, Kerri Miller, a Senior Backend Engineer at GitLab, explores the themes of ambition, resilience, and storytelling within the software development community.

Key Points Discussed:

- Community Engagement: Kerri emphasizes the importance of community in software development, reflecting on the supportive environment of the Ruby community, which welcomes diverse experiences.
- The Journey of Learning: Kerri draws parallels between personal ambition in software engineering and real-world challenges faced, such as her experience in motorcycle riding. She highlights how achieving mastery comes with its share of resilience and ambiguity.
- Storytelling as a Tool: She discusses how sharing stories fosters collaboration and learning, encouraging attendees to reflect on their journeys and draw lessons from their experiences. The narrative is crucial in shaping community connections and reinforcing shared experiences.
- Ambitious Projects: Kerri defines ambitious systems in software engineering as complex and often difficult to complete, leading to feelings of uncertainty regarding project completion.
- Embracing Failure: She reminds developers that nobody is immune to making mistakes and that acknowledging failures can lead to growth and new insights, contrasting the pressure for perfection in technical work.

Significant Examples:

- Personal Anecdote: Kerri shares a story of a motorcycle riding mishap where she humorously remarked "if you can move it, it isn't broken" while indicating deeper themes of resilience and learning from failures.
- Traffic Signals Analogy: This example illustrates the challenges faced with integrating new technology (LEDs) into established systems and acknowledges the biases against change that exist within the tech industry.

Conclusion & Takeaways:

- The journey to mastery in software development involves resilience, personal storytelling, and an understanding of complexities that come with ambitious projects.

- Attendees are urged to capture their stories and share them within the community, as these narratives can inspire and connect others in the field.

Kerri encourages all attendees to reflect on their unique experiences and the lessons learned from their personal journeys, reinforcing that community is built on shared stories and learning from both successes and failures.

00:00:06.399 Oh my gosh, we are here! Did you realize it? You probably didn't even notice. You were probably up all night long waiting to go to sleep so you could enjoy day two of RubyConf 2020. Oh my gosh, I can hear all of your cheering in my head right now. This is very exciting; I mean, I thought 2020 could move fast, but this is incredible. We're coming up on halfway through, and this is really, really cool!
00:00:31.359 To all of you, wow! We have ample amounts of activity already. I can hear your cheers and roars, which probably means you like my energy! Well, hello everybody, my name is Adam Cuppy again, and I am your virtual MC for RubyConf. I wanted to go over a handful of things before we get started.
00:01:10.159 First and foremost, I know that most of you, if not all, are super familiar with the fact that we are actively involved in Slack. There is a ton of activity going on in Slack. Some of you may also be participating in the multitude of various Slack channels available, which include not only talks and workshops but also an open chat where everyone can participate. You might not realize that there are also some really cool and interesting, very specific Slack channels that people have created based on various topics.
00:01:41.439 Let me just point out a few. Number one, there’s an Animal Crossing channel. I don't know a lot about it, but there are a lot of people in it, which is really cool. We've also got a first-time attendee Slack channel. If you're a first-time attendee of RubyConf or if you've been part of the Ruby community for a long time but have never attended RubyConf before, I highly encourage you to check that Slack out. There are people asking interesting questions and seeking advice, so you might be really helpful there. Additionally, there's a junior devs Slack channel, a rainbow hair Slack channel, and a social media channel where you can post your handles.
00:02:39.920 I want to point out some specific topics like the neurodiverse channel. If you identify as BIPOC or a woman of color, you're welcome to specific private channels. If you're interested in joining those, please look at the announcements and reach out to specific people so those communities can remain available to those who need them. Also, a reminder that there is a daily schedule Slack channel. We want to keep conversation and chatter out of that, but it's going to have a rundown of what today looks like. Everything's in Central Time, so currently, it’s 11 a.m. Central, which is how the schedule is broken up. Make sure you take a look at that to find links to the various talks and workshops.
00:03:40.000 Another channel that I forgot to mention is the second career folks channel. This is for people transitioning from a different career path into software development, particularly in the Ruby community. I always find it super fascinating to hear where people come from. I, myself, came from an acting background; I have a degree in stage theater, which is a very different field from where I am today. Having conversations about these transitions is really cool.
00:04:24.639 A couple of quick reminders: the sponsor job fair is going to happen in Crowdcast, and we will also do a storytelling component where folks will share their stories. If you have a story from your journey through software development that you think would resonate with the community, I encourage you to consider telling that story. It helps cultivate a vibrant community and normalizes our experiences, reminding us that we're all very similar in some aspects and very different in others. Allison McMillan and Barrett Clark, our organizers, would love for you to reach out if you have a story in mind. We've already got a few people lined up to share their journeys.
00:06:06.000 Also, I’m going to keep posting videos and activities for you to get up and out of your seat during the conference. It's super important to keep the blood flowing! We need to stay engaged. I know when we're at a conference in person, we take advantage of that opportunity to get up and move around; we need to do that as much as possible here. I want to encourage you to shake a finger at yourself, not just at me. Get active, move around, and stay engaged.
00:07:00.000 So, all the talks are being recorded. If you’re watching a recorded talk or you miss a live event, those are immediately available afterward. Keep that in mind. While there is so much happening in Slack and other channels, we are still following the hashtag on Twitter, Instagram, and Facebook. Please use #RubyConf2020. We love to see pictures of what you’re doing! If you have a chance to snap a photo of where you’re at right now, that would be great. Just kick back, relax, and enjoy!
00:08:24.160 Okay, I think we're going to leave it at that for today. Without further ado, I want to bring on our organizers to give us any other announcements that we might have missed. So, let’s welcome Megan!
00:10:01.519 Hello! It's great to be here with everyone at another awesome RubyConf. I’m Megan Tu, one of the directors at Ruby Central organizing RubyConf, along with the greatest team in the world. We're so excited to have you all back for day two. Thank you for the amazing energy you all bring! It's that spirit that makes RubyConf what it is.
00:10:14.720 I’m here to introduce our keynote speaker for this morning, Kerri Miller. Kerri is a software developer and team lead based in the Pacific Northwest with experience at various enterprise companies, international ad agencies, boutique consultancies, and start-ups. She currently serves as a Senior Backend Engineer at GitLab and also works for Ruby Together on RubyGems.org and Bundler. While that is all factually true, it doesn't quite describe Kerri as a person.
00:10:45.000 Kerri has an insatiable curiosity and has worked as a lighting designer, marionette puppeteer, sous chef, and farmhand. She attended college to study performance production and was once a semi-professional poker player. Kerri has strong opinions about keycaps, knows some sweet yoyo tricks, and enjoys melting hot glass with a blowtorch to create beads, cane, and murrini. When asked to describe herself in two words, she thought for a moment and replied, 'lackwit gadabout.' So, without further ado, please welcome our friend Kerri Miller!
00:11:34.360 Oh hey everybody! It’s super awesome to be here, and I’m really glad, even under the circumstances, to see so many new people, first-timers, and scholars joining us. I always say the Ruby community is a group of friends, many of whom I just haven't met yet, and that has been so true today.
00:11:59.239 So, a couple of housekeeping notes about my talk today: we might try to run a poll if we have time for a little bonus content at the end, but let’s just dive in. Let me try to share my screen, which is always an adventure with new software. Yeah, there we go, and now we can start the keynote. The title of my talk is 'If You Can Move It, It Isn’t Broken.' As someone who works as a backend engineer at GitLab and lives in Seattle, I often hear the story about our city that it rains all the time—but that's only sort of true.
00:12:45.760 It rains for about five months at a time; we just have one really long rainy day. But in the summertime, it is absolutely beautiful, and it's 75 degrees and sunny for weeks at a time! If it gets too hot—like at 80 degrees—people start complaining because nobody has air conditioning. You know what? I’m that person who doesn't come in the summertime; I'm usually traveling around the world with these two fellas: Talos and Chunk. I should probably apologize because I don't have kids or pets to introduce to you, but assume they’re adorable things. I’ve been doing this for about four years now, including multiple trips across the United States.
00:13:47.759 In that time, I’ve gone up to Alaska and back twice. If I’m being honest, the last four years have been about chasing zen and pushing how far and how long I ride. I truly love it. As part of these adventures, I’m also a member of the Iron Butt Association, an international group dedicated to safe long-distance and endurance motorcycle riding. To become a member, you just have to ride a thousand miles in 24 hours.
00:14:43.760 They have progressively more ambitious rides, like riding 1,500 miles in a day or crossing the continental United States in less than 50 hours. For fun, there's even a ride called the Stomachache 1000, which challenges you to ride a thousand miles while experiencing four different ice cream sundae stops along the way. You might think it sounds nuts, but when I was planning my ride over the summer, I realized there might be some parallels to talk about, considering how software engineering is also a hard task, requiring a lot of resilience and ambition.
00:15:32.640 It's essential to recognize we often forget that our journey from beginner to mastery has high stakes. For someone just starting out, riding a thousand miles in 24 hours might seem overwhelming, but for me, that's just another Saturday. We tend to lose sight of the difficulty involved in our work once we've fully acquainted ourselves with our programming space. I want to spend this time today discussing these themes of ambition, failure, and storytelling.
00:16:07.440 Before I move on, I also want to remind you that there is a Slack channel for this talk. I would love to hear your thoughts on what inspires you, either positively or negatively, so please drop your questions there, and we can thread about it. I want to start with a story that relates directly to the title of this talk.
00:17:38.080 Exactly one year ago yesterday, I found myself in the mountains north of Los Angeles attending a multi-day off-road training camp for motorcycle riding. I hit a patch of loose silty sand, and my bike slid out from under me. There was, let’s say, an unexpected separation of rider and machine. I tried signaling to my group that I was okay, but my thumbs-up went unseen because I was lying downhill with my feet sticking out of a bush—it was quite a mess. What we refer to as a yard sale, where all your gear goes flying off the bike!
00:18:21.920 I vividly remember my instructor leaning over me and asking if I was okay, to which I replied, "Yeah, I can move it, so I guess it’s not broken." Of course, the joke was on me. When I finally reached urgent care, I learned that I had dislocated my shoulder, which I expected, but I was shocked to find out I had also managed to shift my elbow. After my mishap, I got back to the base camp with a steroid shot and some excellent painkillers, and we sat around the campfire, sharing our tales of near-misses and wipeouts.
00:19:14.560 My instructor encouraged me, noting that at least I gained a story from this experience. That next day, despite my injury, I still helped other students finish their exercises and helped them pack up for their backcountry expedition to Death Valley while I caught a flight back to Seattle. I ended up getting my graduation certificate from that course, not just because I didn’t pack it up and go home, but because I demonstrated my knowledge and supported my peers.
00:20:21.760 The story I want to share isn’t about how I bit off more than I could chew or how bad a rider I might be, but rather it’s about resilience. It’s about redefining what success looks like in the face of adversity and learning to take ambitious chances. Most of us who are working in software today can relate to this idea of being part of an ambitious story. We must talk about how ambition, resilience, and storytelling come together.
00:21:02.240 We don’t just build complex systems, but most of us build ambitious systems. Fernando Crobato won a Turing Award in the 1990s and defined ambitious systems as sprawling, having multiple tasks involved with different systems and processes. They're complicated and elaborate, far too much for a single team or engineer to conceptualize. When they work, they often break new ground and become indispensable, pushing the limits of our knowledge.
00:22:36.640 As a result, there’s always uncertainty regarding when a project is completed. With ambitious projects, we often underestimate how long they will take because we’re not only pushing the envelope of what we know how to do, but we're also failing to anticipate what ‘done’ truly looks like. Given that we work in agile or just-in-time organizations, we have a penchant for delivering minimum viable product (MVPs) without fully accounting for the complexities involved.
00:23:44.160 IBM has a system for analyzing complex systems called I've become quite the 'expert' on this and find it fascinating. The point here is that with complex systems, we should expect outcomes to emerge rather than assume complete control over all variables. As this notorious droughts, some of us can say that we expect 'vomiting cats.' Dwarf Fortress is an infamous roguelike game featuring incredibly complex simulations. In the margins of a tavern in gameplay, there was a problem with a flood of cat vomit due to the post-release integration of new code.
00:25:52.560 The issue originated from the simplest rules in programming combined with players' actions leading to unexpected effects. First, design bugs in complex systems often arise from evolution, with assumptions being forgotten as new features are added. Even skilled programmers make mistakes, which leads to ambiguity in our ambitious work. So how do we account for this? We must understand the human element because we are the most complex aspect of any system.
00:26:43.120 Let’s talk about traffic signals for a moment. For decades, billions of traffic signals were powered by incandescent bulbs, and when LEDs came along, there was pushback against this technological upgrade. The advantages of LEDs are clear: they consume less power, last longer, and require less maintenance. Yet, the costly transition and differing safety concerns led to hesitance in communities.
00:27:37.520 Moreover, LED traffic lights have unique vulnerabilities we must address in their application. Resistance to technological change tends to rise due to deep-seated biases that prompt objections. In the Ruby community, we may be prone to dismiss these objections by repeating ‘you ain’t gonna need it,’ or YAGNI for those newer to the terminology. However, it’s essential to approach concerns openly and to explore how biases shape our views.
00:28:02.000 Software often reflects an ongoing struggle between our attempts to proactively prevent issues and the inherent pragmatism of fixing those problems as they arise. The scientific method offers us the capacity to ponder our mistakes and clear misconceptions—to assure ourselves that we’re not misinterpreting what we think we know. Asking questions is vital!
00:29:12.640 As I delved deeper, I realized our instinct for certainty can blind us to other possible solutions. The more we delve into techniques and problem-solving, we must avoid getting too entrenched in our existing mindsets. Embracing change can often seem daunting, especially if admitting we were wrong risks our professional reputation.
00:29:57.440 But we can also recognize the benefits of looking beyond our individual frames of reference. Maps, for example, serve as a representation or guide to help us understand spatial relationships. Philosophers have posited that the most accurate map can only exist as a one-to-one scale representation; the result is that we must accept the inherent shortcuts and abstractions that come with them.
00:31:28.960 This isn't simply to downplay the need for accuracy—rather, it's a reminder of the inevitable imperfections of code. In our world as engineers, we know code is an extension of our fallible humanity. We continuously work with imperfect models that strive to prepare for scenarios we've yet to encounter. For various systems, developing a resilient architecture requires ongoing improvements that allow us to respond to failure and adapt as our environments change.
00:32:44.240 A bicycle gets many chances to tell its story, riding far delivers benefits while facilitating that need for collective learning in our teams regardless of how we oscillate outwardly as we navigate our projects. We must also be willing to admit when we reach a point of inability, allowing us to recover and repair our inadequacies.
00:34:01.760 In diving into ideas, each of us end up shaping narratives about our work. Trying to push perceptions forward can alter our perceptions entirely. Just like how Honda shifted the narrative surrounding motorcycles by encouraging inclusion over exclusivity, we must engage in storytelling. Similarly, projects like Ruby had undercurrents of community in mind from the very beginning, especially our working interactions.
00:35:09.480 We remember narratives and stories much more than mere facts. Our human condition relies heavily on how we frame our endeavors, as people connect with each other through similar experiences. The story of Ruby, for example, is interwoven with tales of generosity and experimentation—from those first few releases to where we are today. It’s this enduring drive that helps us build a shared experience through consistent programming.
00:36:59.599 The messages extend beyond the framework of technology; it includes how we collaborate together and transfer learning across community landscapes. With each chapter we write, we keep adding to that underlying narrative that defines Ruby as a welcoming place for all.
00:37:58.640 Now as we reflect on our time today, my key takeaway is to inspire engagement and collaboration through storytelling; there is a wealth of learning lying within our personal tales, so I encourage you to find your own voice. Go ahead! Capture those stories and don’t hesitate to share them. Together, we can not only celebrate our achievements but also the resilience that continues to drive our passion for programming.
00:39:05.039 So go out there, write something, and share your journeys. Thank you so much for having me. I’m truly Kerri Miller, and you can find me all across the internet at @kerri. As a motorcycle blogger, I’m currently blogging at motorzor.com. Thank you all again for this fantastic experience!
00:40:18.560 Well, thank you, Kerri! The applause resonates through our virtual space. That was incredibly insightful! Before we move on, let’s see if we have any questions. It doesn't look like we do at the moment, but I want to remind everyone that the Slack channel for this talk is available. Kerri will look there for any questions we may have.
00:40:38.320 We really appreciated how simple yet profound the message was in what Kerri shared, so thank you for that! It’s been a great day so far, full of engaging talks—whether live or pre-recorded. Remember that all talks are recorded, so if you happen to miss one, you can catch it later. We have a full day of events ahead. Stay active in the community online, and we look forward to seeing you here shortly!
00:41:52.000 With that, have a wonderful and fantastic Day Two! See you all on Slack!