“I think the main goal of mentorship is to share insights about how to solve common programming tasks and to open yourself up to new ideas.” — Kirill Shevchenko, Ruby Developer at RubyGarage
Kirill graduated from our Ruby/Rails courses at RubyGarage a few years ago. He knows what it’s like to be a mentee, and will soon take on the role of mentor: this October he starts teaching Ruby/Rails courses at RubyGarage.
RubyGarage has been promoting developer mentorship since 2011, the year we launched our Ruby/Rails courses. Our program teaches, among other things, programming in Ruby, TDD and BDD basics, the Ruby on Rails framework, making your own gem, and code refactoring.
The most successful developers from our program are offered a job at our company and mentorship by senior Rubyists. From our experience, developer mentoring is a win-win relationship for both mentors and mentees. Here’s why:
1. Learning coding best practices
The most important goal of mentorship is passing on knowledge and skills. During our courses, we pay much attention to teaching good coding practices to enable our mentees to not only write code better, but also to significantly improve their process of writing code.
Our development team benefits from having a uniform coding style by sticking to the Ruby Style Guide. This style guide allows newcomers to easily understand what’s happening with our code, and eliminates arguments about the workflow and methods used to resolve issues.
We pay attention to teaching informal coding principles - which include DRY (Don’t Repeat Yourself), KISS (Keep It Simple, Stupid), and SOLID (single responsibility, open-closed, Liskov substitution, interface segregation, dependency inversion) - aimed at creating easily maintainable and scalable code.
Following the rule “Why write code if you are not going to test it?”, our mentors introduce their mentees to Test Driven Development (TDD) environments and unit tests that ensure quality code. A major focus is on learning how to create test structures and avoid “anti-patterns.” TDD is part of extreme programming - one of the Agile development methodologies which derived from best practices used in software development. In terms of extreme programming mentees at RubyGarage learn skills including pair programming, continuous integration process and coding standards.
In a nutshell, this is how we at RubyGarage teach and implement best practices, however, this isn’t a full list of our techniques. Experienced developers who mentor their junior colleagues realize the importance of knowing best practices, which is why our team strives for code consistency and structured workflows.
“Mentoring helps to eliminate common stumbling points and allows your mentees not to fall into the same traps you did. During our Ruby/Rails course we bring best programming practices into focus to accelerate acquisition of knowledge and skills. Surely, mentees could eventually acquire necessary skills and experience on their own. However, senior mentors share this information more quickly and guide their mentees through the development process. This is a win-win situation when mentees learn from past mistakes and mentors save time on fixing their mentees’ code.” – Denis Kostyrko, Ruby developer.
2. Getting feedback
Even senior developers get stuck in a rut at times. Mentorship provides both mentor and mentee with an ongoing exchange of ideas and opinions. Eliciting feedback enriches all participants in the mentoring process, and can especially benefit long-term projects. Junior developers may bring a fresh eye to things and even surprise senior developers with innovative solutions.
“As a mentor, you constantly broaden your mind. When you think that you’ve completely mastered the technology, your mentees ask you questions that make you look from another angle at your knowledge and approach.” - Kirill Shevchenko, Ruby Developer.
3. Building team spirit
Mentorship is also a great team-building tool. New developers often have difficulties getting to know their colleagues and adjusting to their workflow. A mentor addresses this problem by serving as a link between a junior developer and the rest of the team. Mentees feel important, despite being juniors in the team, because they are supported by senior developers. This relationship results in a low barrier to entry for a company, and less time spent on finding solutions to problems.
By establishing close relationships with a mentee, a mentor can detect weaknesses and identify particular skills that can be improved. A mentor then helps the mentee improve on these points. Also, mentees are flexible and thankful which makes collaboration with mentors fruitful and rewarding.
4. Improving skills
Code review is another part of mentorship. Just like any apprentice, a junior developer’s work must be reviewed and revised. To help juniors produce quality code, mentors review their code and offer critiques. The code review process also boosts the mentor’s knowledge in situations when they face an unknown piece of code. Learning by doing is the key to mentorship.
Dmitriy Grechukha, one of our Ruby developers, says: “If we don’t teach people how to write quality code, we get bugs that require bug fixes and additional code review. That’s why we support our mentees from day one. If you eliminate the problem at the very beginning, you save time and money.”
5. Stimulating professional growth
A culture of mentorship stimulates a company’s professional growth. One of the most important things job-seekers are looking for when selecting a company is the opportunity for further education and personal development. Mentorship fosters cooperation within a team and develops leadership skills. As a result, mentorship programs help to retain employees.
Mentoring is an enriching experience for both mentor and mentee. By developing a culture of mentorship in your company, you build closer relationships within your team and improve the coding skills of your employees. RubyGarage’s team values constant professional growth and great code. By promoting a culture of mentorship, we keep our employees satisfied and help them advance professionally.
Our RubyGarage team actively engages others in the Ruby community by mentoring, throwing events, and organizing free Ruby/Rails courses. If you want to find out more about our outreach, drop us a line!