Engineering onboarding at Aha!
Software engineers are always eager to make major contributions upon joining a new company. But that's not always realistic with a large codebase. Aha! is a Rails monolith that has grown to quite a large codebase over the years. Navigating this new space can result in a feeling of being lost in code or even imposter syndrome. It is a fundamental challenge that many companies face.
We have been working hard to improve our onboarding program for our software engineers. After some difficult conversations and insightful feedback, we decided to overhaul our onboarding to set new software engineers up for success.
What was onboarding before?
Engineering's onboarding program used to be five weeks long and ran parallel to the onboarding that everyone at Aha! completes. Ours consisted mostly of reading low-level documentation and environment setup. The trouble is that engineering setup documentation gets stale fast. Every new hire was expected to use that to set up their machine and update the documentation accordingly if they ran into problems. However, new hires felt hesitant to update the documentation that the whole team uses. This led to even more staleness.
Each new engineer was assigned an “onboarding buddy" to have weekly check-ins with. The onboarding buddy answered questions, provided pair programing as needed, and introduced the company culture. But with the previous program, they were unable to do enough to help the new hire learn the codebase. Plus, each teammate only has a limited scope of knowledge about the application and our different teams. Having just one point of contact meant new engineers had to funnel their questions through their buddy. This made speaking up to the wider engineering team somewhat unintuitive.
It was an isolating experience that put the burden on the new hire to self-teach the codebase. It did not give the person enough exposure to the wider team. It did not teach high-level concepts of different parts of the application. Nor did it teach how the engineering organization was structured and the responsibilities and focus of each of our engineering teams. That led to increased feelings of frustration and imposter syndrome, which made it intimidating to participate in Slack channels, speak up in meetings, and demonstrate completed work.
Teammate insight
We realized that our large codebase and many engineering sub-teams mean we need to expose new hires to each area in pieces. The old onboarding process felt more like a firehose of information than a practical way to learn. If we could give the new person more exposure to each part of the application at a high level, they could ask more technical questions as needed. They would feel more comfortable asking questions in team Slack channels and meetings.
Asking questions openly is especially important in the engineering support rotation. Customers ask all sorts of questions about the application that engineers are expected to field. Those questions may not be directly related to the engineer's area of expertise in the application. Having a broad understanding of each engineering team and knowing who to ask is crucial to quickly resolving customers.
We want each engineer to feel welcome at Aha! and be set up for success. So how do we facilitate the necessary codebase and team knowledge through training? We already have an amazing Customer Success onboarding program that every person hired at Aha! goes through. Can we replicate that program and apply it to engineering?
Implementing change
We designed a more robust, eight-week program that exposes new hires to each sub-team's unique part of the codebase. This gives them more chances to interact with team members and provides broad exposure to the application as a whole. Most importantly, it makes sure that person does not feel like they are in a silo in their onboarding.
We ended the pain of development setup by moving our application into Docker. Asking the person who knows the least about our codebase to be the authority in updating the documentation was unfair. New engineers no longer have to deal with stale documentation causing unnecessary frustration in their first weeks.
Onboarding buddies now receive formal training and prepare new engineers for each of their onboarding tasks. The pair has short kickoff meetings on Mondays to help set expectations for the week. Then they have longer recap meetings on Fridays. This is a chance to highlight important things that happened that week, check in on the engineer and their progress, and give them a chance to ask questions.
The new program is tracked in an Aha! release with features for each week. Each week focuses on one engineering sub-team’s part of the application. It begins with high-level reading and then the relevant engineering lead presents an overview of their team. The lead introduces their team members, the team charter, and the high-level architecture of the part of the code base they oversee.
In addition to the engineering lead's presentation, we have a member of that engineering sub-team pair program with the new hire. That pairing session walks the person through a small part of the code base. They may review a feature the engineer is working on, a part of the application they are an expert in, or a bite-sized backlog feature that is easy to knock out in a few hours. While the feature may not be relevant to that new engineer's day-to-day work, the knowledge will come in handy for support rotation.
The benefits of these pair programming sessions are endless. They help on the workflow side by showing how different teams deliver work and how different engineers set up their tools and environments. Plus it allows for more collaborative interaction between the engineers to build camaraderie. Seeing another engineer forget method names and have to look up documentation shows the fallibility everyone experiences. The new engineer even has a chance to contribute with knowledge they already have — an instant confidence boost.
We have also written some code-along-with exercises for kinesthetic learning. This mirrors the exercises in the Customer Success onboarding program. In the engineering program, this lets the new engineer write some code or review part of the application from a more technical perspective. They are given guidelines for certain tasks in the application and may write some lines to show off in a meeting.
Observed changes
Quite a few new engineers have joined Aha! since we upgraded our onboarding program. The nervous looks on their faces fade as they uncover each component of onboarding. Our new teammates have provided positive feedback on the training — particularly about the pairing sessions. Meeting other engineers on the team and having one-on-one time working together is a great way to learn and collaborate. And our existing engineers enjoy getting to know the new hires during this process too.
The new hires are also getting a lot out of the assigned weekly activities. The activities provide structure for solving a problem in the codebase and incorporate the week's lessons into a kinesthetic learning experience. The weekly sub-team rotations help new engineers know which team to contact for specific tasks. We now see them confidently directing their questions to the appropriate teams.
The final big improvement we have seen is the pace at which meaningful features are delivered. Our new teammates are tackling challenging tickets right away on their first support rotation. They get to show off their hard work in engineering meetings as well as company-wide meetings. This assures us that we have set them up to succeed from the start.
We pride ourselves on hiring talented people and giving them the support they need to succeed. Our commitment to curiosity led us to wonder if our existing onboarding program was the best it could be. With insight from our newest engineers, we reconfigured onboarding to ensure everyone comes out of it feeling confident and eager to build. We're pleased to see that it has been quite successful.
Sign up for a free trial of Aha! Develop
Aha! Develop is a fully extendable agile development tool. Prioritize the backlog, estimate work, and plan sprints. If you are interested in an integrated product development approach, use Aha! Roadmaps and Aha! Develop together. Sign up for a free 30-day trial or join a live demo to see why more than 5,000 companies trust our software to build lovable products and be happy doing it.