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.