I call myself a software engineer, but that’s only because that’s a broad term that covers my entire career so far and I believe it will cover my career for some time to come. I started out as a lower level Software Engineer 1, then moved up to levels 2 and 3 at my first company, SEP. At Lessonly, I was a Lead Software Engineer, Director of Engineering, then a Principal Software Engineer. Now at High Alpha, I am again a Principal Software Engineer.

It’s not immediately clear what my responsibilities were in each of those positions just knowing the titles. Such is the way in software engineering. Some companies promote people to a Senior title quickly, while other require some real experience before they start doing that. In some companies a Director may be a functional leader, while in others they are a manager or even a manager of managers.

Because of this, I find it really unhelpful to define what each of those titles means in the industry. But I do think it’s helpful to talk about what they mean in any individual person’s journey so that others can use that as input when they think about where they want to take their careers. So I am doing just that.

Software Engineer 1, 2, & 3 - SEP

At SEP, this is the path I took. I started out as a Software Engineer 1, then I was later promoted to SE2 and SE3. These were individual contributor positions. As my technical skillset grew, so did my title.

As I grew, I was also given more and more trust. I was still an individual contributor, but on some smaller project I was afforded the responsibility to be the tech lead and project lead. I was able to lay the groundwork for others before they began and I started to act as a mentor to younger engineers.

That level of trust is exactly how I personally think about leveling up in IC roles. As someone proves their level of skill, they can be given more and more trust. As they prove how responsible they are with that trust, they are given the room to grow and to earn more trust.

Lead Software Engineer - Lessonly

I moved on to Lessonly for two reasons: as a means to grow more quickly, and to have the opportunity to own what I worked on. I was craving the ability to learn from what I built and to iterate on it. Working at a product company gave me exactly that. I went in with a goal of building great software and a great team.

I started as the only engineer, with no designers PMs, POs, or any other similar role. This meant I played all of those roles, sharing some of them with my four teammates - the CEO and the directors of CX, Sales, and Marketing. What an immense level of trust. As the software team grew, I became a team lead, mentor, recruiter, and manager.

At a startup that small, one’s role is frequently not very well-defined. Members of a team like that need to define their own roles on the fly, which makes constant clarity and alignment a necessity.

Director of Engineering - Lessonly

My role as LSE organically grew into that of Director. At some point, the engineering team grew large enough and I was managing a department, which made the title change seem like an obvious step.

This is where I stumbled the most. I had never been a manager before and I really enjoyed my work as an engineer. I held onto the roles of an individual contributor, manager, mentor, recruiter, project manager, and more. While these are all roles that a Director of Engineering can play, one person should not play all of them. I did not seek enough help and it became too much for me.

Principal Software Engineer - Lessonly

I had a conversation with the CEO at Lessonly during a time of change where we talked about all of my responsibilities. I felt the most stress from being a people manager, so I asked to make a lateral move to Principal Software Engineer. This was a position of technical leadership, mentorship, and even individual contribution, but not of management. I was able to manage my work load almost immediately.

This role shifted over the course of a couple years. I acquired an excellent mentor in my new direct manager. He helped me work through my experiences and feelings on being a manager. I like to think I helped him a bit, too. I slowly shifted and balanced my responsibilities to keep from overloading my plate too much. I became a manager again and acted as an engineering leader while contributing mostly to high-level architectural design and implementation.

At this point, I realized that I had fulfilled what I had originally come to Lessonly to do: to build an excellent product and an excellent team behind it. I was and am still proud of the team still making Lessonly better all the time, but I realized my passion isn’t in scaling large teams. It’s building teams from scratch and helping those on the teams grow in their own careers.

Principal Software Engineer - High Alpha

I made a move to High Alpha, keeping the title Principal Software Engineer. High Alpha builds companies, and I was brought on to help build the software at the earliest stage of those companies, help build their teams, and to build a community among the engineers at those companies. My role at High Alpha is that of a mentor, but not a manager.

While I don’t get to own the products I build, I am building the foundation for those products and those teams while I figure out the next step in my career.

More to come

I am nowhere near the end of my career. I hope to continue building teams, helping others figure out their own trajectories, and building great software that people love. And it is my hope that by recounting my own path may help you plan your own.


NOTE: I realize that I have been incredibly lucky and privileged. After all, I am a straight, white, cisgender man in an industry dominated by exactly that kind of person. I didn’t write this as a guide to follow, or as a path that anybody should emulate. I only mean to share my experience in hopes that others would do the same so that we can all learn from each other’s experiences.