Kinsey Ann Durham

Becoming a MID: Two Perspectives on Leveling Up

Becoming a MID: Two Perspectives on Leveling Up

by Kinsey Ann Durham and Kim Barnes

The video 'Becoming a MID: Two Perspectives on Leveling Up' features Kinsey Ann Durham and Kim Barnes discussing their insights on evolving as mid-level developers in the software engineering field at the Rocky Mountain Ruby 2016 event. The speakers, both engineers at Go Spot Check, share their varied experiences and strategies for professional growth,

Key Points Discussed:
- Technical Learning: Kinsey emphasizes the importance of teaching others, as it deepens one’s understanding. She suggests volunteering and pursuing personal projects to enhance technical skills.
- Maintaining Balance: Both speakers stress the necessity of taking breaks and pursuing hobbies outside coding to achieve a sustainable work-life balance.
- Learning Domains: Engaging with customers and understanding the domain helps developers contribute more effectively. Field trips, like visiting liquor stores for user perspective, can be beneficial.
- Effective Mentorship: Kim advises maintaining kindness, positive body language, and using relatable analogies to explain concepts during mentorship. She notes that mentorship should be a two-way street, where both parties learn from each other.
- Time Management and Emotional Intelligence: Utilizing techniques such as the Pomodoro Technique can improve time management, while fostering emotional intelligence helps build a collaborative environment among developers.
- Networking and Career Progression: Both speakers highlight the significance of networking for career advancement and the need to create a mentorship culture to cultivate new developers into more experienced roles.

The speakers conclude by reminding juniors to actively voice their needs, set goals, and seek feedback, while seniors should balance their mentoring responsibilities to prevent burnout. The discussion asserts that mentorship in programming is essential for the growth and sustainability of the software development community.

00:00:12.620 Hi everyone, how are you all doing? Awesome! We're really excited to be here; thank you for having us. We're going to build on a lot of the topics that Erica discussed, so we're super excited about that.
00:00:20.430 Today's talk is titled 'Becoming a MID.' It was interesting to see how many people identify as mid-level developers, but I couldn't see from the front row.
00:00:25.619 So, we're going to discuss our two perspectives on leveling up. I'm Kinsey, and I work at Go Spot Check with Kim.
00:00:33.239 I love outdoor activities, hanging out with my dog, fly-fishing, and traveling. I also have the opportunity to teach coding to young women in developing countries, which is really rewarding. I work with Sarah Allen on Bridge Foundry efforts and mentor for a program called Block.
00:01:01.950 Okay, cool! I'm Kim Barnes. My friends sometimes affectionately call me the 'Salty Dog' because I've been doing this for quite a while. Sometimes I use words or tools that people haven't heard of. For instance, when Dave talked about the 1200 baud modem, I brought in a 300 baud modem and an Apple II Plus back in college.
00:01:18.509 I got into programming through my dad, who assigned me programming tasks as a kid. The level of difficulty determined how many games I could play, like Sneakers or Space Invaders. I have a couple of passions: TDD, pair programming, and mentoring. My amazing kids are both in college right now, and I enjoy horse riding and dog training.
00:01:42.569 It's exciting that Kinsey and I are on the same team now. I'm mentoring her, and she'll hopefully learn from me, although she thinks I'm really old. But that only means I have more to teach her.
00:01:55.799 As we mentioned, we're both software engineers at Go Spot Check. Although Kim has a fancier senior title that I hope to achieve one day, our team is about 75 people strong, located in downtown Denver, just a block away from Turing.
00:02:07.439 We're currently hiring mobile developers and product owners. We were also recently voted the best place to work, and we genuinely love working at Go Spot Check. Sorry if we come off as too enthusiastic at times; we truly enjoy it there! Here’s a picture of us at our company retreat last month in Vail.
00:02:35.150 While planning this talk, we really struggled to find the right words to use, as we believe words are important. Initially, we aimed at helping juniors level up to mid-level and seniors understand how to mentor them. However, through discussions, we realized this applies to many people—whether you consider yourself junior or mid-level, terms can be quite fuzzy.
00:03:05.500 We hope everyone finds something relevant to them, regardless of your title. We found it hard to use the term 'junior,' and we joked about using terms like 'Padawan' or 'minion.' But we finally decided to stick with the conventional terms.
00:03:25.269 We came up with six areas we want to cover: technical learning, domain knowledge, mentoring relationships, pairing versus soloing, and some soft skills. We hope this adds value to what was discussed in Erica's talk.
00:03:43.810 First, we want to talk about technical learning. One key point I want to make for juniors is to put yourself in teaching situations. I know many are hesitant because they think, 'What can I teach?' However, you can teach a lot!
00:03:55.870 Mentor someone who has just been programming for a couple of days, or try to teach your parents or younger siblings what you're learning. I found that teaching really forces you to learn and reveals gaps in your knowledge. You can also volunteer for programs like RailsBridge to gain mentoring experience.
00:05:01.090 Additionally, I encourage you to pursue side projects that excite you, whether it’s building an app or contributing to open source, even though there may be barriers to entry. Attending meetups or networking events can also be beneficial.
00:05:31.660 On the other hand, while it's important to pursue these opportunities, it’s also crucial to take breaks and maintain hobbies from before you started programming. Many people, especially Turing students, claim they don't have time to work out or engage in activities they enjoyed, and that’s a mistake.
00:06:05.200 Taking lunch breaks and stepping away can provide fresh perspectives. Personally, I've been using the Pomodoro Technique, which allows me to take breaks every 20 minutes, and I've found it really effective.
00:06:17.440 Something I've encountered involves learning languages and dealing with unexpected challenges. My first days at Go Spot Check involved grappling with complicated SQL functions, which were daunting at first. I realized many boot camps and online programs don’t cover SQL, which was limiting for me.
00:06:54.700 Delving deep into SQL helped me become a contributing member of my team. Learning to approach problems in smaller, manageable pieces has also been helpful, aided by Ben Horne, a Turing grad who assisted me with breaking down problems. Writing pseudocode has been particularly useful as well.
00:07:34.400 For example, when I write comments about what the code needs to accomplish, I identify gaps in my understanding that could have been easily solved through refactoring before committing.
00:08:07.410 Additionally, it’s vital to focus amidst distractions. Kim helps me stay focused at work, especially with all sort of distractions—like dogs and phones! I've had to set my intention on becoming a mid-level developer, rather than just going through the motions.
00:08:54.920 I’ve learned that practice and time are crucial for growth. Often, people mistakenly think great developers are innately talented, but it really boils down to consistent learning and effort. As Erica mentioned, it’s similar to picking up a shovel every day to dig a ditch.
00:09:13.340 As for technical learning, I’d like to introduce the concept of technical learning axes, inspired by David Medora. If you visualize a horizontal axis representing languages and frameworks, we also need a vertical axis representing foundational concepts applicable across these tools.
00:09:35.400 It's crucial to balance these axes. The horizontal axis might include languages like Ruby on Rails, while the vertical could include principles like TDD and design patterns. Mastering these foundational concepts makes you employable across various languages and helps you tackle complex problems.
00:10:56.050 The more you learn about these concepts, the better you become at applying them across different languages, and you'll recognize their commonalities. When mentoring or pairing with others, I can tell where they are in their understanding based on which language they're using, and that can guide discussions about trade-offs.
00:11:43.310 Next, let's transition from technical learning to domain knowledge, building off Erica's emphasis on the importance of asking questions. Who finds it difficult to ask questions they think might seem stupid in meetings?
00:12:14.010 I encourage everyone to ask those questions because your purpose is to provide value. If you don’t understand something, you’re less likely to contribute effectively. It’s vital for building trust to speak up when you don’t understand something.
00:12:32.120 As Kinsey mentioned, working with customers has been a significant aspect of our roles. In our company, many customers are in the alcohol and beverage industry. I had to learn a lot about this to engage effectively.
00:12:46.220 Going on field trips to liquor stores helped me put myself in the shoes of the end users, which was an eye-opening experience. It's also essential to engage with customers regularly, especially when starting out, to better understand the domain.
00:13:37.050 Now, let’s discuss what makes a good mentor. My number one piece of advice is to avoid being unkind. I've experienced mentors who made me feel inadequate or belittled me for asking basic questions.
00:14:10.260 It's important to maintain positive body language and demeanor. If you're frustrated, it’s okay to step away and take a break instead of showing irritation, as it can affect your mentee's morale.
00:14:59.660 Using metaphors to explain complex concepts can be incredibly effective. For instance, I struggled with the 'this' keyword in JavaScript until someone explained it through an analogy involving kicking a ball and how players interact. It's often easier to grasp such concepts through relatable scenarios.
00:15:37.500 Moreover, consider the bigger picture and the whole developer when mentoring. It's not solely about technical prowess; emotional support is equally vital in mentorship. When Kinsey faces challenges, she leans on me for support, and I hold her accountable to continue improving.
00:16:29.650 And remember, juniors can teach you too! They might introduce you to new shortcuts or tools you haven't encountered before. It's important to foster an environment where learning is reciprocal.
00:17:03.900 While senior developers may excel at their craft, they may not immediately be great mentors. It takes practice to refine that skill. Make an effort to understand the mentee's perspective, identify knowledge gaps, and address them effectively.
00:17:48.600 Recognizing when to step in and when to let them navigate challenges independently is crucial. You don’t want to hover too much or leave them completely in the lurch—finding the necessary balance is essential for their growth.
00:18:33.300 I read an article recently on 'teachable code' that discusses ways to tailor explanations to developers of varying skill levels. Writing accessible code is not just about making it easy for juniors; it can also mean ramping the complexity up to provide valuable learning experiences.
00:19:33.130 The key is to engage in conversations around code during code reviews, which serves as a great opportunity for learning. Don't just tell someone how to fix an issue—encourage them to voice their thoughts on the code they wrote.
00:20:45.040 Engagement during such discussions is invaluable. For instance, before running a failing test, asking your pair what they expect will deepen your collaboration and bolster clarity.
00:21:50.370 Let’s touch on time management. Developers are often notorious for struggling with estimating the time tasks take. Adopting techniques like the Pomodoro Technique can enhance your time management skills.
00:22:48.600 By reflecting on your estimation accuracy after completing tasks, you can develop a better understanding of your work habits, which leads to more efficient time management.
00:23:39.300 Multitasking is another hurdle; try to maintain a focus on one task at a time until you achieve a sense of completion.
00:24:30.920 Fostering emotional intelligence is essential for collaboration in a team setting. It's about developing empathy towards others, including juniors, peers, and even product stakeholders.
00:25:25.470 Having self-awareness about your work style, attitude, and how you interact with teammates is equally important. Utilizing personality tests can aid in understanding yourself and your teammates, fostering a better work environment.
00:26:22.880 In conclusion, networking is an invaluable part of career progression. I’ve never secured a job through resumes alone—it's all about building connections.
00:27:15.690 As we move toward the end, a piece of advice is to create an influx of junior developers into the workforce by fostering a strong mentorship culture within the Ruby community, preparing them to become senior developers.
00:28:43.330 Lastly, I want to remind juniors to vocalize their needs, set goals, and seek feedback regularly. And to seniors, make sure you don’t burn out while mentoring; find ways to balance your roles.
00:29:37.890 We want to thank everyone for listening and acknowledge those who helped us with feedback and support. If anyone has questions, we'd love to address two questions before concluding.
00:30:25.720 As for the balance between juniors and seniors, I believe it varies based on individual team dynamics and senior developer mentoring skills. A good ratio seems to be about half and half for an effective collaborative environment. It’s essential to recognize that mentorship in programming is a two-way street—every new developer brings fresh knowledge and perspective to the team.