This is a description of the roles and expectations of the Software Engineering team at Air. The goal of this document is to provide clarity to current and future members of the team on what is expected of them, how they fit within the org, and what skills to develop in order to grow here.

Expectations

Each role comes with a set of expectations. You should work with your manager regularly to understand how you're performing on each of these. If there are areas that need improvement, you'll focus on those one at a time, making sure to master each before moving on to the next.

Each quarter, you and your manager will review your performance on all expectations and make a plan for how to improve in the upcoming quarter.

Leveling up

Promotions at Air are trailing indicators of success. In order to be considered for a new role, you are expected to be performing most of the functions of the next role. Ultimately, it's at your manager's discretion to decide when you're ready for a promotion.

The expectations of these roles are cumulative; as you level up, you are expected to maintain the skills acquired from each previous level.

Individual Contribution vs. Management

Today, all of the roles defined here are "IC" positions. They grow in responsibility and scope but are ultimately focused on increasing your engineering output. As you grow, the tools to increase that output shift towards process, mentorship, and leadership. The roles do not entail explicit engineering management. The engineering management track will be developed as the engineering team at Air continues to grow.

For more info on the IC vs Manager distinction, check out this Quora post, or my favorite excerpt from it:

Roles & Expectations

Software Engineer

The Software Engineer role is designed to make you a productive member of our engineering team. It will help you build a breadth of understanding across our stack, familiarize you with our development process, and hone your ability to tackle tasks quickly and consistently.

Senior Software Engineer

The Senior Software Engineer role is about independence. You've mastered the technical skills required to complete your work, you're taking on larger projects alone, and you're beginning to work with and mentor more junior members of the team.