Being a good mentor – a developers guide

Thanks for reading this issue. For everyone who joined recently: this is a very subjective newsletter about all things surrounding engineering management / CTO daily life.

I'm grateful for the 95 new subscribers that joined since the last issue.

Share this article with your friends, here's a link.

For anyone who has TikTok, I've just recently started sharing short bits of experience in the form of 1min videos, so if that's your type of content — @justAnotherCTO.

Previous issue about Proper Documentation has brought in quite a few good emails, and someone bought me coffee for the first time, really thankful.


Being a good mentor

Let’s talk about the process where the experienced welcome the inexperienced under their wing and illuminate the path ahead. I’ve worn many hats over the years — mentor and mentee are one of them. I've seen the good, the bad, the ugly, and let me tell you - it's mostly good. Not implying in any way that I’m the best mentor to software developers, I just learned a thing or two over the course of my career, that I think will be useful to people who want to start mentoring.

You may be wondering "Isn't mentoring just another buzzword tossed around in the corporate world?" Here's the thing — it is, and it isn’t. Mentoring is an integral part of personal and professional growth, both for the mentor and the mentee. In my opinion, it's the secret sauce that differentiates successful teams and individuals from the rest.

Of course, when you and your mentor are doing it out of sheer responsibility to the corporate mantra — there’s not going to be much result. And it won't be fun for either of you.

I’ve had the privilege of mentoring some incredibly talented individuals. Watching them grow and succeed is akin to nurturing a seed into a tree and seeing it bear fruit. It’s a good feeling. I have seen firsthand how the power of mentorship can shape careers, change mindsets and adapt life trajectories overall, LinkedIn reminds me of them on a weekly basis, as I'm still connected to many of them.

Before we delve any deeper, let's talk about what mentorship actually is.

🏄
Mentorship is not a one-sided information dump where the mentor bestows their infinite wisdom upon the mentee. That’s called a university. Mentorship is a win-win partnership of sorts where both parties benefit. It's about sharing experiences, insights, failures, victories, and even insecurities.

Mentorship can be either formal or informal. Formal mentorship usually takes place within a structured program in an organization e.g. some training program where where the pairing and goals are explicitly defined. You might think of it like a corporate blind date where you are paired with an eager beaver looking to learn from your experiences. It's like being handed a well defined manual that can be summarized as "Help this person grow."

On the flip side, informal mentorship is a bit more organic. It's that relationship you build with a junior colleague over coffee breaks, where you find yourself sharing advice, guiding them through problems, and lending an empathetic ear. There's no handbook here, just two people growing together. When you seek out a professional mentor — it’s also going to be mostly informal, who’s job will be to guide you as a more experience uncle.

So why should you, as a seasoned software developer, become a mentor?

Picture this: you are contributing to the growth of another developer, helping them avoid the pitfalls you've encountered, and accelerating their learning process. That’s huge impact right there! It’s already something to be proud of. But there's more. In guiding others, you also develop your own leadership and communication skills, and gain fresh perspectives for the problems that YOU’RE facing. It's a win-win. Not to mention that this young developer might grow crazy fast, eventually outgrowing you, and they in return will share their insights with you.

So now that we’ve set the stage, let’s delve deeper into mentorship.

Establishing the Foundation

Before we talk about how to be an excellent mentor, we must establish the basics. A mentor-mentee relationship, just like any good relationship, needs a sturdy foundation. This is where you set the ground rules, expectations, and define the scope of your interaction. Trust me; you don't want to jump into this without a solid plan. That’s like trying to construct a building without blueprints - spoiler alert, it's not going to end well.

Let’s consider that you’re dealing with a new employee who is as green as it gets and it's your job to get them up to speed. Talk about a challenge, huh? But hey, that's why you're here. You're not just any engineering manager; you're a mentor in the making!

Even though we’re focusing on the “new employee joining the company” scenario, the steps are the same for any other initial mentoring setup. These topics usually take the first two meetings:

  1. Introduction and Building Trust
  2. Setting Boundaries and Expecations
  3. Defining Goals

Step 1: Build Trust

Remember your first day on the job? I bet it was a mixed bag of excitement, anxiety, and confusion. It's no different for your mentee. Make them feel welcome and comfortable. Start by sharing a bit about yourself, your role, and your journey. Encourage them to do the same. This isn't just a formal introduction; it's an invitation to open communication. It's your first step in building trust and rapport. The goal for this meeting is to understand where they’re coming from, why are they here, what drives them.

Here’s an example of how the first interaction can go:

  1. Introduce yourself and invite the mentee for a cup of coffee.
  2. Go somewhere not too loud so you can talk freely.
  3. Share your own journey, talk about the bumps that you hit along the way
  4. Talk about the day-to-day realities, be transparent and honest. Mention some early mistakes that you made to make it easier to share their own mistakes.
  5. Encourage them to share their own story, their aspirations, their fears.
  6. From this point onward — your job is to listen and ask follow-up questions.
  7. After and hour or an hour and a half — it’s time to wrap it up and decide on the next meeting date where you will go deeper into the expectations.

Step 2: Set Boundaries and Expectations.

Here’s where you lay your cards on the table. Be clear about what your role as a mentor entails and what it doesn't. Clear boundaries. Yes, you're here to guide them, but no, you're not their personal problem solver. Encourage them to take initiative and reassure them that it's okay to make mistakes. That's how we learn. Also, discuss their expectations from this relationship and your expectations of them as a mentee.

Here’s an example of which questions you can ask to keep everything transparent:

  1. If your expectation of the mentee is that you will give them homework and they are responsible for doing it — tell that upfront.  The rules of engagement need to be defined and discussed upfront.
  2. Clear up what they hope to gain from this relationship? Is it something you’re comfortable with and can help with?
  3. How can you best assist them?

Step 3: Establish Goals and a Plan.

With trust established, boundaries defined, expectations clarified, it's time to get down to business. Together, define some clear, achievable goals. This gives the mentorship direction and purpose. Then, draft a rough outline how you can reach these goals together and agree on a timeline. It's like your mentorship GPS; it guides your journey and keeps you on track. Nobody is going to die if the timeline is not achieved, but as “the work expands to fill the time allotted for its completion”, so it’s good to set some limits.

Also a quick note on flexibility: while goals are essential, they aren't set in stone. They are more like guiding principles that can and should evolve with time. As the Chinese philosopher Lao Tzu wisely said, "A good traveler has no fixed plans and is not intent on arriving." Be prepared to adapt and change as your mentee grows.

Some more things to read about onboarding:

  1. Harvard Business Review - Focusing on the Whole Person
  2. Mentoring Staff Engineers - Radical candor and actionable feedback

The Art of Guidance

So, you've successfully set the stage, and now, you're ready to navigate through the exciting world of mentorship. Remember, as a mentor, you're like a seasoned captain steering a ship through the sometimes tumultuous, but always thrilling, waters of professional growth. It's time to hoist the sails, my friend.

Now, you might be asking, "What the hell does 'navigating the mentorship journey' even mean?" Good question, and I'm glad you're paying attention. It's about effectively guiding your mentee through their challenges, aiding them in their professional growth, and giving them the right tools at the right time to become self-sufficient. And remember, this is about nurturing talent at local scale. We aren’t talking about becoming a global mentorship figure, we’ll leave that for others who want the grandeur. This is you doing your bit to ensure your company is filled with self-reliant, competent people.

So, let's break down the art of guidance into single steps:

Step 1: Encourage Self-Reliance

You’re not there to spoon-feed answers. Yes, you have answers. Hell, you probably have answers to questions they haven’t even thought of yet, but resist the temptation to give them out like candy on Halloween. The goal here is to make them capable of finding their own solutions. Foster curiosity, encourage them to ask questions, and guide them to find answers themselves. It's like teaching someone to fish instead of just giving them a fish. You know the saying.

I remember there was this junior dev who had recently joined my team. A bright kid with a strong foundation, but somewhat prone to anxiety when problems arose that were outside his realm of experience. One day after daily, he came to me looking like a deer caught in the headlights, fretting over some bug that he found. He showed me the problem, he looked at me expectantly. I knew it, I had this bug many times in the past. He was waiting for me to solve it - it would have taken me just a couple of minutes.

But instead, I started asking him a series of leading questions. We navigated through the code together, discussing the WHY behind each line. I watched as he slowly saw through the mess, his initial panic giving way to focused concentration. When he finally found the bug, the look on his face was priceless - a mix of relief, pride, and newfound confidence. By guiding him instead of giving him the answer outright, I helped him learn to trust in his own problem-solving skills. It wasn't just about that one bug; I was empowering him to handle the thousands of bugs that his career would inevitably throw his way. Everything can be solved.

Step 2: Provide Constructive Feedback

Feedback is a tricky beast. It's necessary for growth, but it can also be a tough pill to swallow. The key here is to make your feedback constructive, specific, and balanced. Don’t just point out what's wrong; provide guidance on how to make it right. And remember to acknowledge what they're doing well. People aren’t just looking for a critique of their performance; they’re looking for acknowledgment of their efforts.

I recall when one of my mentees, was struggling with code optimization. His solutions worked, but they were far from efficient. Instead of bluntly telling him his code was suboptimal, I decided to review a piece of his code with him, line by line.

I started with, "I appreciate how you’ve tackled this problem, and your code is technically correct. But let’s consider its performance." I again started with leading questions regarding different data structures that would be better suitable for this use case and different ways to build it that might be better. By focusing on the issue in a hands-on, collaborative manner, they weren’t left feeling criticized; instead, they walked away with a better understanding and new strategies to apply in the future.

There are many good guides written on how to give constructive criticism to others, I’m not going to reiterate them here, but will give you some links for reading:

  1. Delivering constructive feedback — Empathy and non-violent communication
  2. Radical candor — just recently learned that's a trademark, but still good approach.

Step 3: Encourage Transparency

Your mentee needs to feel comfortable sharing their struggles, doubts, and even their small victories with you. It's your job to cultivate an environment where openness is encouraged, and fears of judgment are squashed. This is not only about them being honest with you, but you being honest with them. No blaming, just growth!

I remember a situation I had with one of my junior devs, where seemed unusually quiet during our one-on-one. Sensing something was off, and anticipating that they did some mistake. I shared my own tale of a time when a deployment that I did went completely wrong and had nearly cost the company a major client. I let him know we all make mistakes, and that it's part of the learning process, so they should just tell me what’s up and we work from there. He confessed he might’ve misunderstood the task and wasted a week worth of time building the wrong thing. Our conversation turned into us discussing how asking questions is crucial to understanding and the dailies that we have are used to make sure we’re all the same page and building the right things.

Step 4: Promote Continuous Learning

The tech world is always evolving. New languages, new frameworks, new methodologies, it's a never-ending roller coaster ride. Encourage your mentee to stay on top of trends and to continually expand their skillset. Not only will this make them a more valuable asset to your company, but it also ensures they have a long, successful career ahead of them.

I don’t have a story for this step — but I lead by example, I enjoy tinkering with new frameworks and building side-projects with some weird new technologies that are still in the alpha stage. But it keeps me up-to-date with the direction the technology is evolving. I mean why shouldn’t you try an integrate ChatGPT into your side-project, just to push it to the limit and see what it does. It’s fun.

Step 5: Ask the Right Questions

Coaching is an industry, there are books written about how to coach someone properly. Coaching is mostly about asking the right questions. This isn't about spoon-feeding answers. Nope. It's about helping your mentee to think, to analyze, to problem-solve. Think of yourself as their mental gym trainer. You're there to guide their mental workout, not to do their reps for them.

That's where coaching techniques come in. The most powerful tool in your coaching toolbox? The right questions. Instead of telling your mentee what to do, guide them to find the answer. For instance, if they're stuck on a coding problem, don't just solve it for them. Ask questions that provoke thought and stimulate problem-solving. Questions like, "What do you think is causing this bug?" or "How can we break this complex problem down into smaller, manageable tasks?"

By asking the right questions, you're not only helping them to think through the problem, you're also teaching them how to approach similar problems in the future. Remember, the goal isn't just to solve the problem at hand, but to enhance their critical thinking and problem-solving abilities.

I’m going to give you some references to learn more about the coaching approach:

  1. Coaching Advice - I coached 101 CEOs, founders, VCs and other executives in 2019: These are the biggest takeaways. Also the comments are good
  2. Developers mentoring other developers — practices Gergely Orosz seen work well.

Step 6: Sharing Personal Stories

Being a mentor isn't just about sharing knowledge or skills. It's about sharing your own journey. There's something incredibly powerful about the narrative. Stories can inspire, they can illustrate, they can caution, they can comfort.

📚
You've been in their shoes. You've faced similar challenges, made mistakes, experienced successes. And by sharing these experiences, you're not just imparting wisdom, you're showing them they're not alone — others have walked this path before and that they too can navigate it successfully and come out on top.

For instance, if your mentee is struggling with impostor syndrome, share your own experience. How you felt when you first started, how you dealt with it, and how you overcame it. This reassures them that it's a common feeling, that it's okay to feel this way, and that it can be overcome.

But remember, it's not about glorifying your journey or boasting about your successes. It's about being honest, being humble, and showing them that every journey, including yours, has its ups and downs. Your stories are not just lessons, they're also symbols of empathy and understanding.

Together, coaching techniques and storytelling make for a potent combination in your mentoring toolkit. The former sharpens their mind, the latter touches their heart. And when you guide both their mind and heart, you're not just mentoring them, you're empowering them to be the greater version of themselves.

That's your job as a mentor: to guide, to steer, to inspire.

The Feedback Loop

Alright, we've been through the who, the what, and the how. Now let's chat about the feedback loop. "Feedback loop?" I hear you. "Isn’t that some scientific thingy?" Well, yes and no. It’s also a critical component of your journey as a mentor. If you don’t know whether you’re doing a damn good job or messing up, you can't adjust, can you?

First off, to measure the success of your mentorship, you need some concrete yardsticks. So how do you measure that you’re doing a good job?

Measure yourself by objectives

We’ve talked about this above but, having clear goals at the outset of the mentorship relationship is vital. It’s like having a roadmap. You wouldn’t set off on a road trip without knowing where you're going, would you? If the goals are measurable — you can also measure if you’re doing good as a mentor. The goals are getting achieve — that’s progress right there.

Here are some example of achievable, measurable goals that you can set with your mentee:

  1. Gain the ability to independently handle a full development cycle—from understanding the requirements, designing a solution, coding, testing, to deployment—within the first year. Measurable in the ticketing system.
  2. Enhance soft skills such as effective communication, teamwork, and time management to foster a smooth workflow within the team. Measurable by peer evaluations.
  3. Understand the DevOps culture and add fixes to the CI/CD pipelines and deploy to the cloud services we use (e.g., AWS, Docker, Kubernetes) in 6 months. Measurable with git.
  4. Contribute to improving the scalability and performance of our SaaS product. Measurable with analytics tools.

Do Regular Check-ins

Don't wait for an annual review to find out how you're doing. Have regular, candid chats with your mentee about their progress and how they feel about your guidance. It's like getting your oil checked periodically instead of waiting for your engine to seize up.

Here are some questions that you can ask periodically:

  1. Do you feel the guidance I'm providing is helping you?
  2. Do you feel you're growing professionally and gaining the skills you aimed for at the start of this mentorship?
  3. Is there something I haven't provided that you think would be beneficial?
  4. Are you satisfied with the progress you're making towards your goals?

Look for tangible improvements

As a mentor, you want to cultivate holistic growth, not just progress in a specific area. So, while you track the pre-established targets, it's crucial to watch for subtle indicators of growth and improvement that may not be directly related to those goals. These signs tell you that your mentee is not just absorbing specific knowledge, but also expanding their overall skill set and professional persona. Is your mentee growing in their role? Are they taking on more responsibilities, solving problems faster, showing better understanding of complex concepts? These are all signs your mentorship is paying off. If it isn't, it’s time to revisit your approach.

Look for things like:

  1. The mentee begins to handle more complex coding tasks independently.
  2. There's an increase in the mentee's participation in team meetings and discussions.
  3. The mentee begins to suggest meaningful enhancements or features to the product, showing deeper understanding.
  4. The mentee starts taking initiative in troubleshooting technical issues, showing increased self-reliance.
  5. They start to take ownership of small projects or components within the SaaS product, showing increased responsibility.
  6. The mentee is able to articulate technical concepts and communicate them effectively to the team, showing improved communication skills.

Seek feedback from others

If possible, don’t just rely on your perception or your mentee's feedback. Look around. What are others saying? Is there a noticeable improvement in team dynamics, project delivery, innovation? Like it or not, perception matters.

There was a time when I was mentoring a promising yet shy junior developer, the goal of our mentorship was to boost his confidence in their own skills. Our one-on-one sessions seemed productive, and he was showing a lot of improvement. But, to get a fuller picture, I decided to seek feedback from his project manager. She mentioned that this shy developer, who previously hesitated to voice his ideas in meetings, had begun to share insightful suggestions and had even come up with a creative solution that significantly improved the user interface of one of our products. It was great to know that our mentorship sessions were positively affecting the team.

Be open to criticism

This is perhaps the toughest part. Nobody likes hearing they could be doing better, especially when they're putting in sincere effort. But, it's necessary. Embrace it like you would an annoying relative: with patience and a bit of humor. When your mentee suggests ways you could improve your mentoring, it's not a personal attack. It's an opportunity for growth, a chance for you to become a better guide. So, take it in stride, and most importantly, act on it. Because when it comes to mentorship, your willingness to improve directly impacts your mentee's growth.

Remember, being a mentor is a continuous learning process. There's no one-size-fits-all, no magic formula, no foolproof plan. But if you're patient, persistent, and open to learning, you'll become the mentor your mentees need. And in the process, you'll grow, too.

Adjusting Style Based on Context

One size does not fit all. Hell no. This isn't some shrink-to-fit pair of jeans we're talking about. This is people - real, complex, constantly evolving human beings  - developers with their own quirks, strengths, weaknesses, and peculiar 3 a.m. debugging habits.

The same rules apply to mentorship in this space. The approach you used with Alex, the seasoned Java guru, won't work with Kim, the recent grad who's eager to understand how to deploy microservices on Kubernetes. It's not rocket science; they're different people with varying experiences and learning styles.

Here's the catch - successful mentorship is about being as adaptable as a chameleon on a rainbow. No, it's not easy. It's about as simple as untangling earphones left in your pocket for a week. But here are some steps that should take the edge off:

Step 1: Decode their Learning Style. Maybe they’re an auditory learner who picks things up better on podcasts and discussions. Or perhaps they prefer visually working through problems on a whiteboard. Maybe reading code on GitHub is their jam. Tailor your style to suit theirs.

Step 2: Know their Technical Strengths and Weaknesses. If they can code complex algorithms but struggle with system architecture, there's your cue. Personalize your sessions to build on their strengths and work on their weaknesses.

Here are some examples of strength vs weaknesses:

⚠️
Strength: Excellent at Python coding and can develop complex algorithms.
Weakness: Struggles with integrating these algorithms into the broader system architecture.
⚠️
Strength: Strong understanding of front-end development, capable of crafting highly responsive and visually appealing user interfaces using React.js.
Weakness: Lacks knowledge in backend development and struggles with understanding API design and database schema.
⚠️
Strength: Proficient in unit testing, always ensuring individual components of the codebase are functioning as expected.
Weakness: Lacks experience with end-to-end testing and struggles with creating comprehensive testing plans for larger systems.

Step 3: Consider the Context. Let's say your mentee is currently grappling with an API integration with a third-party service. Maybe they're finding the API documentation to be as readable as hieroglyphics, or they're struggling with setting up the correct request headers. In this case, an abstract lesson on big O notation or recursion won't help them. Instead, a hands-on session on APIs and how they work would be much more beneficial.

And what if they're part of a cross-functional team for the first time, trying to navigate the stormy waters of collaboration with product managers, designers, data analysts, and the like? Suddenly, it's not just about writing elegant code anymore. Now they need to understand how to communicate effectively, how to prioritize tasks, how to manage their time.

💡
Remember, mentorship isn't about following a rigid curriculum. It's about providing the right guidance at the right time.

Step 5: Stay on Top of Industry Trends. Whether it's the latest Agile methodology, the newest JavaScript framework, or the recent updates in AWS services, be informed. Great mentors are perpetual learners, continually evolving. Being informed about industry trends also helps your mentee make better career choices. Suppose they're a Python developer and are considering whether to learn Rust. You, keeping abreast of industry trends, might be aware that Rust has been gaining popularity for system-level programming due to its memory safety features without compromising performance. Your insights could help your mentee make an informed decision.

But remember, it's not a race to learn everything that's new. No one can do that, and no one expects you to.

In a nutshell, effective mentorship requires you to be as versatile as the very software you're developing. Some days, you're a teacher, a debugging partner, or an agile coach. Other days, you're their sounding board, helping them navigate the unique challenges of low-level development.

Here's some more reading material that I highly recommend:

  1. Strategies to mentor junior developers
  2. Mentoring from privilege
  3. How to Be a Career-Changing Mentor

Conclusion

Let’s bring this all together. Being a mentor isn't for the faint of heart. It's a role of responsibility, requiring patience, tact, empathy, and resilience. But it's also a role of immense reward, filled with the opportunity to shape the future leaders of the tech world. You get to pass on your hard-earned wisdom, and in the process, you're forced to grow and evolve yourself. It's the ultimate win-win situation.

I think the main rule is — you've got to refrain from being a dickhead. And yeah, I know, it's a blunt term, but it's worth stating explicitly. You've got to let your ego take the backseat. This isn't about showing off how much you know, or wielding power, or making your mentee feel small. It's about lifting them up, encouraging them, and helping them become the best version of themselves.

Listen more than you talk, provide advice gently and considerately, celebrate their wins, support them during losses, and remember – it’s not about you, it’s about them. You’re not just teaching a software engineer, but a future mentor who will carry on the same values.

So, rise up to the challenge. Choose to be a mentor. Shape the future, one mentee at a time. It’s a rocky journey, but it’s worth every moment when you see your mentee shine. In the end, mentorship is not about producing a mirror image of yourself. It's about fostering an environment where the unique, individual talent of your mentee can bloom.

Cheers,
Vadim

← What does a CTO actually do?
Proper Documentation →

Subscribe to Just Another CTO

Subscribe to the newsletter and unlock access to member-only content.