When I joined the Avenue Code team as an intern, I was introduced to mentoring: a guidance system where seasoned developers share their knowledge, skills, and experience to assist their colleagues toward successful development. In this post, I will talk about my experience as a mentee, as well as what I learned along the way.
Starting off on the Right Foot
As we interns were introduced to the company, we were also introduced to the technologies we would use. The project I was assigned to had a front-end that was built using React, Redux, and Sass, and its back-end was built using Java and Spring MVC. Most of the newcomers had never had contact with any of these languages, libraries, and frameworks, hence the mentors had two missions: teach their mentees and ensure everyone was at the same skill level. To do so, they sent challenges, reading material, and research directions to us, solidifying what we learned in subsequent meetings. This was a great way to start because, though the instructors gave a helping hand, the rookies were also able to learn by themselves.
The First Delivery
My team made its first sprint after two weeks of learning. On the iteration end, we had to present the results to our client and then receive feedback. There were appraisals and, most importantly, constructive criticism. I don't think anyone is a big fan of reviews that highlight what could have been done better, but they help us improve and foster a constructive debate about things that went wrong. However, criticizing is like walking on eggshells, where the eggshells are someone else’s feelings. Because constructive reviews can easily be misinterpreted as offensive, it's important to remember that feedback is an art.
In his book Clean Code, Robert Martin talks about the traits needed to be a professional developer. Professionalism is a topic rarely discussed in software development companies, but it's very important. Being professional is not necessarily about wearing a suit to go to work, nor is it about using a fancy vocabulary; it’s about commitment and knowing how to deal with expectations. This was taught by the mentors both consciously, when we read and talked about Uncle Bob’s book, and unconsciously, when they acted accordingly, thus becoming role models for us.
Learning to Think, Not to Obey
One thing that mentors should always keep in mind is that they are not tutoring mentees to be obedient. Discussing techniques and technologies is the key not only to learning about their advantages, but also about their downsides. A good practice for tutors is to question the approaches used by the apprentices, encouraging a debate so that everyone can put their selling points on the table to choose an optimal solution. There are a thousand ways to solve the same issue when developing, so engineers should be able to come up with the best way possible. Remember, there are best practices, but there’s no one size fits all in programming.
Walking by Yourself
The true goal of mentoring is to prepare mentees to stand on their own. As the internship program continued, the mentors were also becoming less necessary, because the team was able to take ownership of decisions, meetings, reviews, and everything else that they learned throughout the journey. To be honest, it was really hard to let that helping hand go, because no one would be there all the time to help us make better choices, but this is how it should be - sometimes we need to learn from mistakes, and that's OK.
Mentoring is great. It can be a wonderful experience for both sides when done right. I learned way faster by having an expert with me who gave me guidance when I got lost and helped me avoid common pitfalls as I took my first steps. Mentors, on the other hand, can refine their soft skills and benefit from having someone new with whom to debate ideas and solutions to problems.
Finally, tutors shouldn't be bosses. Avoid giving orders and ready-to-use answers, always question the mentee's decisions, and encourage discussions. Remember, you are not meant to instruct them to be like you, but to think by themselves. Of course, mentoring isn't the only way to learn, but it is definitely one of the most efficient ways.
Henrique Ramos is a Front-End Developer at Avenue Code. He spends his spare time trying to learn something new about Web and Mobile Development and UI/UX design, editing videos, muddling through Illustrator, and losing his sanity while playing Dota 2. He also writes about his programming misadventures on DEV.TO.