Youssef Ameachaq's Blog

Youssef Ameachaq

Mentor new junior software engineers


Introduction

During my first years as a software engineer, I had the privilege of working with some good mentors in various companies. They taught me how to produce clean code, envision the application’s direction, and consider other technical aspects of the project. However, I noticed that each mentor had a unique way of collaborating with juniors. Some were good communicators, while others struggled 😬. Some knew how to give constructive feedback, while others didn’t (I had a tough experience with one). Nonetheless, finding a mentor as a junior software engineer is crucial before and when joining a new team.

Before we start

Within companies, mentors are usually called by different titles depending on the company’s structure. Some companies may refer to them as “staff engineers” while others may call them software architects. I worked with a small company where the mentor was the CTO. However you can usually identify the mentor in your team by just how stakeholders or managers refer to them or by their involvement in future features, new studies, or technical decisions.

Your main goal as a mentor

As a software engineer mentor, your primary objective is to provide guidance and support to aspiring developers. By sharing your own successes and failures, you enable juniors to learn from real-world situations and challenges. You impart practical knowledge and insights, helping them build a strong foundation in software engineering and navigate the complexities of the industry more effectively.

One of your key roles is to help them make informed design decisions. Encouraging critical thinking and exposing them to different design patterns and architectural principles, you empower them to make well-considered choices when developing software solutions. Through collaborative discussions and code reviews, you help them understand the implications of their design decisions, fostering a deeper understanding of software development practices and a sense of ownership and responsibility for the code they produce.

Communicate the business value

As a mentor, one of your most important responsibilities is to communicate the business value of your project to the junior developers and explain how it impacts users’ lives. While it is crucial to ensure that your team members have the technical skills required to produce code that solves problems, it is equally important to help them see the big-picture of the project’s end goals, value, and user appeal. By doing so, you will help them become better equipped to tackle complex challenges.

It is also worth noting that the final client is the ultimate judge of the developer’s work. As a mentor, you can guide your team members in their work, but it is ultimately up to the client to determine whether the project meets their needs and expectations. Therefore, it is important to keep the client’s perspective in mind when working with your team and to ensure that the project is aligned with their goals and objectives.

In order to clarify these important aspects, you need to be confident in your own understanding of the business value and user appeal of the project. This means taking the time to understand user needs and preferences, and sometimes analyze the competition (Oh yeah! I’m serious) in order to guide your team members and ensure that they are working towards a common goal.

The magic of the recognition

The motivation aspect and recognition are absolutely crucial skills for a mentor. When a junior successfully achieves a challenge, it’s essential to give them the well-deserved credit in front of the stakeholders. You cannot imagine how much this can motivate them and transform them into 10x developers!

Conclusion

In conclusion, as a mentor for new junior developer, your mission is to empower and guide them, fostering an environment of growth and learning. Communicating the business value of their work and giving them due recognition for their achievements can significantly motivate and inspire them to become exceptional developers.