loading...
Cover image for How To Be A Good Software Engineer Mentor

How To Be A Good Software Engineer Mentor

flippedcoding profile image Milecia McG Updated on ・5 min read

Mentoring is one of the best ways to help junior developers grow their skills. As a mid-level or senior developer, it's up to you to decide what kind of mentor you want to be. The most important thing to keep in mind as a mentor is that it's not about you. It's not about your experience or how eloquently you can write code.

Your goal as a mentor should be to help the junior dev understand more than code. They can read about that. You need to show them the other things that you only get from experience. Here are a few things you can do to be a good web developer mentor.

Explain the business side and their decisions

Writing code usually isn't the hard part. The hard part can be understanding what the business side wants. When you have a meeting with clients or product managers, have your junior dev sit in or take a few minutes afterwards to explain what happened. They need to know where their tasks come from and how they get created. Helping them understand the business side gives them more context as they work through tasks.

Also make sure you cover the business logic as they dive into their tasks. Explain how the application currently works with a quick demo. That way they know how to get to certain screens or why we handle user input particular ways. A brief overview of the decisions that went into the functionality of the app will always help junior devs learn how to understand applications as a whole instead of just the code.

Talk about why we write code a certain way during code reviews

A good code review covers best practices regardless of the developer's experience level. With junior developers in particular, you never want to skip this. If you see something they did that works but it's written poorly, walk them through the best practices so they know how to write better code next time. Also explain to them some of the code decisions made by the team. It helps give them perspective on how applications grow and reach their current states.

This is a great time to decode the jargon we use. As you talk through best practices and code stuff in general, define the jargon you use. It takes a while to pick up on all the terms and a lot of junior devs try to pick up meanings from context clues. Skip all of the confused looks and half-hearted "oks" by telling them what an interface is or how a repository works. It'll give them a much deeper understanding of the core concepts instead of language specific stuff.

Take opportunities to highlight career growth

Over the years, you've probably had different roles as a developer. You know what it takes to do things like DevOps or front-end development. When you're working with your junior dev, highlight some of these things. If you see your junior dev is picking up SQL queries faster than anything else, introduce them to database administration and tell them what all they would need to learn. Show them as many opportunities as you can because it will help them navigate through their careers.

When you show them all the options they have and tell them how to approach those opportunities, you set them up for a more successful career in the long run. They can start to think about where they want to specialize and how they can go about doing so. This gives them motivation to keep trying new things. As they try new things, they become a well-rounded developer which increases the quality of everything they do.

Let them finish their thoughts before you tell them the "right" way

When you get close to the end of a sprint and you know you need to finish in a hurry, resist the urge to block out the junior developer. This is one of the best teaching moments because it forces them to think fast and critically and it teaches them how to commit to decisions. Even if it's a difficult problem you aren't sure of, let them take a stab at it. It helps them to think past the surface level of code and deeper into the core of the application.

Give them a chance to tell you what they're thinking before you jump in and save the day. When you cut them off, it makes them feel like you don't care what they have to say or what they have been thinking about. While that may be true, it doesn't help them grow if you take over every time things get hard. Let them know that you listen to them and if they don't get it quite right, explain to them why and what you're going to do instead.

Talk through your process when you are writing code with them

At some point in your career, you've sat are someone's desk and watched them code. To make this useful (and not completely boring) for your junior dev, talk through your thought process. Watching you write code in silence might help a little, but when you give them insight to your thought process behind the code you write you really teach them something. They start to see how you connect the pieces and why you write code the way you do.

Once you've done this a few times, switch roles and have them do the same. If you notice they aren't using a concept like inheritance correctly, let them know. By listening to their thought process you can help steer them in the right direction. Getting junior devs to talk out loud also makes them more aware of what they're thinking about so they don't mindlessly write code.

Being a good mentor doesn't have to take a lot of time either. If you can spend even 30 minutes a day doing one of these things, you've just helped your junior dev in five different ways in a week. As you do this you'll start to see their skills grow and their confidence increase. I'm sure you remember finding out how much you didn't know as a junior dev. Be that resource you wish you knew about.

One of the best things about the web development community is how willing most people are to share their knowledge. Let's keep that going! I've never met a group of people online who are so supportive! Is there anything you would add to this list?


Hey! You should follow me on Twitter because reasons: https://twitter.com/FlippedCoding

Discussion

pic
Editor guide
Collapse
mcales7785 profile image
Maria Calestino

Can you recommend any mentors?

Collapse
flippedcoding profile image
Milecia McG Author

I can't really recommend any mentors. Finding a good one is rough! But you can try asking people that do work you like if they would mind mentoring you. That's how I found all of my mentors. And not to be pitchy, but I also mentor code newbies. ☺

Collapse
emmabostian profile image
Emma Bostian ✨

You should both check out Coding Coach! :) I built it for this reason! codingcoach.io!

Collapse
hussein_cheayto profile image
Collapse
ericadamski profile image
Eric

Dm me! I'd love to help you!

Collapse
bbessa profile image
Bernardo Bessa

A "young" fellow should have the space for skepticism. To do even the most stupid questions when he/she feels doubts. With failure comes the experience to decide and to discuss.
As a junior software engineer (with 3 years of experience), I think these bullets are very interesting. Just some improvement to the post would be considering not only the focus on coding, but other areas in software engineering (as requirements engineering, architecture, etc.)

Collapse
graciano profile image
graciano codes

Let them finish their thoughts before you tell them the "right" way

I really need to read that. In my experience, this is the most diffitult thing to remember, because sometimes you're too worried with deadlines and other things. And maybe if you identify what exactly is the difficulty with the jr dev, by adressing that, you can actually deliver things faster and with more quality.

Collapse
emmabostian profile image
Emma Bostian ✨

This is great!

Collapse
flippedcoding profile image
Milecia McG Author

Thanks Emma! I saw you're speaking at React Boston and so am I! It'll be awesome to meet you because I follow a lot of your writing!

Collapse
niconicozerpa profile image
Nicolás L Zerpa

This is exactly what I needed! Thank you so much, Milecia.

Collapse
gerbosan profile image
Carlos A.

Thanks a lot.
Now I see why I failed in my pair-programming. =S

Collapse
teotcd profile image
JedDevs

Amazing Post!

Collapse
hussein_cheayto profile image
hussein cheayto

If you want to become a mentor or find a mentor, check out here