Table of Contents
Introduction
Mentoring is a form of learning and development where a person with more experience (the mentor) provides guidance and support to another person (the mentee) with less experience. Through mentoring, the mentee acquires skills and knowledge that enable them to improve their professional performance and achieve their goals.
Mentoring is a common practice in many sectors, including the software industry. Software professionals often work on complex teams and projects, and mentoring can be a powerful tool for enhancing productivity, learning, and personal development.
The aim of this article is to provide some useful tips and practices that I have used in my day-to-day activities. These insights may serve as assistance for those who have been assigned as mentors to newcomers or for those who simply want to prepare for this, in my opinion, magnificent responsibility in the future.
1. Showing interest
There is nothing more important in software mentoring than the fact that when a mentee joins a project, they feel, in some way, a part of it. I’ve come across cases (it has happened to me as well) where someone joins a team and is simply assigned to take a couple of courses related to the technologies used in the project. After that, they receive no further follow-up or attention from the person who was supposedly their supervisor. This leads to a situation where the mentee doesn’t feel part of the team, loses interest in the project and their own learning process, and the chances of them wanting to leave the company increase exponentially.
Needless to say, the opposite is not good either. It’s not advisable to overwhelm the mentee by asking about their tasks every 10 minutes. This only adds extra pressure, which, in the early stages of a professional career and depending on the person, can be very difficult to manage.
Regarding this point, it’s also essential to note that, although there are many types of people, generally, when a person with little professional experience joins the team or starts being mentored, they might feel a bit shy or even embarrassed to ask questions, fearing they might waste their colleagues’ time. In this scenario, which is more common than one might think, the mentor has the “responsibility” to show interest in the mentee’s progress and state from time to time. By this, I don’t mean just assigning more tasks to their list to keep them busy. Simply approaching and asking how they are handling the task, if they have any issues, or if they need something to be explained again, the mentee already feels that at least someone on the team is interested in them and their training. This helps them feel integrated into the team and more motivated. And there’s nothing better than a motivated and united team for boosting productivity.
2. Putting yourself in the mentee’s shoes occasionally
This point is also very relevant and often overlooked when mentoring individuals with very little knowledge of programming in general or the tools used in the project. Due to the significant difference in knowledge and experience, when the mentor is trying to explain something that is trivial for them, they need to pause for a moment and think, “If I knew nothing about this and someone had to explain it to me, how would I like it to be done?” They must find a way to explain themselves in the simplest and most direct manner possible.
It’s quite unlikely that the mentee will grasp everything explained on the first try, even if they are putting in their maximum effort and attention. The inability to understand everything being explained can cause some distress or anxiety, which the mentor should not fuel but rather alleviate. The mentor needs to put themselves in the mentee’s shoes, understand how they feel, and embody, in my opinion, another key aspect of mentoring: PATIENCE. It is absolutely essential for the mentor to display a patient attitude, as this reduces pressure on the mentee, enabling them to progress more rapidly.
3. Challenging the mentee to reach their own conclusions
On many occasions, when the team is tight on time, and the mentee seeks help to solve a problem, the mentor often resolves the issue as quickly as possible without providing any explanation. While this practice is understandable because the mentor also needs to meet deadlines, it is flawed. Although it may work well in the short term as the mentee’s immediate problem is solved, it is entirely incompatible with effective learning. If the mentee does not receive an explanation of the problem’s origin, why it occurred, and how it was resolved, it is highly likely that the next time they encounter a similar issue, they will seek help again. While it is true that explaining the problem and its solution requires more time, in the medium and long term, the acquired knowledge will be more substantial.
Having said that, and from my perspective, it is also not entirely correct to simply provide an explanation and solve the problem or doubt. A practice I often employ with the people I have mentored, and find quite useful, is to offer hints so that the mentee can discover the answer to their question or problem on their own. This approach strikes a perfect balance between the time the mentor needs to assist and the achieved result. Moreover, these “challenges” maintain high motivation since the mentee ends up resolving their doubt or fixing the problem themselves.
Another positive aspect of challenging the mentee to draw their own conclusions is the learning journey they embark upon. As Thomas Edison once said, “I have not failed. I’ve just found 999 ways that do not work for making a lightbulb.” Applied to the programming realm, the time spent “struggling” with a problem is not wasted time but rather an opportunity to understand other aspects that may prove beneficial in the future when the same or a similar problem reappears.
4. If criticising, make it constructive
This point may seem very obvious, but it is not at all. No one is a perfect machine that never makes a mistake; we are human, so we all falter. When someone is starting on a project they are unfamiliar with or lacks much work experience, it’s quite common for that person to make various types of mistakes. To give an example that any developer can likely relate to, it’s very challenging in the early stages not to make a mistake with Git and wreak havoc in the repository where the project code is hosted.
If these mistakes are not addressed or resolved in the right way through effective mentoring, they can lead the mentee to lack self-confidence or feel pressure not to make a mistake again, which can actually have the opposite effect and exponentially increase the number of errors. No one should be judged for a couple of mistakes when they are learning.
In this regard, the mentor plays a crucial role, not only from a technical standpoint by providing a solution to the problem but also in their attitude toward the mentee and the mistake they made. Anyone can fix a simple error that has no consequences for the project without much trouble, but the real challenge, where a constructive and patient attitude is needed, is when the errors are more significant and could cause a delay. In these situations, the mentor should first explain to the mentee the cause of their mistake and then actively assist in resolving it.
If the mentee sees that, even after making a serious mistake, the mentor doesn’t constantly blame them, doesn’t have a destructive attitude, but instead helps them understand why they went wrong and how to avoid the same error in the future, it’s very likely that the number of mistakes will decrease in the short term.
5. Conducting follow-ups
Follow-ups in software mentoring should be used for the mentee to share with the mentor how they believe they are progressing in the project, how they feel within the team, what aspects of the mentoring process could be improved, etc.
There are various ways to conduct this type of meeting, but one I personally favor and learned from one of my mentors is the OneToOne. This type of meeting revolves around three questions between the mentor and the mentee, serving as a framework to discuss all necessary topics and ensure the conversation flows more smoothly.
The mentor initiates the first question, typically along the lines of “How do you feel?” This question aims to encourage the mentee to discuss their feelings about the learning process, the team, or their performance on the project. During this part of the meeting, the mentor can ask some simple questions to make it easier for the mentee to express themselves correctly.
The second question is directed to the mentor and is something like “How am I doing?” In this question, the mentor provides feedback on how they believe the mentee is progressing, areas or behaviours that could be improved, as well as strengths and weaknesses. Since it’s an informal discussion, detailed feedback is not necessary. Similarly, there’s no need to set very strict objectives or timelines; it suffices for the mentee to understand the areas where improvement is possible.
In the third question, although equally important, the mentor asks the mentee for feedback on their own performance. This part can be challenging for many people, as it’s not easy to tell someone with more experience about areas for improvement or behaviours to change. Nevertheless, it plays a crucial role in the meeting, as the mentee feels their opinion is heard and valued.
6. Prepare additional resources
As a general rule, when someone is assigned as a mentor, it’s because they have already faced certain challenges and encountered more common and recurring problems in the world of software. Who hasn’t spent days trying to solve an error related to the programming language being used, searching for the best way to implement a design using CSS, or learning the optimal way to deploy an application in production?
At this point, to minimize the mentee getting stuck on the same issues and wasting a lot of time, the mentor can provide them with some carefully selected resources to facilitate problem-solving or serve as a reference guide. By this, I’m not suggesting overwhelming them with useless courses they won’t benefit from or complete. Instead, it could be a list of articles serving as a reference for specific implementations or the famous “cheatsheets” that condense essential aspects of a programming language into a concise format.
Another very interesting aspect that can help the mentee is for the mentor to prepare a series of tutorials or best practice guides related to the project. These resources can be consulted at any time, saving hours of searching on the internet.
7. Encourage the mentee to ask questions and debate
Many individuals feel a certain level of hesitation when it comes to asking questions or presenting their ideas in a team setting. This is not exclusive to those with little experience, as individual personality traits also play a role. More introverted or shy individuals may find it challenging to share their opinions in front of others.
Undoubtedly, this behaviour complicates the mentee’s integration into the team, making it more difficult to consider their opinions or provide assistance when they encounter issues. Therefore, the mentor should strive to encourage the mentee’s participation in team meetings and convey that they can seek help from any team member.
A good way to stimulate participation is for the mentor to ask for the mentee’s opinion during a meeting on a topic they are familiar with and can contribute to. For example, if the team is in the midst of a technical discussion about the best implementation of an algorithm, the mentee can share their ideas or perspective.
Another useful practice in mentoring is to allow the mentee to “lead” a couple of meetings or conduct a simple presentation for their colleagues. This gradually diminishes the fear of participating and debating, fostering a team environment where each member can express their opinions, debates can lead to finding the best solutions, and no one feels excluded for being unable to articulate their ideas.
Ultimately, the goal is to increase the mentee’s proactivity, and to achieve this, the mentor must also demonstrate enough proactivity to find the right way for the mentee to feel part of the team and not be afraid to ask questions and engage in discussions.
Conclusion on software mentoring
During my time at Novatec, I’ve experienced the implementation of many mentoring-related practices in our daily work. One role that has particularly intrigued me and is relatively uncommon is the role of Feel Good Manager. I see it as an indispensable figure in keeping team members motivated and maintaining a positive atmosphere.
In conclusion, effective mentoring in the field of software is crucial for the growth and development of professionals. By following these 7 keys, both mentors and mentees can establish strong and effective relationships that enable them to achieve their goals. Communication, empathy, and commitment are fundamental to success in the mentoring process.
Originally published on https://www.thecoderoom.dev/blog/effective-mentoring/
Check more content