RailsConf 2021

New dev, old codebase: A series of mentorship stories

New dev, old codebase: A series of mentorship stories

by Ramón Huidobro

The video titled "New dev, old codebase: A series of mentorship stories" features Ramón Huidobro, who shares his experiences and insights on mentorship in software development. The talk emphasizes the crucial role mentorship plays in tech communities and individual growth, encouraging everyone to engage in mentoring despite their level of experience. Key points include:

  • Definition and Importance of Mentorship: Mentorship is described as a learning relationship between an experienced individual and a less experienced one. It is highlighted that mentorship occurs in both formal and informal settings within tech communities.

  • Personal Story: Ramón recounts his journey from being a student struggling with coding to becoming a software developer, crediting a mentor who guided him through the process. This mentorship laid the foundation for his confidence and success in the field.

  • Types of Mentorship: Various forms of mentorship are discussed, including direct mentorship, group workshops, and informal feedback sessions during events such as hackathons or coding meetups. Ramón illustrates how these interactions facilitate knowledge sharing and community building.

  • Mentorship Benefits: Ramón outlines three primary beneficiaries of mentorship: 1) the mentee gains knowledge and motivation; 2) mentors expand their own perspectives; and 3) communities foster inclusivity and collaboration.

  • Effective Mentoring Techniques: He provides practical tips for being a great mentor, such as understanding mentee goals, fostering effective communication, and maintaining empathy. Emphasizing a two-way learning process, he encourages mentors to allow mentees to challenge and question advice.

  • Confronting Imposter Syndrome: The talk addresses imposter syndrome, highlighting that even experienced professionals often feel inadequate and that sharing these feelings can enhance mentee confidence and collaboration.

  • Exploring Resources: Ramón advocates for utilizing various resources to aid mentorship, such as online platforms, books, and coding games. He stresses that mentorship is about sharing knowledge joyfully and collectively navigating challenges in the tech industry.

  • Getting Involved: The importance of getting involved in local and online mentorship programs is emphasized. Ramón mentions organizations like Rails Girls and CoderDojo as resources for aspiring mentors.

The overall takeaway is that mentorship is vital not only for individual development but also for nurturing inclusive tech communities. Anyone can be a mentor, and the act of sharing knowledge benefits both the mentor and the mentee, enriching the community at large.

00:00:06.180 Okay, let's get started. Hello there, and thank you so much for joining my talk.
00:00:11.340 Today, I'm really excited to be here and share with you some of the stories of mentorship that I have, as well as some tips and tricks I've picked up over the years.
00:00:16.500 My goal with this presentation is to hopefully inspire you to try your hand at mentorship or perhaps get back into it if you've been out of the game for a while.
00:00:22.619 This is my first ever RailsConf, and while I hope to be there someday in person, I am honored to be here today.
00:00:34.140 Before we get started, I just wanted to share that if you would like to follow along with my slides on your device, I've prepared a URL.
00:00:39.840 You can download them from https://RamonH.dev/mentorship-stories.pdf.
00:01:01.440 So a little bit about me: my name is Ramón, and what you see here is a photo of me presenting a Raspberry Pi dance mat at a conference.
00:01:07.380 I'm originally from Chile but currently living in Austria, where I've been for quite a long time. I'm a Developer Advocate at Code C, and I am also a software development contractor.
00:01:18.780 I've been working for a long time with Ruby and JavaScript and have more recently started to work with Rust and get into those communities.
00:01:30.360 Communities are really important to me. I love getting involved, seeing what people are up to, and getting empowered by their motivation.
00:01:42.479 I believe by listening, sharing, and learning together, we become more powerful as a result. I've been a part of several communities, organized meetups locally, and even organized some conferences.
00:01:55.399 More recently, I've also been a Mozilla Tech Speaker, which is a more informal group of folks, and it's just a lot of fun.
00:02:01.380 One thing I will discuss a little bit later is my experience teaching kids coding or coaching them, which, as you can imagine, plays into mentorship.
00:02:09.060 I want to take you further back and share my experiences getting started—my origin story, if you will. Long ago, when I was in university at the Technical University of Vienna studying software engineering, I was going through a tough time.
00:02:42.300 This was mainly my own fault; I wasn't very motivated. Since German is not my first language, taking complex courses in German such as mathematics, statistics, algorithms, and data structures was significantly more difficult.
00:02:53.280 At that time, I was also looking into moving in with my girlfriend, which meant searching for apartments and figuring out a source of income to afford our new life.
00:03:20.400 I didn’t think I was qualified for a job; I had limited experience in software development. However, my girlfriend was very encouraging and found a freelance Mac OS X developer position.
00:03:35.160 Not being Austrian, freelance work was attractive to me since it eased the legal paperwork, so I decided to give it a try. Feeling a bit cheeky, I sent off an application despite my CV looking quite empty.
00:03:53.820 The person looking for a candidate got back to me and suggested we meet for coffee at Café Mozart. A week later, we met up at this famous coffee house, and I was, of course, pretty nervous.
00:04:20.040 As we sat down and ordered our coffees, he looked at me and asked, 'Ramon, I've seen your CV. You don’t have any practical experience, so why are you applying for this job?' I was unprepared for this question.
00:04:42.780 But somehow, I felt an odd sense of confidence and told him I could learn quickly. For context, I had just gotten my first-ever MacBook and was thrilled about Mac OS programming.
00:05:15.960 He mentioned a book called "Cocoa Programming for Mac OS X, Third Edition" by Aaron Hillegass, which illustrated many best practices.
00:05:35.280 He not only recommended this book but also shared his insights on best practices and introduced me to the build tool chain for Mac OS apps, which was actually written in Ruby.
00:06:05.160 Over time, he would call me, guiding me in solving problems, showing me the complexities of using Git, and introducing me to practices like rebasing.
00:06:26.460 What really stood out was an email he sent weeks later, titled 'Highly Pleased With Your Work.' This struck me like a ton of bricks; I was unprepared for the surge of pride, confidence, and motivation.
00:06:54.240 A few years later, I realized he had effectively acted as my mentor, and we are still collaborating today, with me helping him stay updated on Rails best practices.
00:07:17.460 Now, I want to transition into a commonly held definition of mentorship, which is a learning relationship between a more knowledgeable person guiding someone with less experience.
00:07:30.479 Mentorship is happening everywhere in our communities, whether we realize it or not. It can be a formal relationship or occur informally, such as in a pull request.
00:08:04.020 Looking at a pull request I made three years ago to the Rails Girls Summer of Code team's app, I received feedback that exemplifies informal mentorship.
00:08:29.639 Additionally, I have participated in meetups like the local Vienna art.rb Ruby User Group. These meetups allowed us to share knowledge, enjoy snacks, and collaborate.
00:09:00.300 We have also seen workshops such as the Pie Ladies Flask workshop, aimed at empowering underrepresented folks to learn Python programming.
00:09:34.320 In my first experience with mentorship, I taught children coding. Before attending meetups, I tried starting an after-school program at my high school to teach kids coding, which we called Computer Game Programming.
00:10:09.360 The kids helped each other and me, showing great enthusiasm. A few years later, a former student contacted me for help with the Unreal Engine.
00:10:34.260 This experience showed me that the kids had also picked up mentoring techniques as they taught me about the Unreal Engine.
00:10:52.620 Long-term relationships have also blossomed out of these experiences. An example would be the Rails Girls Summer of Code program, which empowers individuals in open source software development.
00:11:17.220 In workshops, we would gather to code JavaScript and Rails together, and it was an incredible learning experience for everyone involved.
00:11:32.820 These sessions were not only in-person but also remote. We had several online hangouts where we connected with teams from all over the world.
00:12:05.220 These activities encourage mentorship not only in programming but also in skills like public speaking. One of my favorite events is the Global Diversity CFP Day.
00:12:27.660 This yearly event encourages individuals to develop their proposal writing skills for conferences.
00:12:57.540 So you might wonder why we should be mentors. It comes with great responsibility, but I believe there are multiple groups that benefit from mentorship.
00:13:07.379 The most obvious recipient is the mentee; you can assist in their career, education, and personal projects, helping them find direction.
00:13:32.580 However, mentorship also benefits you as a mentor. Being exposed to someone with less experience grounds your knowledge, allows for friendship, and broadens your worldview.
00:13:47.520 Moreover, the process helps identify knowledge gaps you might have and encourages learning new things together. When we mentor others, we inspire them to become mentors as well.
00:14:06.780 Understanding the distinction between teaching and mentorship is essential. Teaching often involves knowledge transfer in one direction, whereas mentorship encourages reciprocal knowledge exchange.
00:14:33.960 Having said that, I want to share tips and tricks for being a good mentor. The first key point is to start the mentor-mentee relationship by asking about their goals.
00:15:00.660 It's crucial not just to focus on short-term goals but long-term ones as well. Checking in regularly about these goals can help adapt and evolve the mentorship.
00:15:28.740 Encouraging good habits, including good technical and empathetic skills, is vital. Demonstrating empathy helps to show the mentee its significance in personal and professional development.
00:15:53.760 Effective communication is imperative for mentorship and software development. As a contractor, I find it essential to convey ideas succinctly to my clients, and I strive to pass this skill to my mentees.
00:16:11.280 Lastly, mentorship is a long-term commitment. Helping someone with immediate challenges is just as important as fostering their long-term development.
00:16:34.200 Encourage your mentee to challenge you, ask tough questions, and engage in open discussions. It's essential to create an environment where critical thinking thrives.
00:17:05.199 Another frequently asked question is, 'Which programming language should I learn first for web development?' Encourage them to refine this question further.
00:17:35.220 Use this opportunity to expose your mentee to a variety of technologies instead of imposing your preferences on them. Show them the diversity of tools and techniques available.
00:18:03.600 Being supportive is also key in mentorship. You want to create a safe space where mentees feel comfortable sharing their issues.
00:18:19.840 Let's discuss imposter syndrome for a moment. It's common among newer programmers who feel unqualified for their positions.
00:18:39.740 As a mentor, it’s your job to help them realize that these feelings are prevalent, share your experiences of overcoming them, and reassure them.
00:19:12.180 Finally, offering constructive feedback is vital to keep your mentee motivated. It's important to approach critiques positively and use guided questions rather than harsh judgments.
00:19:36.060 For instance, if discussing code, ask guiding questions that prompt your mentee to critically think about their solutions rather than outright criticism.
00:20:07.560 It's important in these discussions to maximize support while minimizing harm. As mentors, we must understand our privileges and take care to direct mentees to the right resources.
00:20:29.760 Listening is an art of mentorship. It is just as important as speaking. I try to serve as an on-demand rubber duck, allowing my mentee to express their ideas fully.
00:20:50.220 Even if I disagree with their perspective, I respect their input and let them explore it themselves. Mentorship is about learning together.
00:21:21.480 You don’t need to have all the answers. If you don’t know something, express your curiosity and willingness to explore the topic alongside your mentee.
00:21:44.520 I recall a moment while teaching kids coding when a child questioned why the origin in programming was at the top left instead of the bottom left, as they learned in math class.
00:22:18.240 This curiosity led us to discover together the historical context of screen rendering that dictated that programming framework design.
00:22:46.020 Encouraging this kind of exploration fosters a culture of curiosity. It's important to show your mentee how you tackle questions and challenges.
00:23:13.680 Occasionally, engaging with a topic deeply can spark interest. Always look for opportunities to dive deeper into subjects, demonstrating your own eagerness to learn.
00:23:35.520 Moreover, positioning mentorship as a pathway to continued learning, both for you and your mentees, establishes a collaborative and reciprocal environment.
00:24:11.040 You should recommend engaging resources and learning activities. It's important to share educational materials like games and books that can make learning enjoyable.
00:24:32.640 Games like Regex Crossword, CSS Diner, and Flexbox Froggy facilitate skill-building in a fun format. Share your recommendations that enriched your learning experiences.
00:24:57.540 Books like 'Practical Object-Oriented Design' by Sandy Metz are invaluable. Share books and online resources that you refer to for guidance, demonstrating your commitment to continuous learning.
00:25:22.680 A key point is to understand that relative experience matters in mentorship. You don't need to be an expert; recent experiences can provide fresh insights.
00:25:50.460 An example of this is my sister, who became a mentor after participating in a Rails Girls workshop. Her perspective as a recent learner was invaluable in guiding others.
00:26:17.640 Even those with more experience should not hesitate to seek out mentorship themselves. The learning journey is continuous, and everyone can benefit from it.
00:26:41.640 However, it's essential to recognize your limits. Taking on too many mentees could dilute your effectiveness as a mentor.
00:27:12.240 Make sure you're well-rested and prepared to support your mentees. It's perfectly acceptable to decline requests when your capacity is full.
00:27:39.960 If you're looking to help others in a structured way, consider local organizations or tech meetups that seek mentors. Initiatives like CoderDojo and Rails Girls exist globally.
00:28:01.380 Offering free one-on-one sessions for mentorship has been rewarding for many, and you can share your experiences and offers online.
00:28:27.840 Encourage your workplace to launch mentorship programs or informally discuss the value of mentorship. Create a space where mentors and mentees can connect.
00:28:57.300 Lastly, learning in public can also be an avenue for mentorship. Sharing thoughts, experiences, and questions in public spaces can attract others to engage with you.
00:29:25.620 Books like 'Working in Public' outline how collaboration in open source can lead to mentorship opportunities. It's important to remember that the desire to mentor stems from a passion for sharing knowledge.
00:29:53.640 I am grateful for your presence today, and I hope you take away the importance of mentorship as a way not just to pass on knowledge, but also to share joy.
00:30:16.060 Please check out these resources and reach out if you’re interested in discussing mentorship. My name is Ramón, and you can find me on Twitter at @olasoymilk.
00:30:45.660 Thank you so much for listening, and enjoy the rest of RailsConf!