I have not always worked at large scale companies such as Taboola. I have started my career in a small startup, where I was a full stack developer in a student role. As a first time developer, it was very important that I will be teamed-up with someone more experienced to learn from.
Lucky for me, I was the only employee, working under the two founders – the CEO and CTO. Having a lot of one-on-one time with the CTO, working closely on bugs and features and discussing ideas, helped me improve my skills as a developer.
Today, when I have more experience, I know how important it is to influence others who work with you. I try to spread the knowledge I have earned in the last few years, and help new and old employees as much as I can.
In the day-to-day job, you mostly grow your skills as a developer. Since the beginning of this year (2019), I have tried to also grow my managerial skills. I have taken a mentorship role, where I try to help our QA automation engineer improve his abilities.
Is mentorship necessary?
Yes, it is.
I believe that the best way to influence people is by setting an example. Of course you can improve your mentees or employees in a non-personal way. You can direct them by sending them materials to read or discuss with them only in group meetings. I think that a personal touch is more influential. Having one-on-one personal time or doing some pair programming is much more efficient.
People skills 101
The first thing a mentor should have is a good relationship with the mentee. You don’t have to be best friends, but you have to be able to discuss ideas and respect each other. Show your mentee that their opinion matters. Have an open discussion about future goals, project design and code skills.
When I worked on our automation infrastructure, I would ask my mentee to review my code. I found it is a useful way to improve his code skills, by reading the work of a more experienced developer. It also improves his confidence, by letting him know that I appreciate his opinion.
Communication breakdown is always the same
In every relationship, good communication is the key. It takes time to build good communication. In order to work on it, we have scheduled weekly one-on-one meetings. Why is it important?
Weekly one-on-ones not only meant for tasks update. When you have one-on-one time, without the entire team around, it is easier to speak freely. Provide a safe environment and help your mentee understand that he can say whatever he wants, and it will stay in the room. It may take several meetings, but over time you will gain each other’s trust.
A tip I found to be useful is to just shut up. You don’t always have to talk, sometimes it is even better to stay quiet. When you ask a question, someone will have to answer it eventually. Let it be the mentee. It’s ok to shut up and let the mentee answer on their own time. Don’t be afraid of the silence.
The feedback loop
It is not easy to give feedback for the first time, but it is the best way to improve your skills. It’s very important to give an honest review. Sometimes we are afraid to criticize the work of our colleagues, because we don’t want to hurt their feelings. However, we have to provide full feedback if we want our mentee to improve.
Criticize when needed, but remember to justify your comments. The main point of feedback is learning and expanding the knowledge. Every comment should be fully explained. If you ask for a code rewrite, you have to convince both your mentee and yourself that the changes are required.
On the other hand, a positive feedback is also required. Acknowledge a good work, it is important for learning. Don’t hesitate to say a good word if your mentee has written a beautiful piece of code or taught you about a new library. You can praise them in person or in a team meeting, it is important for self-esteem.
From beginner to a developer
Actually, writing code is usually the easiest part of the day-to-day job. Reviewing ideas and solutions with your teammates or PM and meeting deadlines is the real obstacle. In the first few times, it’s even a bit of a shocking experience. These are skills you learn overtime, and they are not easy to achieve.
Most of the time, your mentee has never dealt with such tasks before. Let’s take time estimations for example. In my opinion, both of you have to miss deadlines at least once in order to understand how to provide more accurate time estimations.
Missing the deadline will help you, as a mentor, to understand how much time a task should usually take. Before assigning a task to your mentee, evaluate how much time it should take, based on your previous experience. The more tasks you do together, you will have more data to base your time estimations on.
Write to yourself how much time each subtask takes (DR, code writing, testing, etc.), and see overtime which area is changing. This way you can review how much your mentee has improved. In addition, you will know where they struggle and you will be able to focus on how you can help them improve.
Walk in their shoes
The most important thing to remember is that once upon a time you were a first time developer. Hopefully, you remember mistakes you did and mistakes that were done in the process of shaping you. You already know what influenced you to become the developer you are today. You also know how to improve methods that you think are not very good.
Keep in mind that for some it takes more time and for others it takes less. Treat each mentee as an individual. Find their weaknesses and strengths. Provide your personal touch and help them improve, but don’t ruin their better skills.
Use real life based experiences to influence your mentee. Help them grow into the best developers they can be. Your mentee and the company you both work for will gain a lot of benefits from this process. And most importantly, you will benefit a lot, both professionally and personally, from this kind of experience.