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.