Ruby on Rails
Actionable Tactics for Leveling Up Junior Devs

Summarized using AI

Actionable Tactics for Leveling Up Junior Devs

Sumeet Jain • May 19, 2018 • Pittsburgh, PA

In the video 'Actionable Tactics for Leveling Up Junior Devs', Sumeet Jain discusses effective strategies for mentoring junior developers, highlighting the importance of practical mentorship in the tech industry. He argues that while mentorship is widely acknowledged as beneficial, many developers lack the skills and frameworks necessary for effective guidance. Jain presents several actionable tactics aimed at improving the mentorship experience and skill development for junior developers. Key points include:

  • Structured Questioning: Establish a format for asking questions to help junior developers clarify their issues. This fosters a deeper understanding and encourages problem-solving skills.
  • Public Technical Discussions: Prohibit technical conversations in private messages (like Slack) to promote open communication and collective learning within the team.
  • Safe Spaces for Questions: Acknowledge that there are indeed 'stupid questions' that can hinder learning due to ego. Providing anonymous channels can allow developers to ask these questions without fear.
  • Focus on Business Knowledge: Recognize that junior developers often struggle not just with coding but with understanding the business context and necessary tooling. Tackling this can enhance their effectiveness.
  • Simplifying Abstractions: Document and clarify complex abstractions in the code to facilitate understanding. Overloading new developers with abstract patterns can lead to frustration.
  • Documentation through Screencasts: Encourage creating short videos discussing code structures and business logic to aid learning and retain talent.
  • Observation Over Pairing: Suggest that junior developers observe experienced developers at work as an alternative to pairing, allowing them to absorb knowledge unconsciously.
  • Boosting Developer Confidence: Regularly affirm hiring decisions and encourage a culture of open communication to alleviate the self-doubt prevalent among junior developers.
  • Investment Time for Depth: Instead of broad learning sessions, allow junior developers to work on projects that promote depth in their understanding without pressure.
  • Building Authority through Writing: Encourage developers to document their learning and experiences via blogs, which solidifies their knowledge and contributes to public recognition of their skills.

In conclusion, Jain emphasizes that these tactics should not be viewed as a rigid playbook but rather as a starting point for discussions on effective mentorship. Listening to junior developers' needs and experiences is crucial for fostering an environment of growth and learning. The act of debating these methods may provide teams with more value than adhering strictly to them.

Actionable Tactics for Leveling Up Junior Devs
Sumeet Jain • May 19, 2018 • Pittsburgh, PA

Actionable Tactics for Leveling Up Junior Devs by Sumeet Jain

We are told that junior developers are a secret weapon, but this alleged "competitive advantage" is so elusive! Typical advice about evolving talent can be broad, un-relatable, and impractical. Aren't there any specific and actionable tactics that teams can employ for leveling up new devs? (Yes, there are!)

RailsConf 2018

00:00:10.550 We're good! Okay, hello, welcome to the end of RailsConf.
00:00:15.990 My name is Sumeet Jain, and I'm the Development Director at Unabridged Software. I'm going to talk to you today about leveling up teams.
00:00:22.529 This conversation about leveling up teams has been ongoing for a long time, especially since the rise of coding schools.
00:00:28.199 We have repeatedly seen, over the years, and particularly over the past three days, a constant stream of ideas suggesting that we should value mentorship.
00:00:36.180 That said, I don't think anyone disagrees with that. Did anybody come to RailsConf thinking mentorship is worthless?
00:00:41.790 Luckily, over the past three days, you've likely been convinced that mentorship is indeed a good thing.
00:00:48.210 Still, I'd argue that life is harder for junior developers now than it perhaps ever has been.
00:01:01.820 So, there is some disconnect somewhere. What’s the issue? Are we lying, or do we secretly dislike mentorship?
00:01:08.820 I would assert that some of us do. There’s a prevalent idea among many developers that our skill lies not in Ruby or SQL or JavaScript.
00:01:19.680 Instead, our skill is that, given enough time, we can solve any problem independently.
00:01:30.869 So when we see other developers needing active mentorship to solve the same problems, it can feel almost offensive.
00:01:36.930 Thus, for those forming a mentorship program at your company, consider that this attitude might exist among your developers: the notion that they shouldn't need mentorship.
00:01:51.000 While this may represent a small minority, it’s essential to recognize that most of us simply don’t know how to mentor.
00:02:03.930 There's a hopeful assumption that mentorship skills are innate; as long as you've been in the field long enough and are good at your job, these skills will come naturally.
00:02:15.210 But that’s not the case—mentorship skills are not intuitive skills.
00:02:20.490 Sometimes the very things you believe are valuable for mentoring junior developers may be far from it. Given that these skills aren't intuitive, I thought it would be worthwhile to discuss concrete actions you can take to become a better mentor over time.
00:02:39.210 These aren’t value judgments—many of these tactics may not be useful for you at all. Some of you might find none of them useful.
00:02:51.750 So, you might feel tricked into being here, but since you are, let's dive in!
00:03:02.490 Ultimately, I hope you will consider these ideas critically rather than just accepting that mentorship is good and allowing that idea to simmer.
00:03:10.400 This passive reliance on the notion that valuing mentorship will make you better at it is about as useful as assuming you’re going to pick up new skills passively.
00:03:16.590 Every time you see a fun picture, that’s a tactic coming up! The first one is to encourage many questions being asked in whichever channels your team uses for queries.
00:03:34.350 I would suggest establishing a codified format for posing those questions. The pattern I have in mind is something implicit already.
00:03:41.760 You can ‘lint’ a question just as you would lint your Ruby, JSON, or any other code.
00:03:47.220 The most effective pattern I believe for asking questions is similar to those found in unit tests, which you probably expect, as they are part of every test you’ve ever written.
00:03:58.980 Codify it: write it down and let your team members know how we ask questions. For example: What are you trying to accomplish? Give me the steps.
00:04:12.200 What did you expect to happen, and then what actually happened? This isn't a revelation for most of you, I would assume.
00:04:20.160 The idea of enforcing a format for questions before answering has power.
00:04:25.410 Firstly, it enables the questioner to methodically understand their question. Why are they struggling? Now they have to spell it out.
00:04:30.600 Sometimes, they may even arrive at the answer before finishing their question.
00:04:39.210 Secondly, it gives you, the mentor or answerer, a way to assist without jumping straight to the answer.
00:04:45.780 You’re helping them formulate their question, which can often pose a challenge.
00:04:52.260 As you guide them through this process, you're being helpful and mentoring, without skipping to the end and giving them an easy answer.
00:05:05.610 Now as for slack usage, it's a bit controversial today, especially since we often find ourselves distracted.
00:05:14.820 However, if you're using a channel for frequent communication that allows private messages, I suggest a rule: you cannot have technical conversations in slack DMs.
00:05:20.820 If you have a technical question of some kind, put it in a public or team channel where everyone can see it.
00:05:26.039 Doing this has multiple benefits. Firstly, it exposes the maximum knowledge available, allowing painful issues to surface.
00:05:33.180 There's a good chance others have the same question, which can prevent redundant queries.
00:05:39.830 Secondly, for team leads or in leadership positions, you'll gain insight into the most frequently asked questions.
00:05:45.560 This can illuminate pain points worth addressing, whether through documentation or operational changes.
00:05:51.919 If you don’t enforce this rule, your more insecure developers, who need help the most, will reach out privately, preventing you from seeing their struggles.
00:05:58.280 There's a sentiment about stupid questions that’s so pervasive that you might predict it without my assistance.
00:06:03.960 This advice often serves to reassure newcomers in any industry. However, I would argue this is a misunderstanding.
00:06:10.760 Yes, there are indeed stupid questions, primarily because asking them can make the asker feel foolish.
00:06:19.660 This doesn't mean the question itself is inherently silly, but when someone feels they can't ask for fear of ridicule, it becomes an issue.
00:06:27.620 As humans, our egos play a role here. So instead of merely repeating that there are no stupid questions, we should provide a safe space for all questions.
00:06:36.330 Many people refrain from asking questions because the channels are not anonymous, especially for those they feel insecure about.
00:06:44.480 This can cause feelings of inadequacy, particularly when overhearing more experienced developers discuss technical matters.
00:06:51.000 To remedy this, consider how to create an outlet for questions.
00:06:58.440 Perhaps set up an anonymous forum or an IRC where developers can ask whatever questions they need without fear of judgment.
00:07:06.140 Train your developers on how to access Ruby on Rails channels to engage with developers who can help.
00:07:13.380 This creates a refuge where developers can seek assistance without the anxiety of being exposed.
00:07:20.220 Remember, your company isn't off the hook; that doesn't excuse creating a culture where people feel bad about asking questions.
00:07:27.640 But at the very least, it gives your developers an outlet when they struggle to muster the courage to ask more conventional questions.
00:07:36.320 Let’s adjust perspective on a misconception often held by senior developers.
00:07:41.340 Senior developers sometimes mistakenly think junior developers struggle due to a lack of programming knowledge.
00:07:50.350 When juniors and seniors collaborate, the seniors may assume their explanations should concern code or technicalities.
00:07:58.040 This misdiagnosis can be quite frustrating for junior developers as they may possess sufficient coding knowledge.
00:08:05.930 However, they often lack business knowledge and familiarity with tooling.
00:08:13.420 For instance, consider paths for resolving issues when the problem is code.
00:08:19.270 You can Google it, find Stack Overflow answers, or even use trial and error.
00:08:26.460 But when your issue lies in eight different classes and you understand them all, yet can't solve the problem, what do you do?
00:08:33.280 It becomes frustrating when you know a bug resulted from a form submission three months ago, yet you can't access the logs.
00:08:40.000 It feels as though you’ve learned what you need, but this additional intricate knowledge is what's holding you back.
00:08:48.710 Business acumen and tooling knowledge tend to reside in the minds of senior developers and are often opaque to junior developers.
00:08:56.090 This knowledge is why we’re often so desperate to retain our senior developers.
00:09:05.570 We recognize that while coding knowledge is critical, it’s also among the first skills one becomes proficient at.
00:09:13.010 However, there’s no magic solution to this ongoing issue.
00:09:20.580 But there are tactics that may help, the first being to consider removing or at least documenting the abstractions in your application.
00:09:27.440 New developers might not be familiar with anything beyond what is commonly referred to as the Rails way.
00:09:36.920 If your application is filled with patterns or abstractions that alter the typical way forms are handled, a new developer will quickly get frustrated.
00:09:45.180 For instance, telling a junior developer to add an update action to a crud resource might seem straightforward to you, but they may find that everything looks unfamiliar.
00:09:58.370 You might have a layer of abstraction in your application that drastically changes how ActiveRecord operates, and this was never communicated clearly.
00:10:02.900 As a result, the process becomes frustrating and fosters self-doubt in your junior developers.
00:10:10.340 These tools and patterns designed to ease the load for senior developers aren't inherently bad, but they require discussion.
00:10:17.900 If you decide to retain abstractions, at least make sure to educate new developers on the changes implemented.
00:10:25.620 Consider documenting your complex systems with domain-level documentation, making macro intent explicit.
00:10:33.440 While it’s easy for me to stand here and say you should document everything, I recognize it’s a daunting task.
00:10:40.340 Searching for the perfect structure can delay or even prevent documentation.
00:10:45.830 Instead, try recording screencasts as documentation. Take five minutes, explain the classes, and store the videos without worrying about organization.
00:10:58.430 Just focus on getting your thoughts recorded, and organizing them can come later.
00:11:05.850 Let your developers benefit from the equity of investing in their learning with pair programming.
00:11:11.450 Pair programming can be a great technique if it works; it can sometimes provide invaluable insights.
00:11:17.320 However, it may not always be practical, particularly if there's a large skill gap between developers.
00:11:26.660 In some cases, it might be more beneficial for a junior developer to spend time observing and absorbing information from the more experienced developer.
00:11:35.800 Allow junior developers to watch senior developers at work instead of forcing equal collaboration, especially if the gap is significant.
00:11:46.740 They can pick up skills in technical documentation usage, how to organize screens, and expert debugging processes.
00:11:53.050 Sometimes, experienced developers don’t realize how much they’ve internalized and may not have the awareness to teach it.
00:12:02.580 As junior developers sit next to them, they might notice insights through observation they would have missed otherwise.
00:12:14.720 Amidst most discussions on training and mentorship, it's essential to keep in mind what happens afterward.
00:12:25.730 Once you've leveled up your team, focus on retaining that talent.
00:12:36.390 These are big topics, so tactics for fostering a growth environment could fill an entire conference.
00:12:42.690 Nevertheless, consider affirming the hires that you made. The field we've chosen is challenging.
00:12:50.140 Every day, we tackle problems slightly beyond our abilities only to find solutions.
00:12:57.910 However, junior developers often face even steeper challenges, struggling with an overwhelming sense of self-doubt.
00:13:05.420 If you ignore this subtle fear and rely solely on body language, you’re overlooking part of the team dynamic.
00:13:11.530 In your one-on-ones with more insecure new hires, simply saying “you were a good hire” can make a significant difference.
00:13:22.730 Reassuring them that they belong within the team fosters an environment where they can thrive.
00:13:29.340 At the same time, actively combat their fears about being replaced by more competent individuals.
00:13:35.100 To illustrate a broader challenge, let me paint a picture: imagine a team of five developers, a boss, three experienced developers, and one new hire.
00:13:45.720 Typically, there’s a lot of chit-chat and sharing of jokes throughout the day.
00:13:53.740 Now imagine all three experienced developers feel comfortable engaging while the junior developer remains an outsider.
00:14:01.490 The junior developer might hesitate to join, fearing that enjoying the social aspect would reveal their struggles with productivity.
00:14:08.090 They might not want to appear as if they are slacking off, wanting to mirror the boss's ‘heads-down’ approach.
00:14:16.720 So how do we address this? Solid design around communication on your team.
00:14:23.060 Encouraging breaks, making it clear that downtime is part of the day's work is vital.
00:14:29.480 Some teams are naturally good at establishing this ethos, while others may need to explicitly communicate those expectations.
00:14:37.090 However, more importantly, if you, as a boss or manager, are working heads down, that sets the culture of the team.
00:14:45.290 Consider adding time to your calendar daily to engage with your team, take breaks together, and foster social bonds.
00:14:52.510 Investment time has garnered significant attention, and while I have an article that covers it in more detail, here's a quick overview.
00:14:59.470 Sometimes teams squander opportunities to maximize investment time.
00:15:06.390 Often, discussions center around types of extracurricular work.
00:15:12.860 Commonly, this notion revolves around lunches where someone shares a bit on frameworks.
00:15:19.450 However, developers don't need extra breadth; they are inundated with options already.
00:15:29.170 What they lack is depth in an efficient manner.
00:15:36.130 Instead of just enhancing knowledge margins, give developers a project that encourages depth.
00:15:41.450 Ideally, a lengthy project with open-ended goals offers them breathing room to navigate.
00:15:48.180 Let them have ownership of something, without senior developers hovering constantly; that's how depth is built.
00:15:57.060 By positioning the juniors in responsibilities normally reserved for more senior roles, they are positioned to grow.
00:16:05.160 Continuous effort toward empowering developers is essential if you want to keep them engaged and develop further.
00:16:15.100 Additionally, consider encouraging your team members to document their journeys. When one implements something new, they can share their story.
00:16:24.520 If one implements Elasticsearch in your application, for instance, they may write a blog post detailing their experience.
00:16:31.500 This process offers numerous benefits, forcing them to reflect on and digest what they learned.
00:16:38.240 Moreover, when more senior developers review these pieces, they can help point out gaps in the knowledge shared.
00:16:45.350 Ultimately, this can improve internal documentation and foster a stronger understanding of the frameworks being used.
00:16:52.440 Lastly, it's beneficial to facilitate growth in your developer's authority within the community.
00:17:02.940 Encourage speaking at conferences and writing tutorials; doing so builds personal brands and elevates your company’s perception.
00:17:12.260 The respect generated from sharing knowledge can elevate your company's profile in the tech industry.
00:17:20.150 Bear in mind: engineers are adept at discerning patterns. The way meetings are managed likely reflects experiences from past roles.
00:17:30.680 Therefore, if developers aspire to become tech leads, offer opportunities to observe meetings and grasp their mechanics.
00:17:37.460 This gradual exposure can propel them into mentorship roles effectively, allowing for a smoother transition.
00:17:44.650 At the end of the day, remember that this isn't about providing a playbook to enact mentorship.
00:17:55.560 Instead of seeking straight answers, ask your team what aspects might be beneficial for them.
00:18:01.970 Your junior developers are probably more competent than you realize; providing support while listening is key.
00:18:08.440 Neglecting to acknowledge their input can lead to confusion and frustration. Engaging with their queries only strengthens mentorship efforts.
00:18:19.340 Listening attentively will yield better outcomes for both the junior developers and the team as a whole.
00:18:29.390 In summary, implementing the tactics discussed can improve your mentorship effectiveness and serve your junior developers well.
00:18:36.080 With that, I'm looking forward to potential discussions on implementing some of these ideas.
00:18:43.570 Although I do not have a specific structure formed, I have a chart outlining the tactics I've discussed here.
00:18:50.830 Visit my website for the full table, where you can interactively see how these tactics correlate with their expected values.
00:18:57.290 As I conclude, I invite you to reflect on how these ideas could fit into your mentorship strategy moving forward.
00:19:05.930 Thank you, and if you have further questions feel free to tweet at me. I'm Sumeet Jain, Development Director at Unabridged Software.
00:19:15.160 We are based in Omaha, Nebraska. If you’re interested in hiring or consulting, let me know. I would be delighted to assist you.
00:19:22.070 That’s all I've got for today. Thank you!
Explore all talks recorded at RailsConf 2018
+98