From Newbie to Contributor: Key Strategies for Effective Onboarding

Developer Perspective
strategies for effective onboarding
Bookmark

As software developers, we have all gone through the process of onboarding once or twice in our lives. And we all understand how crucial this process is to set us on a successful path. This is true whether we are moving to a new company, a new team within the same company, a new domain, or a new technology stack. Incidentally, I hit the trifecta when I joined Gusto recently – I was new to the company, new to the payroll domain, and new to the Ruby and Rails tech stack, and was faced with the million-dollar question:

“How do I onboard quickly while being productive at the same time?”

My onboarding journey

My first onboarding week was similar to what most of us go through—a boot camp filled with presentations and exercises to familiarize ourselves with the basic information, processes, and training sessions—where I became a sponge absorbing everything. And before I realized it, I was in week two, when things became real. I got my onboarding project and realized what a massive challenge I faced! 

For those unfamiliar, an onboarding project or task is usually a brief project or task that gives the new hire an opportunity to dive into the codebase and start understanding the systems and applications — sort of like a toe dip into the pool of the codebase before jumping into it with a full-fledged project. Only in my case, my onboarding project was more like a headfirst dive into the codebase. Instead of being the typical small 1-week assignment that I was expecting, it was a full-scale project. It lasted nearly a quarter and was a critical requirement for one of our biggest embedded partners, which also turned out to have quite a few technical complexities. My experience navigating this onboarding journey while delivering this project helped me identify the key strategies for successful onboarding.

Key Strategies for Successful Onboarding

four strategies for effective onboarding

1. Complex onboarding project

Usually, for an onboarding project, I’ve seen people being assigned a few bugs or a 1-2 week small project  to ease them into the codebase and not overwhelm them. However, I think this type of project puts them at a disadvantage. An onboarding project is a learning opportunity for the new team members. During the initial few weeks of joining, the new members are expected to learn as much as possible. They have more leeway to take some time to figure things out. It usually gets difficult to do this later, when the projects are high stakes with tight deadlines, and the productivity expectations increase. And so, the more learning we can have early on, the better our perspectives are to drive a similar project later with the added pressure of deadlines. A good onboarding project should, therefore, have enough complexity to maximize the onboardee’s learning, give them a sense of accomplishment, give them confidence, and put them on a path to success once the added pressure of deadlines kicks in. And as a new hire, one should not be afraid to roll up their sleeves and dig into it. Here is an example.

My onboarding project was a revamp of the External Payroll flow for our embedded customers. It was a highly impactful project with a launch deadline, but also had enough buffer for someone new like me to ramp up. The project consisted of following milestones:

  • Overhaul the External Payroll flow UI to make it more user-friendly.
  • Add a feature to enable the addition and editing of previously terminated employees as a company onboards onto the Gusto platform.
  • Add the ability to optionally include External Payroll flow as another step in Company onboarding flows.

Let me begin the list of complexities involved by saying that my last foray into anything UI was nearly a decade ago when Knockout.js was still a thing! To top it off, I had no idea how Rails worked. This first milestone not only helped me understand the nuances of front-end development, but also basic Rails concepts, such as MVCs, controllers, and actions, and how they relate to the views.

The second milestone involved creating an endpoint in our codebase. I initially planned to replicate the conventional ways of creating an endpoint in our codebase. In this case, for example, when an employee is added into the system, there are different endpoints to add in different details of the employee such as basic information, jobs, terminations, etc. However, the feature required me to incorporate all those steps into a single endpoint. So replication was out of the question. This not only gave me an opportunity to problem solve early on but also helped me learn how these different steps to add an employee interacted with each other. What are all the if-else cases involved that we need to think through? We need to touch upon the various ActiveRecord models to understand how each piece changes the database. What are some of the edge cases to think through in these situations? This is in addition to all the one-off bugs due to the complex code interactions that I encountered that the team hadn’t encountered before, resulting in interesting pair programming sessions with my teammates!

The third milestone was another problem-solving challenge. The company onboarding flow allows companies to onboard onto the Gusto platform. This flow can involve multiple steps, such as adding employees, bank information, etc. However, all these steps are required. Conventionally, the company onboarding flow has only included required steps. Figuring out a way to add an optional step gave me a better understanding of how the flow system actually works from a technical perspective.

Finally, this entire project involved constant communication and collaboration with various cross-functional teams, such as design, PM, and technical solutions, as well as driving processes such as conducting test fests, prioritizing bugs and issues, and more.

2. Ownership mindset

If there is one thing that can help software engineers thrive, whether a new hire or an experienced team member, it is having an “ownership mindset.” In other words, having a sense of ownership and accountability for the project. During my onboarding, I was fortunate enough to have a manager who trusted me and gave me this opportunity, and an amazingly supportive and experienced onboarding buddy who understood this balance and let me take the reins of my project to give me a sense of ownership. For example, I would lead the discussions on requirement gathering and my onboarding buddy would jump in with any edge cases I missed. If I hit an issue and couldn’t figure out a way to unblock, I would actively reach out to the respective point of contact or post it in the team channel or reserve a pair programming session with my onboarding buddy. The ownership mindset does not mean that you have to know everything about a project or its execution. It in no way means you are a 1-person army. It is simply taking the initiative and having accountability for your project, not just relying on someone else for the decision-making or project execution. Driving the discussions, actively picking my colleague’s minds while brainstorming some of the design decisions, and running the test fests for the project – all of this ultimately helped me connect and collaborate with my team, as well as cross-functional teams.

 

3. Strategic and organized learning

 

 A key to finding the right balance between learning and delivering on the project is being strategic and organized about the learning process. 

1. Top-down approach & prioritization: Knowing what to learn and the most efficient way of learning it is half the battle. But to figure this out, we first need to understand the overall picture and the different components. Think of it as building a wireframe before filling in the more detailed view. This top-down approach worked best for me during my onboarding. Instead of spending time going in-depth into every single concept, I was able to be productive with some basic concepts, and as I dug deeper into the codebase, I was able to prioritize what to learn in greater depth depending on the project requirements and the codebase. For example, instead of going through the entire Rails guide, I focused on learning about routes and the different configurations when I encountered them while creating my 1st endpoint – which came about a little later in the project for me. This in-context learning also helped me retain the information better. 

 

2. Tracking and analyzing: When we start out, there are so many things we don’t know that it is easy to lose track of them all. This is where being organized helps. Keep a running list of things you encounter and don’t know. At Gusto Embedded, there’s a push for a high code quality. Giving detailed PR reviews is a part of the process to achieve this. So, as a new hire, I would track my PR feedback and find patterns to improve upon later. The same goes for designing the APIs or architecting systems. I kept a list of edge cases pointed out during discussions with my onboarding buddy. So, next time, I can refer to them when making similar design decisions.

 

3. Detailed and relevant documentation: For domain ramp-up, I went looking for the most efficient way of learning. For me, it was the in-depth training videos created and used by our technical solutions and engineering teams, and blogs. Good documentation with easy discoverability can certainly reduce the ramp-up time and effort! I found our product requirement documentation to be a good resource for domain ramp-up, with a lot of background context included to help me understand the why, what, and how behind our different product offerings. 

 

4. Ask! Ask! Ask!

We’re all familiar with this adage. But as a software developer and a lifelong learner, I believe this to be one of the most important skills to define success or failure in our careers. What system do we need to develop? Why are we developing it? How are we going to develop it? These three questions can basically sum up our entire journey as developers. Asking questions early on and getting clarifications can really make or break a career in the team or company. 

Ask dumb questions, ask smart questions, ask product questions, and ask design questions. As a developer, these are relevant for us to understand what we are building! Keep asking till you finally grasp the concept you are trying to understand. A necessary component of this is having a supportive team culture where colleagues and managers not only encourage asking questions but are keen on helping you resolve these questions as well. As a newbie, I would ask all sorts of questions – in meetings, in Slack channels, and during presentations. More often than not others have let me know that they had the same questions. I’ve had the good fortune of having an amazing team that helped me resolve my queries during my onboarding journey.

Onboarding can be daunting, especially when it involves a new company, domain, and tech stack. My experience at Gusto has taught me that the key to successful onboarding lies in embracing complex projects early on, developing an ownership mindset, and being strategic about learning. By taking on a challenging project, I was able to dive deep into the codebase and understand the intricate workings of the system. The ownership mindset helped me take initiative and be accountable for my work, while a strategic approach to learning ensured I was always moving forward productively. Lastly, never underestimate the power of asking questions; it’s through curiosity and a supportive team culture that we truly grow. These strategies not only helped me ramp up quickly but also set me on a path to contribute effectively to the team and the company. And it helped the rest of the team and future team members too – the onboarding process is stronger for this work!

Ankita Khandelwal Ankita Khandelwal joined Gusto's Embedded Engineering team in 2024. Previously, she led projects at Airbnb, architecting systems and designing scalable and robust APIs for both product and platform services. At Gusto, Ankita is focused on building APIs and solutions that empower our partners and enhance user experiences.
Back to top