Junior Engineering Program: Onboarding28 Aug 2018
This post is part of a series of posts about the first iteration of the Culture Amp Junior Engineering Program (JEP). You can read the first post here.
In the last post, I covered how we launched the Junior Engineering Program at Culture Amp, all the way up to formally hiring the juniors.
In this post, I'm going to cover what we did to make sure the juniors were successful when they arrived. First of all, we needed to be prepared!
Preparing for the juniors
First impressions matter.
At Culture Amp, our onboarding process is thoughtfully designed to slowly ease new people into their time with us. You can choose custom equipment if you like, and you'll get a wonderful welcome package on your first day, some of which is pictured here:
Alongside these things, they also get some Culture Amp swag, as any good tech [ex-]startup would give their employees on their first day.
We also spent this time getting the teams ready to bring on a junior by talking with them about what would be required and answering any questions they had about the process.
The first day
As I said before: first impressions really matter. This is especially the case for juniors who may not have worked in a development job before. The last thing we want to do is to scare them away from the tech industry completely.
On the first day, juniors had a lovely late start at 10am instead of the regular 9am. I greeted them at the door and led them to their first induction session where they setup their computers, all new MacBook Pros.
This process was led by our People and Experience crew, Ginny Fry, Thang Ngo and one of our IT admins, James Smith. Even though this session was two-hours long, there was still more to setup.
But before that happened, we all went out for a big JEP lunch at Tahini Diner! Here's our juniors enjoying that lunch:
Left-to-right: Lauren Hennessy, Angel Peña Ruiz, Rebecca Vo, Julie Huang, Namibia Lebron-Torres, Ramya Ravindranath, Jasmine Ellis, Jaime Terreu.
[aside] You may notice here that there are eight people around the table instead of five. Lauren, Angel and Ramya were all working at Culture Amp as juniors before the JEP started, but they chose to be a part of the program too to boost their skills. We call these people our "super juniors" because they had a head-start on the rest.
This was a great moment for all the juniors to spend some more time to get to know each other.
The first week
We ran our first couple of JEP sessions that week on Tuesday and Wednesday. The first session focussed on Command Line Tips & Tricks. Things like:
- A few common command-line utils. Some examples:
- Using the
gitcommand to stage, commit and push files to a repository
- Using z to quickly navigate to a directory
- Using fzf to recall commands or to find files in the current directory
We chose to focus on the command-line first as its the thing that developers use the most. Learning how to be productive in the command-line is important.
Our second session covered Git in more detail, GitHub and Pull Requests.
For the Git exercise, we had the juniors write up "User Manuals" for themselves, which involved them filling out answers to some questions and sharing them with the group. These questions ranged from "What does your perfect working day look like?" to "How do you take your coffee / tea / other hot beverage?". The juniors would then submit these answers as a pull request to a "user manual" repository, where they would then have to get a "review" from one of the other juniors. This was to be the first taste of the GitHub pull request review experience.
The idea behind this exercise was that it wasn't a pull request modifying an existing bit of code or document. It was something that was entirely unique to the junior that they could attend to and improve upon. We'll definitely do this again next time.
On the Thursday and Friday of that week, the juniors spent time finishing their user manuals as well as spending a lot of time configuring their editor and terminal setups exactly how they wanted them to be.
This was also to be their first introduction to the people on their teams, with all but two of the juniors going to separate teams. The teams held another team lunch for each of the juniors within this first week, which was a good way for the team to get to know who they'd just hired.
On the Friday we had yet another welcome lunch, this time in the office to welcome all new five starters. Everyone from the Melbourne office came along. This was a good way for our juniors to meet everyone who they could work with in the office and was another way for us to make them feel welcome.
The goal of this entire week was to leave the juniors with an excellent first impression of what it is like working at Culture Amp and I think we did a great job of that.
The first few weeks' structure
During the first weeks of the JEP, we split the week between the JEP and "team time", with the juniors spending Monday and Tuesday working on the JEP, and Wednesday, Thursday and Friday working with their teams. This was designed to give the juniors two days worth of time 100% dedicated to learning, but still give them that valuable work experience that they wouldn't get if they were studying at university, or in a code academy.
We would start our Mondays with a retro that talked about how the previous week went: what we loved, what didn't go so well, what we wanted to learn and anything that puzzled us. This was a great way to start the week and often the juniors made some suggestions about what they wanted to learn next. We then adapted the program to suit where they wanted to go.
For the remainder of Monday, we'd cover a particular facet of development, and then assign the juniors "homework" to do for the remainder of the day. They would then have all of Tuesday to work on that homework, and then whatever time they found throughout the rest of the week to do it.
On Wednesday, Thursday and Friday, they worked closely with their teams to learn the ropes about how work gets done at Culture Amp. The juniors learned about our very large Rails application. To introduce the juniors to the code, we gave them some small Trello cards to do. These tasks involved things as small as changing the text on some buttons, up to fixing a bug involving several different parts of the application. We wanted to get them some quick wins on the board so that they would feel like productive members of the team.
The juniors would pair with more senior developers to learn how to accomplish these tasks, with the hard-and-fast rule that the junior must be the one driving the computer as much as possible. We spent this a lot of this initial time explaining the "whys" of the work to help the junior understand why the work was meaningful. Rather than simply telling the junior what to type all the time, we would often ask them questions like "why do you think this bug is happening?" to help them practice their critical reasoning skills with the codebase.
Switching to a 3-week cadence
At about the 10 week mark of the program, we realised that splitting the week up in 2 days for JEP and 3 days for the team was the wrong decision to make. Splitting it up this way meant that juniors would have a "split-brain" between the JEP and their team work, and also that teams would not be able to prioritise meaningful work for their juniors.
After some discussions with our leadership at Culture Amp, it was decided that we would switch to a 3-week cadence: 1 week with the JEP, and 2 weeks with the team. This worked so much better! Juniors were able to devote more of their attention to the work they were doing in JEP, and teams were able to give the juniors meaningful work.
This worked so well that we'll be doing this for the next program from the first day too.
Supporting the Juniors
Supporting juniors is absolutely critical. Having them do homework or teamwork is never supposed to be the "be-all and end-all" of any junior's life. What they need is someone there that can provide them with long-term career / life support because being a junior is hard, especially when you're "surrounded" by people who you can see are better than you.
When anyone starts at Culture Amp, they're assigned to a Mentor. This person is typically not their direct boss, but someone from a different team that can provide the new hire with some career, tech or life advice when it's asked for.
Our juniors were no different. They were paired up with one of our Mentors from the very first week. They were told that they could go to these people and ask them for help whenever they wished. It was the Mentor's job to ensure that the junior felt encouraged and supported at Culture Amp.
I should also mention about the "CAmp buddy" program too. Everyone who starts is also assigned a "CAmp buddy" who helps answer questions like where to find things around the office, where the best lunch options are, and who's who within the office. Our juniors were all paired up with one of these too.
This also meant that the juniors had four points of contact for potential support at Culture Amp:
- Their mentor
- Their CAmp buddy
- Their direct team lead
- Me as the Junior Engineering Program Lead
This support net is designed to ensure that every person who joins Culture Amp is tremendously well supported. Having this support for our juniors meant that we provided a fostering and welcoming environment.
We wanted not just their first week, but their "life" at Culture Amp to be one where they were supported and encouraged to grow in their capabilities. We felt like this is the way to set juniors off on the right foot in terms of their career progression.
Culture Amp's onboarding process has been consistently worked on, as we improve it each time we onboard someone. Giving our juniors their "equipment" on the first day and all the introductions were a great thing to do. Equipment, introduction and support-wise I think we're doing a great job.
One area that we could work on improving here is making it clearer what their responsibilities are as a junior. At Culture Amp, these juniors all joined teams that were senior-heavy. On those teams, the seniors have a high output of quality work and as a junior it can be super intimidating -- when a senior completes four cards in the time it takes you to get through half of one (or less).
During the first few weeks, I heard from almost all of my juniors about this particular feeling of inadequacy quite a lot. While I think this is a natural part of being a junior at any company, I would love to spend more time with the next batch of juniors talking about this. I would really reenforce that their job is to learn and if that's all they're doing then that's perfectly okay. They don't have to fix bugs from Day 1 or even Week 1. More communication around this is essential next time. I did outline this once at the start, but a constant communication of this idea is required.
Along these same lines, I would hope to speak with the juniors' team leads more next time to ensure that there's no or very little pressure coming from them to get work done. I think I didn't communicate quite enough with them about that part either. Having the juniors hear from the team leads about this attitude of "your job is to learn" would probably help the next batch too. The way to fix this would be to have a big chat with the junior's team -- including the junior too -- and to very clearly outline expectations there.
In the next post, I'll cover the resources that we used to teach the juniors now that they were working at Culture Amp.