One of the core values at Marshmallow is to be selfless.
As a developer, the first thing that pops into my mind when thinking about selflessness is mentoring. In this article, I’ll outline how I have structured mentoring, pairing and knowledge sharing in our brand new (and growing!) frontend team — not to mention all while being remote. Before digging deeper into the meaty stuff, let me set the scene by giving you a brief overview of the team’s structure when I joined.
An overview of the team
I joined Marshmallow as the last piece of the puzzle in a brand new frontend team. The team was made up of myself, a junior and a mid-level engineer. Luckily for me, our engineering manager was a former frontend engineer and this helped me understand what was expected of me both from a technical point of view and as a mentor. His knowledge of the codebase and how all our products work and interact with each other was extremely beneficial.Thanks to some ad hoc pairing and knowledge sharing sessions, I was able to get up to speed very quickly.
While I was bringing previous experience of mentoring engineers to my role at Marshmallow, I had never been the only mentor or the most senior point of contact for a whole team of frontend engineers and the brave backend engineers who like to try their hand at React. On top of that, all my previous experience of mentoring had happened face-to-face during office working hours where it’s natural to turn to your colleague to ask for help or feedback when needed. Thanks to these unprecedented times, I had to try and do all of this fully remotely.
Finding solutions to mentoring challenges
To me mentoring is all about guidance, giving advice and sharing knowledge while remembering how important it is not to judge the mentee. One of the big challenges with mentoring is to understand the needs of the mentee: a junior engineer has different needs from a mid-level, and a mid-level different needs from a senior. Understanding those needs is even harder if you join a new team without any prior knowledge of your colleagues and what sort of support they need.
The first item on my to do list when I joined was to get to know the wider frontend team. So, I set up a recurring weekly meeting with each of our engineers. I spent the first couple of meetings getting to know everyone better, working to understand their past experiences and how much support they would need. This weekly meeting then naturally evolved into a weekly Ask Me Anything (or AMA) where we could have a discussion and I could suggest answers to questions spanning from work-related issues to broader frontend topics. Alternatively, we could just use that time to chat about how our week was going.
After receiving very positive feedback on the AMAs, I decided to keep the meetings but make them optional based on each engineer’s needs that week. I didn’t want to force anyone to attend a meeting if they didn’t have anything to talk about, but at the same time I wanted my colleagues to know that they would always have that weekly half hour safe space where they could ask “stupid questions” (there are no stupid questions!) and where I could focus on their needs 100%.
The ins and outs of Pair Programming
Pairing (also known as pair programming) is a fundamental aspect of developer growth and works well across all skill levels. It’s one of the fastest ways to learn new things and understand how your colleagues think and how they approach different problems.
What helped me a lot in the first few weeks at Marshmallow was the opportunity to constantly pair on the first big feature I had to deliver. By doing so, I managed to learn a lot of the codebase from Ella, the junior frontend engineer in my team. At the same time, it gave me the opportunity to get to know her much better and to understand how she approached writing code and solving problems. It also helped me to see how I needed to structure those pairing sessions in order for both of us to get the most out of them.
I never had to deal with remote pairing before but thanks to Tuple, the process was extremely easy. The tool allows you to make video calls and share your screen in no time, with the ability to pair as if you were sitting next to each other in the office. I now use it for most of my interactive AMA sessions with great success.
The positives of knowledge sharing
The pride and joy of our frontend team is the Frontend Guild. A safe place where we can get together, check how things are going and share knowledge across the wider team. Every engineer can add topics to our open agenda which we’ll then discuss and decide on actions we should take as a team. Topics can vary from how to address technical debt in our products, to new and interesting frontend technologies that we want to consider introducing to the Marshmallow codebase.
Lately, I’ve also encouraged the team to include a short presentation where an engineer can present about a topic they are very fond of or something cool that they’ve worked on during the week. For example, in the last couple of meetings I’ve taken the lead on this and introduced the team to our new unit test setup and run an interactive session around security and XSS (also known as cross-site scripting).
Why is mentoring important to me?
I want to take a moment to highlight why mentoring is one of the most important and fulfilling parts of an engineer’s career.
Mentoring facilitates building stronger teams and it allows teams to move fast, one of Marshmallow’s core values. The more knowledge you share across the team, the more the team’s ability grows, enabling them to ship better code, faster. I have found time and time again that you learn so much from teaching. Teaching lets you see problems from a different point of view that you might never have considered before. Working with mentees who have different backgrounds and experiences can also teach you a lot.
Thinking back to when I was a junior engineer, I will always remember that one person who went the extra mile, sitting down next to me to teach me all that he knew. I want to be that same person for the engineers on Marshmallow’s new and growing frontend team, the person they’ll think back on as someone who made a real impact by believing in them.
What’s the plan going forward?
Right now Marshmallow is growing extremely fast. Going forward, my challenge will be maintaining the same quality of mentoring and interactions with an increasing number of new joiners. My initial plan is to start delegating, giving more responsibilities to other frontend engineers and letting them mentor the new joiners. After all, helping others is one of the best ways to grow as an engineer. And it’s extremely rewarding!
We’re always on the lookout for new engineers! Check out our latest job opportunities here.