Junior Developers

Summarized using AI

Grow Your Team In 90 Days

Cheryl Gore Schaefer • November 10, 2016 • Cincinnati, OH

In the RubyConf 2016 talk titled 'Grow Your Team In 90 Days', Cheryl Gore Schaefer discusses effective strategies to mentor new software developers, specifically those from non-traditional backgrounds such as bootcamp graduates or apprenticeship programs. The main focus is to cultivate an effective learning plan that centers on the apprentice, in this example named 'Sam'.

Key points covered include:

- Building a Learning Plan: Emphasizing that mentorship should be about 'Sam's choices', encouraging responsibility and confidence. The mentor should adapt to Sam's learning style and have them self-assess their progress.
- Effective Questioning: Instead of binary questions, mentors should seek to provoke deeper thought by asking open-ended questions about Sam's understanding to empower learning.
- Goal Setting: Discusses the importance of defining clear goals together with Sam, helping them map out paths like becoming proficient in Ruby and identifying adjacent skills.
- Organizing Learning: Mentors should categorize tasks by importance and relevance, ensuring learning remains focused on essential topics while allowing room for exploration.
- Regular Check-ins: Establishing a routine to assess progress, recalibrating goals, and celebrating milestones ensures continuous motivation and adapts the plan as needed.
- Positive Reinforcement: Emphasizes the impact of praising good practices and progress as a means of enhancement in motivation.
- Constructive Feedback: Mentors are encouraged to provide tangible examples of good vs. bad code to guide their apprentice’s development effectively.
- Ownership of Learning: Allowing apprentices to seek out and contribute additional resources fosters ownership of their learning journey.
- Long-term Connection: The end of the 90 days should not mark the end of mentorship; ongoing support and encouragement for apprentices to mentor others should be promoted.

The process and structure of mentorship are depicted as more crucial than the specific content taught. The session wraps up with an invitation for questions, emphasizing adaptability in mentoring approaches. This highlights that by establishing a clear framework within mentorship, one can foster continuous and sustainable growth within software development teams.

Grow Your Team In 90 Days
Cheryl Gore Schaefer • November 10, 2016 • Cincinnati, OH

RubyConf 2016 - Grow Your Team In 90 Days by Cheryl Gore Schaefer

So you want to work with an awesome ruby developer? Great! But finding one is hard. It’s much easier to hire that apprentice or bootcamp grad, but that person is not an awesome developer. How do you help them get there?

You will learn how to build a learning plan and become the best mentor to a budding software developer. You have the opportunity to mold your apprentice’s skill set into exactly what you need, while benefiting from their diverse skills and experiences. We will build an example learning plan of a developer learning Ruby, showing clear and specific choices and likely outcomes.

RubyConf 2016

00:00:15.240 Good to see you all here! Thanks for coming. It's 4:20, and we're going to talk about some strategies to help you mentor new developers.
00:00:22.630 First, just a little bit about me. I'm Cheryl Schaefer; you might have guessed from the program. I was a flute teacher and a performer. I have a master's degree in music. Of course, being a musician, I also worked a bunch of other jobs. I did photography, was an optician, and worked for some dentists. I have had a lot of opportunities to learn different domains of knowledge.
00:00:41.440 I started in software by going to local meetups with my brother, Chris, and took a couple of classes at the local university. Then, there was a meetup that started in my town for women, and I began attending. From there, I got an apprenticeship at LaunchCode, which is a non-profit. I was working under Mike Mini and have been there for almost two years now. Recently, I mentored my first hire at LaunchCode.
00:01:12.070 The non-profit serves unemployed or underemployed adults, helping them work towards upward mobility and get their first tech job. They offer many free educational opportunities. But enough about me, let's talk about you.
00:01:29.969 You could maybe use some help. It's hard to find enough people to assist you with beginners, not to mention that you can ensure they use the right editor. We all know that teams with diverse skill levels and experiences produce better software. You can build that team around you.
00:01:45.820 In part of that process, you're going to learn and grow yourself, kind of like metaprogramming. You set them going, and they will produce more people, turning it into greatness. I'm not going to talk about interviewing right now, but if you want to discuss how to interview people without degrees, you can come catch me later.
00:02:16.600 For example, let's say we found someone and picked a gender-neutral name like 'Sam'. Meet Sam. I know what you're thinking; what I really meant was any hobbit who would follow Gandalf. Sam is driven, smart, and talented, but they don't have a degree. Perhaps they went to a boot camp or a LaunchCode class, maybe they did a project in C# or Java and don't know Ruby yet.
00:02:32.560 You could probably get HR to give Sam a chance, but they're going to have to prove themselves and show that they can really learn and do it. How can you help them be successful? One way is to build a learning plan together, especially if you've got someone who has done something else for their background.
00:02:56.500 I think there are a couple of things to this whole learning plan that I'd like to emphasize first. This is about focusing on Sam. Everything you think about as you work with them should be centered on Sam’s choices and how Sam feels. They are most successful when they feel responsible, challenged, and confident. If Sam says to you, 'I need to do this; I can really do it if I try hard to meet the challenge,' that's when you know Sam is going to make it.
00:03:35.290 It helps to be flexible. If you can make your plan adaptable for Sam’s learning styles, then what works for them will be more effective than anything you'd assume would work. Encourage Sam to make self-assessments rather than you assessing them. What you provide is framing: tell them the context and ideas that they don't know about yet.
00:04:07.630 Don’t tell them what to think—this is a delicate balance—but figure out what questions they can ask. Let’s pause for a second, as this is the most often asked question I receive: talking about different types of mentoring and code reviews.
00:04:29.200 The first thing that happens when you start mentoring is showing someone's code, and they look at you blankly. Has anybody here mentored before? Uh oh.
00:04:40.320 You hear things like, 'Do you know what that means?' I don't know what it means. We nod, but we do it a lot when other people are helping us through code we don’t understand yet. It means we're paying attention, but it doesn't guarantee we understand. The questions then start coming: 'Do you know if this will return a string or a symbol?' This is better than not asking questions, but it's not the right kind of questions.
00:05:06.740 If a question can be answered with yes or no, you didn’t learn anything about them by asking that question. Try to ask something more vague, especially when you don’t know their position. Rather than asking, 'Do you know how strong parameters work?' you might ask, 'What do you know about strong parameters?' That kind of question will yield more nuanced conversations, allowing you to lead them toward what they might need to know.
00:05:59.880 In this way, you can gauge how to direct your efforts and know what level of detail they are already aware of, preventing you from wasting time on topics that are already boring to them. You're trying to empower Sam; while they aren’t ready for a Balrog yet, they can hold off orc infantry while you fight the demon. Eventually, Sam will grow into an awesome developer who can also fight demons.
00:06:18.750 So you're going to improve Sam's chances of success, and there are four main activities we're going to talk about. First, you're going to steer the ship by setting big goals.
00:06:28.640 Identifying what you want to accomplish is the first step. Then, you need to devote adequate time and resources to make that goal achievable, before cycling back and forth between assessing what they've done, reprioritizing what you want to do, and acknowledging when you do it.
00:06:59.880 Step one is setting some goals: sit down with Sam, the person who wants to learn, and ask what they want help with. If they say 'I want a job,' that may not be super helpful. Try to guide them. For example, you might suggest that being an awesome Ruby developer could land them a job. Ask Sam to suggest ideas on what it means to be awesome at Ruby and what adjacent skills they might need.
00:07:32.330 They can’t just do Ruby all day; they need to develop other skills, too, like a little bash. Encourage Sam to list a lot of things. If they say they want to be full stack, they may not know what they're asking for, and that's okay, but it sounds fun. Sam might also want to learn how to write tests. There are so many things we could do—this is a great sign that Sam has a curious and bright mind.
00:08:12.090 Don’t fall for the ambiguity effect; are you familiar with it? It's where you feel overwhelmed by options because you don’t know what you don’t know yet, and it seems not that important. Simply break free of that; you can do anything, and we’re just organizing it right now.
00:08:39.360 Organize what you want to learn based on distractions. This doesn’t mean you'll never learn those distractions; it simply means that you won’t focus on them right now. For your Ruby job, organize tasks by importance.
00:09:03.030 Categorize tasks that will require more time as 'important' and those that can be learned more implicitly as 'less important'. This way, you can focus Sam's learning plan on the most relevant topics and avoid wasting time on content that isn't applicable.
00:09:35.070 Breaking down tasks for your apprenticeships will likely require you to spend some time pairing and reviewing code together. You’re going to need at least an hour each week to meet, especially at the start. You're likely to spend about half a day assessing resources, and that time may decrease as you continue to work together.
00:10:26.520 The majority of the work will be on Sam’s shoulders. They will need to put in hours on their learning—whether that involves laptop subscriptions or ordering books. Be prepared to reduce your workload as you mentor them, engaging in slightly less challenging tasks so that Sam can gradually acclimate to coding.
00:11:00.270 Regarding your learning plan, I don’t really care how you structure it. The resources used can vary significantly between mentees, so there's no need to make it elaborate. Just ensure that the plan allows both you and Sam to add items and check them off.
00:11:22.140 The plan is actually Sam’s, so you’ll need to release some control. This is hard because you might want to dictate the steps, but the goal is to guide Sam to make the right choices. Sam will make some missteps, but as long as they’re small, this is part of the learning process. Protect them from significant errors with guidance.
00:12:06.390 Your to-do list should include topics from your previous discussions. When selecting resources, ensure they complement what Sam wants to learn and that they're manageable in length—especially in the beginning.
00:12:43.140 Be cautious to not overwhelm Sam with lengthy materials at first. Instead of diving into long books, pick shorter chapters. This not only helps with engagement but can also assist in retention. This can apply for blog articles and learning tools as well.
00:13:14.969 Collect learning tools like blog articles, podcasts, and books. Assess their quality, effectiveness, and speed of use before introducing them to Sam. This doesn’t just mean that they're about Ruby; you also want to assess whether they'll be suitable for Sam's capacity to learn.
00:13:46.700 Helpful resources should be accurate and up-to-date. Check the credibility of the authors to ensure the information is reliable. It's important to evaluate how challenging the material is for Sam's current skill level and whether it links to other necessary resources.
00:14:26.280 You should ideally create a list with Sam, perhaps in the first week, to track the things they want to learn. Ensure it’s a little more than they can get done that week to allow a stretch goal without feeling pressured.
00:14:55.500 Set up a collaborative checklist so that learning remains engaging and manageable. Aim to balance the urgent tasks with those that are essential.
00:15:29.620 Over weeks, keep learning and check in with them regularly. At the beginning of every week or every few weeks, revisit your larger goals to evaluate if you’re on track.
00:15:58.490 During these check-ins, talk about what they’ve accomplished and if it aligns with the initial objectives. Check whether they’ve spent too much time on something less relevant.
00:16:27.379 This process can feel overwhelming at first. There’s a lot to learn, and navigating these objectives can be challenging. But with each milestone achieved, it will feel more rewarding.
00:16:54.390 At LaunchCode, where I work, we conduct surveys of those going through the apprenticeship program. This feedback helps us intervene when individuals seem to struggle, while also tracking their progress.
00:17:14.980 We collect data for those who successfully complete the program. The trend typically shows that as apprentices proceed, their confidence increases, and engagement improves.
00:17:32.430 This self-reporting data helps us gain insights, and we actively monitor for any outliers—those who may feel demotivated or fall short—revealing useful lessons on the learning process.
00:18:18.399 Managing motivation is a crucial aspect of mentorship. It's important to communicate effectively. Reinforcement attempts to increase desired behaviors while punishment aims to decrease undesired actions.
00:18:42.620 Focusing on positive reinforcement, rather than punitive measures, tends to yield better results. Simple gestures like praising good code or recognizing progress in front of the team can motivate Sam to maintain and grow their learning.
00:19:12.350 As Sam gains confidence, you can start introducing more complex topics and resources, guiding them through the progression. Check the learning plan often; this iterative approach helps both of you stay on the same page.
00:19:46.660 The regular check-ins give opportunities to assess how well Sam is grasping topics, allowing you to adjust the pace and focus of the learning plan accordingly.
00:20:32.230 Throughout the mentorship, you should ensure that Sam is given exciting and meaningful projects rather than mundane tasks. New educational experiences should be built on their previous knowledge, allowing them to progress naturally.
00:20:58.450 When assessing Sam’s code, take the time to provide constructive feedback. Highlight what they did well and identify room for improvement while encouraging them to think critically about their solutions.
00:21:29.170 Show examples of what constitutes good code versus bad code to help Sam grasp how to make choices based on requirements and constraints. Providing context for these choices is essential so that they can learn from different scenarios.
00:21:54.300 Engagement with feedback fosters a learning environment with clear expectations. By enabling Sam to engage with resources actively, they enhance their understanding—a practice that can be integral across various aspects of development.
00:22:26.250 After their learning goals are established and checked off, encourage them to seek out additional resources that they can add. Their initiative fosters ownership over their learning path.
00:22:55.400 As you continue to guide Sam, stay flexible and responsive to their pace and needs. Be aware of when they might feel overwhelmed or unclear, adjusting your approach accordingly.
00:23:30.870 At the end of the 90 days, you should aim to have not only developed skills but also to have built Sam’s confidence in their abilities. Celebrate achievements big and small; this recognition reinforces what they've accomplished.
00:24:08.950 It’s critical that both of you take some time off to recharge after the learning process. This break allows for reflection before the next mentoring opportunity arises, ensuring sustainability in further skill development.
00:24:55.940 The mentorship doesn’t end when the 90-day program finishes. The connections built create a ripple effect, positively impacting future developers whom Sam will help in turn.
00:25:29.420 In closing, processes are often more significant than the content you initially plan to teach. Establishing clear processes around learning and mentorship can yield continuous growth.
00:25:43.900 Does anyone have any questions? There was a question about specific pairing issues and how to avoid them. The primary concern I often face in pair programming is excessive chatting.
00:26:17.960 While engaging conversations can be beneficial, they can also lead to distractions from the primary task. Keeping discussions relevant to the learning context enhances the efficiency of mentorship.
00:26:54.100 Lastly, always aim to connect the discussions and tasks back to the core objectives, ensuring that Sam feels supported and motivated to learn.
00:27:33.490 Thank you for your attention, and I'm looking forward to seeing how you all empower others with your knowledge and experiences.
Explore all talks recorded at RubyConf 2016
+82