Perhaps the levels are diluted and my title doesn't match my actual role at my company, but it feels like this is an industry-wide phenomenon.
Perhaps the levels are diluted and my title doesn't match my actual role at my company, but it feels like this is an industry-wide phenomenon.
I've seen companies hire college sophomores who have never heard of the concept of a database and make them Sr Engineers on a analytics teams. I've seen Sr Engineers hired with one year of relevant experience.
At this point, "Sr Engineer" is just the new "Jr Engineer". There's nothing wrong with this, but indeed, Staff Engineer tends to mean 8+ years of experience.
I remember when Systems Administrator was a noble and important profession full of smart, talented people. But a lot of people misunderstood it and made fun of it, so it became an unattractive title, and instead of changing the role, they just made up new titles. Now they're cool and in-demand, and still nobody understands what they do.
("Sr. Prompt Engineer", "Visual Strategist", "Director of Front of House") People want to have some leverage to get things they want done, done. Sys Admin -> DevOps (Cloud) Engineer. Things change. Adapt or die.
If you read IBM's coding standards from 1980 and compared them to Google's from 2000s and then to Today's AI journey, you would have complaints about each. Processes form from people. Change comes from people.
If you arent internalizing the senior title immediately then you will get nowhere
If you’re not forming an LLC and putting yourself as an junior employee of that shell company with some verifiable information or project, then I dont know how to help you
How often have I heard "you’re at a point in your career now where a people manager will only hinder you" to justify not being capable of supporting me.
I think this is a good indication of increased authority/responsibility, but also an easy way to shirk management responsibilities as you said. How much 1:1 management is a VP or CTO going to be doing with a Staff Engineer? Do you really want a VP with all the political nonsense that comes with that type of position to have their own pet engineer they can bother about things?
If you think "Gosh, that person (on another team) sure was rude", that's a question for my manager.
If you think "Gosh, I sure have no idea why that API (from another team) sucks", that's a question for me.
In terms of reporting to my manager it feels more like having a corner-man in the boxing ring than a boss. I fight the fight, they say "Hey you're dropping that right hand on your left hook, stop that or you'll get rekt. Here's some ice". And they spend more time thinking about and navigating politics-like issues in the org than I do, which means I can lean on their expertise when "org stuff" is needed.
I probably have similar or more years of experience than my current EM. The person we both report to, happens to be a true greybeard.
An important part of the job is to “borrow” your boss’s authority and for that to work they need to have some. I’ve seen staff engineers be ineffective because of their boss’s position many times.
Reporting to someone higher than director you start getting too disconnected from on the ground stuff (architecture astronaut syndrome) and lower the ground is all you can see.
It’s refreshing when a company realizes that staff engineers with 15+ years of experience don’t need daily management.
The last 3 companies I've worked for had no juniors and mid-levels, but only seniors and a handful or staff engineers. What staff engineers did on a day-to-day basis was hardly different from what the senior engineers do, besides having more responsibilities and maybe more say over things like architecture. Depending on the company, a staff engineer could be managing or not managing at all. In general, I don't think these title really mean a whole lot, that is unless one is intent on managing specifically.
Juniors need hand-holding at every step. They may be new grads who don't even know how to behave in a professional environment or very inexperienced folks 1-2 years out of school taking a role in a completely different language they're unfamiliar with. You're talking to them anywhere from 5+ times a day to every other day as they transition up. They may have lots of meetings, especially during onboarding, but they're mostly listening. Their day-to-day is almost entirely "how" with very little "why."
Mids need hand-holding for the bigger picture stuff. You still need to give a general shape to their work but you can expect them to look up the docs for your validation library if they don't know how to do something, and you can expect to format and structure their code and PRs the right way every time (the junior will likely ping you on Slack asking how to write a custom validation function at least once). But it's unlikely you're going to need to talk to them daily. Hopefully they have large blocks of uninterrupted time to work as these are the folks churning out lots of tickets. They can also start thinking more about "why" than "how."
Seniors shouldn't really need hand holding for much of anything. Give them a feature or an entire product and they should be able to figure out approximately how to do it and what resources it will take. More meetings than mids but still need uninterrupted time. IME my productivity starts to really dip if I don't have at least two half-day blocks in a week. I'm in a new-ish job (first year still but 14 years in industry) so have been lucky so far but have been starting to block off chunks if I see my schedule filling. Seniors are probably running several of the meetings they're in, and maybe directing work for juniors and mids. I've been in companies where the line between Senior and Engineering Manager is very blurry as well with new EMs still spending 1/4-1/2 their time writing and reviewing code. And in most companies this is the "terminal" or "professional" level where you're not expected to move beyond here. Lots of folks will hit senior and be there for 15, 20, 25 years until they retire.
Staff is where the amount of code you write starts to drop off, meetings start to ramp up (you're no longer able to block off half your day), and in my opinion the biggest difference, you don't get assigned anything to work on. You're expected to have intimate knowledge of your business domain, your technical domain, and the challenges in both, and formulate plans to use technology to ease problems in both. I also feel like this is the first level where most companies don't need them, including a lot that have them. We have about 85 software engineers where I am, and two of them are Staff, which seems like about the right amount percentage-wise. There's only so much big work to go around and while there might be a lot of people capable of doing it, you don't want 10% of your engineers to be Staff and fight over the 0.5-1% of Staff work that's available. This is also the level I see it much more important what you're doing outside of work. Not as far as side projects, but going to conferences, speaking, user groups, having content available that works as advertising for your and your company, etc.
And then of course Principal where 99% of companies don't have or need them, where you're basically a VP or Director but on the Individual Contributor track rather than management. These are going to be so company-specific it's not even worth talking about them except in the context of a particular company. You're probably at Google or Microsoft or similar at this point.
I always think of staff as engineers working across multiple teams, so there should be ratio of 1:15 to maybe 1:30 (or in another terms, staff engineers should represent 3-7% of all engineers). If the ratio is smaller, like 1:5 or 1:8 then staff engineers are really just senior engineers