Suggestions for onboarding remote Software Engineers
In this post I'll go over on approach for onboarding new early hires remotely that I've formed from my experience. Hope it helps you and your team in the process.
I transitioned to Engineering Management role, around 2 and half years ago. During that time most of it was spent managing the team remotely but I don't claim to be an expert at it but rather student as I go along and learn.
Before last year, most of the team I managed were based in same city though working from home due to COVID. These were the people I've met and worked with in person. My team recently hired multiple engineers (early in SWE career), some in different state in USA and others in LATAM.
It was an interesting challenge onboarding them, so they become productive, make them feel part of the team, get them energized around the mission and work they are doing. I'm glad to see them now contributing to our product and team. Few things you should know about it
- It will take time commitment both you as their manager, onboarding buddy/mentor and other members of the team.
- There are managerial challenges you will have to understand due to different countries and laws (equipment, benefits, holidays etc.).
- Building connection with the team members and between them and team happens gradually but only with conscious effort.
Here are learnings from my experience and suggestions on what I currently think provides a good onboarding model
Homework before start date
You goal should be that in the first week have the new team member setup their machines and complete their first check-in. For this you have to do some homework before their first day
- Make sure all the steps to setup their machine for development, cloning repo etc. are written down (more on writing later).
- You need to pick an onboarding buddy/mentor but it shouldn't be random member from team. Think about what area you want the new engineer to continue working in about 3-6 months. Pick the onboarding buddy who owns that area. That will help build a relationship between them from the get-go and they will be more open to discuss issues when they work on complex projects.
- Allocate time in onboarding buddy/mentor sprint for this. Make mentoring an explicit goal for them, this will ensure they don't take it as an extra ask alongside their regular sprint.
- Ask the onboarding buddy to find couple of easy bugs that would be suitable for someone new to tech stack and code.
- Create a PowerPoint/Email and ask your team members to share some details about themselves. For example, what they work on, preferred communication mode, fun fact about themselves, picture etc. This will be a great way for the new person to know the team, understand their preferred times and communication mechanism (sync/async). Send it on their starting day as a first thing.
- Before they join, send them a welcoming email and do include your contact so they can reach to you if Teams/Zoom doesn't work.
On their first week
- Have a 1-1 with them on the start of their first day. You can do introductions, share what team does, how they should get started etc. Basically sharing all the homework you did to set them up for a good first week.
- Schedule your regular 1-1, at minimum once per week. If you generally do bi-weekly cadence, still have once per week for first few weeks and then later you can transition to bi-weekly cadence. It's essential they get face time with you to discuss their issues, understand more about the work, team culture and company.
- In the first week, would highly recommend doing quick check-in, at least once in 2 days. Have their onboarding buddy setup a daily (preferable) 1-1 with them. People can be hesitant to reach out for help so having face time with their onboarding buddy will ensure they are not stuck.
Growing responsibilities and support
I hope with above instructions they were able to get in few quick wins (check-ins) and feel confident navigating parts of the codebase, tools and processes.
Initially you would give them bug level items and smaller work so they build confidence in the first month. After that start forming a plan to have them work on a certain feature or larger change in the area of work you determined earlier.
By this time they will be comfortable working with their mentor who is also the owner of the area where they'll be working. Make sure that you continue to sync with them in 1-1, understanding how they are progressing.
In the beginning there can be unnecessary stress exacerbated by being remote. They may think they are underperforming as they don't have anything to gauge it. Understanding how they perceive about their own progress; you can help calm their nerves. If they are doing well, appreciate and communicate that. If they are struggling reach out to understand how you and team can support them.
Culture of writing
Our team previously had some knowledge written down but most of it was tribal knowledge passed during meetings, conversations etc. In a world where the whole team is in same space, this is not optimal but the fact that people are accessible puts a band aid on this problem.
In all remote or hybrid situation that band aid is ripped out so now you have to fix the problem. The solution is simple, write things down. Execution takes repeated effort and reminder. Following are some of the things that you should have written down. I don't claim my team or I are 100% done with it but we are improving and that's the goal.
- How to setup machine
- Tech stack used and primer on it
- Architecture of the system
- Good patterns to use
- Various tools at developers disposal and how to use them
- Culture (writing, collaboration, experimenting, accountability etc.)
- Team meetings and processes (what various team meetings are, expectation from attendees etc.)
- Dev specs (one of the real benefits of it is when there are many approaches why a particular decision was made)
You as a manager should be promoting things to be written down. Whenever you hear something that would be beneficial for others, ask the person to write it down in team wiki.
Culture of sharing
As we work remotely, sharing can become harder as there is no hallway conversation to ask people what they are working on, no in person gatherings to demo stuff.
You need to have a way for people to share technical learnings and sharing about the work they do. This could be newsletter, Teams/Slack channel or a weekly meeting but there should be a platform where it's expected to share and celebrate the work being done. This platform shouldn't be restricted to your immediate team but a broader organization (not more than approx. 50 people).
- This helps in recognizing the work the new team members are doing.
- See what others are working on. This helps make connections which will be beneficial when working on more broader projects.
- It creates energy by seeing how the team is moving towards a goal and how their contributions are part of the bigger whole.
- Sharing technical knowledge e.g. things that didn't go well, new techniques learned etc.