This post is a short summary of the Culture Amp Junior Engineering Program (JEP) that I ran from November last year until June this year.
If you're keen to apply for the 2nd cohort then you can do that here:
This post is the first in a series of four blog posts which will go into detail about how the last JEP operated, with the aim of giving potential future cohort applicants and the general public a taste of what a Culture Amp JEP looks like.
Our first Junior Engineering Program
Culture Amp spun up our first Junior Engineering Program in November of 2017. It ran for 6 months, and we trained 10 junior engineers on the skills they needed to be confident and capable engineers who could work on a mixture of backend and frontend applications.
We started this program because we think it is vital to provide a way into the programming community for newcomers. New people bring fresh ideas, and proper training ensures the longevity of our community and engineering practices by providing a steady stream of people ready to become the next generation of engineers. Training up junior engineers is also a great way for our more experienced engineers to practice their craft too. By explaining things to new people, our engineers get to practice understanding their own thoughts, code, and processes.
At Culture Amp we want to provide an entry path for newcomers and we want our existing engineers to practice explaining and teaching their skills too. These are the two main reasons why we started the Culture Amp Junior Engineering Program.
After opening applications for the first program, we were blown away by the quality (and quantity!) of the applications we received.
We talked with most of the people who applied, gave them a junior-friendly coding test to work on, and if they passed that then we brought them in for a few more interviews too. It was a long process, but very worthwhile. We got some pretty amazing junior engineers out of it.
We worked hard on making our interview process as fair as possible by providing a set list of questions for all interviews and by getting pairs of people to do some of the interview stages. The goal of this was to eliminate any personal or unconscious bias that might've happened otherwise. At each step of the process, we had some clear measures around what we were looking for too.
Support and mentorship for Junior Engineers
Hiring junior engineers is the easy part. After we hired them, the real work begun.
One of our big goals during this program was to grow these engineers into people who were confident and capable within our company. But to do this, we needed to ensure that the juniors felt 100% supported during their time at Culture Amp. A junior who is supported well is one that will learn and grow well. We took a few different paths to support our juniors.
Our program is designed to foster collaboration, so instead of hiring a single junior we hire a cohort of them at a time. This is designed to give junior developers the ability to grow and to share the pain and joy of being a junior developer at Culture Amp as one big cohort. Having other people to talk about shared experiences helps juniors work through any issues that might come up.
We gave juniors extra support by pairing them up with a mentor who would provide them with career guidance and other assistance through 1-on-1 sessions weekly. These mentors would often work on goals with the juniors and check-in regularly about their progress. If the junior was ever unsure about something, they could reach out to their mentor for support.
Juniors were also placed into real development teams and paired up with more senior developers who would then help out the junior by answering their questions, walking through unfamiliar code with them or helping them to understand the processes involved with working within the team. There isn't one single thing that we could do to help the juniors feel the most supported at Culture Amp.
During the JEP, our junior engineers worked on a mixed schedule of training sessions and real-world work. Initially, we split the week up so that they spent two days with the program and three days working in their team. We realised that this didn't work so well, so switched to a 3 week cadence of 1 week JEP, 2 weeks working on a team. The team work was designed to give juniors some time to practice the real-world skills that they learned during the JEP. This 3-week schedule worked really well last time, and it’s what we’ll be doing next time too.
Juniors were often given homework to accomplish outside of these sessions which would be reviewed when the next JEP session happened. The juniors would discuss their solutions to the homework within the group and with the facilitator too. Out of this session would come some feedback that the junior could then learn from and apply to their future work. This feedback was a vital part about how we supported our juniors too.
While we had in mind what we wanted to teach our juniors during these JEP weeks, we were not too rigorous about it. The course content was adjusted on-the-fly to match up with what the juniors wanted to work on. This kept the juniors interested and engaged in what they were learning.
When the juniors were outside of the training sessions, they would practice their craft by working with teams to fix bugs and deliver features on our real-world applications. All of our juniors contributed to things that thousands of people use world-wide, which is a pretty incredible feat! This work ranges from things like the infrastructure that our servers run on, all the way up to entirely new features like our Effectiveness dashboard. While the juniors were working on their teams they were paired up with a more senior engineer who could help them out with whatever they needed to do. If the junior was comfortable with being left alone, then we would give them space to do whatever they needed to do as well. This practice worked well last time, and so we’ll be keeping it too.
To finish up, I want to show you the feedback that we received from the last batch of juniors that went through this program:
These lessons were invaluable to me as it gave me a chance to step back from my day to day work and take the time to understand the basics of several technologies which I was unfamiliar with.
The Junior Engineering Program was a great way to kickstart my career in tech. It provided me with a unique opportunity to advance my skills as a developer, while contributing to exciting real world projects.
The Culture Amp Junior Engineering Program is a great opportunity to get started on the engineering career and get a chance to learn the current standards and best practices from some of the best people in their areas of expertise. On top of that you also get the benefits of working for a culture first company that truly cares about your wellbeing.
We loved working with our first cohort of junior developers we would love the opportunity to work a second cohort of juniors for our next program.
So if you're a junior developer who's keen to learn, go and apply for Culture Amp's second Junior Engineering Program: