Beyond Senior: Consider the staff path

RyeCombinator3 pts0 comments

Beyond Senior: Consider the staff path! - Joel Hawksley

Skip to content

Beyond Senior: Consider the staff path!

2026-01-14

A transcript of my 2026 talk, as presented at Boulder Ruby.

Bio: Joel is a staff software engineer at GitHub, working on the health of the GitHub.com Rails monolith.

Abstract: You’re at senior, but you’re hungry for more. What’s next? In this talk, we’ll attempt to define the staff role and help you decide if it’s a good fit for your career.

Before I get started, a quick survey: how many people here would call themselves Junior? Senior? Staff? Something beyond?

The senior role is a crossroads. At many companies, it’s the farthest you can go as an individual contributor. You basically have one option for promotion: management. But it doesn’t have to be this way. Your journey as an individual contributor doesn’t have to stop at senior. There is sometimes another option: staff.

A little over a year ago, Jesse from Stripe gave a talk here about what it means to be a senior engineer. At the time, I took a mental note about doing a similar talk for the staff level.

A couple of months ago, I spoke at Rocky Mountain Ruby. It was great to see many of you there! The night before the conference, I was chatting with Bekki about our jobs as staff engineers and we quickly realized how different they were! To be honest with you, most conversations I have with other staff engineers go this way.

I am regularly asked: How did you get promoted? What is your job? That sounds scary, how do you survive, let alone thrive? Today I’m going to attempt to answer those questions, based on my experience and conversations I’ve had with other staff engineers inside and outside GitHub. My selfish goal is that you’ll poke tons of holes in everything I have to say so that you can help me improve this talk!

Of course, what I’m sharing here is just my opinion and not that of GitHub or any of my previous employers.

How did you get promoted to staff?

I got into software engineering through the side door. After a short but thrilling career as a news photographer, I started my career at MojoTech, a software consultancy, as a junior apprentice, back before code schools were common. From there, I was promoted to mid. Another year later, I was promoted to “lead developer,” which was more or less senior. There were no levels beyond that.

At my next job, a startup with three engineers including the CTO, I was hired as a senior. We had no level beyond senior.

I left for another startup, where my title was also senior. Six months later, I was promoted to Lead Engineer. There were maybe two dozen engineers and as a Lead, I reported to the VP of engineering. I had one engineer who reported to me, so I was basically a tech lead manager.

I joined GitHub as a mid, going down two levels. GitHub had maybe ~300 engineers at the time. We had a total of eight engineering levels: Intern, 1/2/3, senior, Staff, Principal, and Distinguished. Our system remains more or less the same today with ~1,000 engineers.

My path to a staff role at GitHub started a couple of months into the job. I had the idea for ViewComponent and I pitched it to my manager Zaid, who gave me 20% time to pursue it. After a few months, I had a working prototype, which was the basis of my first talk here at Boulder Ruby!

A year and a half after I joined, I was promoted to senior in large part due to the ViewComponent project. While at an all-company offsite, I pitched Diana, the leader of the design systems organization, on building out our design system in ViewComponent. A few months later, I asked to join her team to work on ViewComponent full time, and my request was granted.

As the summer of 2020 rolled around, there was a request for projects to address technical debt in our monolith. I proposed having folks build and adopt ViewComponents for our design system to increase the consistency and quality of our user interfaces. I ended up leading a “virtual team” of about a dozen engineers for half the year, building and adopting ViewComponents.

The following spring, I was promoted to staff for this work. I’ve now been at staff for about five years.

What is your job?

Beyond terminal

At many companies, the senior level is considered terminal, in that it’s totally OK to never go beyond senior for your entire career. At least at our GitHub, I’ve yet to hear about someone at senior being pressured to be promoted. The staff level is beyond terminal. It’s something you choose to pursue. And it can take a long time! Some folks spend a decade at the senior level before going for staff. It can be disorienting after getting promoted every two years for the earlier levels.

Scope

In general, staff engineers work at a broader scope than senior engineers, in breadth or depth.

While a senior engineer typically works at the team level, a staff engineer might work on problems that span multiple teams, potentially across different organizations. They might report to...

senior staff engineers beyond promoted github

Related Articles