Talks

Don't touch that!

Don't touch that!

by Adam Cuppy

In his talk "Don't touch that!" at RailsConf 2022, Adam Cuppy explores the complexities of the Ruby on Rails framework, highlighting the tension between its magical appearance and the intricate underlying code. The talk encourages developers, especially newcomers, to embrace a playful, experimental mindset when debugging Rails applications. Cuppy emphasizes that programming should be a fun and creative process, not a daunting task, and that every developer starts from a point of limited knowledge, fostering a collaborative and inclusive community environment.

Key Points Discussed:
- Introduction to Ruby on Rails: Cuppy welcomes both new and experienced developers, acknowledging that everyone has begun their programming journey from scratch.
- The Magical Nature of Rails: He describes Rails as a framework filled with hidden complexities, comparing it to a magical system that both empowers and intimidates developers, as much of its functionality remains unseen.
- The Importance of Collaboration: Cuppy reinforces that all developers play a crucial role in the Rails community, contributing to its growth and evolution.
- Childlike Experimentation: Drawing parallels between the problem-solving abilities of children and adult programmers, he encourages developers to shed their preconceived notions and approach challenges with a fresh perspective.
- Live Coding Examples: Cuppy demonstrates techniques to override and extend Rails internals using live coding. He showcases how to load a custom version of the Rails gem into a Rails application for debugging and experimentation.
- Debugging Strategies: He discusses practical methods for troubleshooting by examining stack traces and utilizing GitHub to explore and modify Rails code, thus breaking through common barriers faced by developers.
- Embracing Mentorship: He introduces the Software Residency program aimed at helping newcomers advance their skills in a supportive environment, emphasizing the value of community-provided mentorship.
- Additional Learning Resources: Cuppy recommends tools like Jumpstart Pro for developers who wish to explore Rails further, highlighting the holistic learning experiences they offer.

Conclusions:
Cuppy's primary message is to inspire developers to explore and play with Ruby on Rails without fear. He reinforces the idea that understanding the underlying mechanics of the framework can be both enlightening and enjoyable, ultimately enhancing one’s coding skills. The belief is that, by embracing a childlike curiosity, programmers can unlock new solutions and approaches to problems, leading to more effective and joyful software development.

00:00:00.900 Hello, and welcome.
00:00:12.380 I'm very glad that this all worked out because originally I was supposed to speak on Tuesday. It didn't work out, and I was a little bummed, but here we are today. Thank you so much for being here.
00:00:24.359 This talk is entitled 'Don't Touch That'. I assume you've probably read the abstract, and that's awesome. I want to set a couple of quick expectations about what I'm going to be covering today, given the amount of time that I have, which is only 30 minutes.
00:00:40.500 My goal here is quite simple: to help us all get into a different state of mind and to remember one very fundamental thing— we have a great opportunity to have a lot of fun doing what we do, which goes well beyond merely writing features. For those of you who are new to this entire ecosystem, first and foremost, welcome! Even though I and many others around you may have been doing this for a while, you are just as welcome as anyone else here.
00:01:10.680 Not a single one of us in this room was born with the ability to write code. Each and every one of us started at a similar point, where we knew nothing, and you are just at a different part of that journey compared to others who may be further along.
00:01:34.799 Now, raise your hand if you've ever started writing a Rails app from scratch. You go to the generator, download the necessary files, and then you run the command 'rails new', specifying everything you want for your application.
00:01:45.540 You press that magic enter button, and a whole lot of craziness happens. Suddenly, you have created a multitude of files and options. Before you know it, you have an application ready to go. But does it ever feel like, despite this, you still know next to nothing?
00:02:06.659 That's the thing: Rails is gorgeous, beautiful, and magical. For those of you who've never worked with Rails before, it might feel like there’s a lot happening under the hood. It's like we've got about 95% magic sprinkled with a few sparkles of hope and creativity. On one hand, Rails empowers us to accomplish incredible tasks rapidly, but on the other hand, there is a lot that can feel hidden and intimidating.
00:02:52.019 I want to give huge credit to Eileen Uchitelle, who delivered the keynote yesterday. One of her messages was that we are all arbiters of the future of Rails, and regardless of our experience level, we can help create positive change in our community. It’s important that we demystify the notion that Rails is merely magic. We all know there is actual code behind it.
00:03:39.360 Aaron Patterson, better known as Tenderlove, gave a fantastic talk detailing what makes that magic possible. And if you felt lost during that talk, you're not alone; many of us experienced similar feelings. Bottom line: it is our collective responsibility to push for the change we wish to see.
00:04:15.239 Now, I want to normalize this playing field a bit because I believe some of us may not know each other very well. So here's a bit of fun: please stand up if you have a sibling. Look around the room. Now take a seat.
00:05:07.680 Now, stand up if you're older than one of your siblings. Alright. Good, take a seat. Next, stand up if you are left-handed. Look around the room! Great, now sit down. Stand up if you're right-handed. If you’re ambidextrous, stand as well, but if not, you're free to sit down.
00:06:04.500 Now, stand up if you were born in a South American country, and then take a seat. Stand up if you were born in a European country, take a seat if you were born in an African country. Wonderful! Take a seat.
00:07:13.380 I want you to stand if you've been writing code professionally for more than a year. Great! If you’re new, less than a year, take a seat and welcome. The point is simple: we all share a level of commonality with one another, and we should never forget that.
00:08:12.600 If you ever feel alone, just remember that you're likely not alone, and there’s always something we can find in common. Now, here's something crucial: as children, they approach the world differently without many preconceived notions.
00:09:16.440 As a parent of a one-year-old and an almost four-year-old, I'm amazed at how they think. I did some research about the intellectual differences between kids and adults, which reveals that children often solve problems faster than grown-ups. Let's put this to the test. I’ll give you a simple riddle.
00:10:07.620 What number is the car parked in? Raise your right hand if you think you know the answer. It’s okay if you don’t know; the fact is that children solve problems like this in under ten seconds while many adults take far longer.
00:11:20.640 Why do kids solve these puzzles faster? They don't have as many assumptions when closely examining the question. Adults might become stuck in their complex thought processes, while children maintain simpler assumptions.
00:12:22.920 In the end, it's about being open to discovering new possibilities. Let me illustrate with a street performer who offered a prize to participants who could solve a challenging problem. The reality is that kids view problems in a distinct manner, allowing them to arrive at solutions more quickly.
00:13:50.760 As we grow older, we become attached to our historical knowledge about how things work. Kids, however, free themselves from this baggage and experiment without fear. Observing children playing and figuring things out is one of the best parts of parenthood.
00:14:43.200 I want to drive home a key point: Ruby and Rails, unlike other frameworks, are nothing but code. All that magic you see is fundamentally built upon Ruby code. The real question is not about recognizing the smoke and mirrors but about understanding how that magic actually works.
00:16:00.540 Here’s where it gets exciting: I’m going to share strategies for you to explore Rails a little deeper and break some things.
00:16:29.400 If you were at Eileen's talk yesterday, she touched on why we should avoid monkey patching. To summarize, Ruby allows us to redefine methods on the fly, but this capability also comes with risks.
00:16:43.740 I'll show you how to play around with this and demonstrate some live coding. Let's set up a basic Rails application so we can see how things work.
00:17:13.260 Here's what we have: a simple Rails application, ready to go. When we run our 'rails server', we can explore how things incrementally come together, demonstrating various features and functionalities of Rails.
00:18:54.240 Ultimately, the point of all this is to experiment and to dive into the code. If you have questions, dig into the comments within the Rails API. You can find out how everything works under the hood and make some modifications.
00:20:56.760 As we navigate this exploration, don’t hesitate to take the time to read through the GitHub repository and familiarize yourself with what is really happening. This is the first step toward understanding how to break things intentionally.
00:22:28.560 Now, let’s check out how to load a custom version of gems into your application. We’ll look at modifying the existing Rails environment to see how it can be tailored to our needs.
00:24:40.920 It's like getting the ability to experiment with core methods while separated from the main Rails code base, which facilitates a safer environment for testing and innovation.
00:25:25.260 We can make observations, tweak the code, and, if necessary, break things to see how intricately everything fits together within the Rails ecosystem.
00:27:03.960 I want to return to this idea of questioning ‘I don’t know.’ When you reach that point, reframing the question can lead to incredible breakthroughs. It’s as if children don't even recognize problems as problems; they simply explore.
00:28:35.040 So when facing challenges, think of what it might mean if you did know the answer, and how you could reinterpret the situation. That could lead you toward solutions and opportunities you may have never considered.
00:30:15.600 If you're interested in further discussions, I would love to connect on Slack. Feel free to reach out anytime.
00:30:56.520 Remember: we're all in this together. This journey may feel isolating at times, but you are definitely not alone. Stand up if you've ever felt stuck or lost while coding.
00:32:06.540 That feeling is something many of us experience, so look around and recognize that you are not alone.
00:32:57.000 There are resources, mentorship programs, and communities dedicated to helping you thrive in your development career. I encourage you to explore these options and embrace the opportunities available to you.