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!