Navigating the Software Engineering Career Ladders
When some of my juniors, and former students ask my about career dilemmas, often I hear the equivalent of “But I am at L4 here, and that offer is L3 only, should I try to get L5 in that other place”, while the 3 companies are wildly different
Let’s break it down.
Thanks for reading system bashing! Subscribe for free to receive new posts and support my work.
So the first thing that is important is to understand what these “L” levels even mean. And for that we will have to look at a generalised, most common, story of how the tech team pyramid grows in a company.
It often starts out with the ‘Tech Cofounder’ writing code.
If something gets built, some traction exists, and/or some VC gets interested to throw half a million at this, the first “hiring” happens. Usually within the first year.
Often as interns who have been given the cool title of ‘Founding Engineer’ etc.
If the company survives another year. (Either by finding customers, or the founders’ charm during VC pitches), suddenly a lot of things need to be built. And a slight over-hiring happens. i.e. hired 10 instead of 3 you needed. So some hierarchy is needed now.
At this stage, often “Senior Engineer” just means those engineers who were hired in the first year, still remaining in the team.
More than engineering skills, navigating the codebase (already turning spaghetti now) is a more ‘senior’ skill
This is also typically when the company even starts existing on most people radars, and any meaningful in-bound interests even come. Some sort of actual interview might exist, because before this mostly it would have been referred folks, and college juniors of the founders.
After surviving 3-4 more years (crossing PMF, entering growth), now either as a SaaS the sales folks are selling feature that don’t exist, or ‘Growth PMs’ are filling JIRA backlogs are breakneck speed
So Much To Do™ phase is on
You have actual “tech recruiters” now as well
Now apart from “senior” engineers, and “not senior” engineers, the teams start realizing that even “not senior” engineers need to be further bifurcated into SDE1s (who have never written production code for > 100 users) and SDE2s (who have)
There also are some “VP” now – hired on the recommendation usually of the investors, or because of frequent complaints from all the CXOs (other than the CTO) – as the much required ‘adults in the room’.
VPs are always imports. No one’s ever become VP by promotion at a startup
This is also the stage where some ‘EMs’ start existing. (Because you have VPs, you now need to have 2 ladders, ICs and EMs)
Some EMs are hired specifically, some are just circumstantial – the adult in the room who can talk to other stakeholders is the de facto EM
If you join a company before this stage, you get 1-2 hrs of facetime with the CTO every week easily (4-5 hrs if you’re a Senior Engineer)
If you join a company after this stage, you meet the CTO in your bar-raiser and exit interview only. And the CEO only if you fuck up
The team at this stage is in a lot of ‘org design’ flux. Reporting structures will change (earlier all 30 engineers reported to the CTO, now EMs exist), teams will get shuffled around. Some imported VPs will leave early, who figure they don’t have chemistry with the CTO
Once this stage is crossed, you have a team that is “too big to fail”
If you reach $5B+ valuation or $100M+ revenue, you are sort of too big to fail
Too big to fail doesn’t ensure “you” any job guarantee, (duh, look at FAANG layoffs), but it is rare to see company shutdown
Also once you cross this stage you are not startup or scaleup or any such fancy name anymore. You are a proper company.
Tech costs are analysed in P&L like any other line item (i.e. profit center in bull market, but loss center in bear market)
And that brings us the final evolved form of a tech pyramid. Some layers develop more inner layers (a bit of a 🚩 imo), and the slope of the pyramid depends on the kind of company it is, but it basically remains this pyramid. (management roles are marked with different circles)
The bottom 2 layers can have hundreds of people, and thus everyone is extremely fungible (has to be, by design), and a cog in the machine. Nothing bad about that – but you need to align your expectations accordingly
You never meet anyone 2 or more layers away. Even if you fuck up
The lesson here is that, titles like “Senior Software” engineer can mean a lot of different things depending on the size and age of company you are going to.
Typically in very large companies there are levels like SDE1, 2, 3 before someone is called “Senior”
In a very early stage startup “Senior” is often a moniker just to differentiate between engineers who know what to do (vs others who need to be told what to do).
So it isn’t exactly appropriate to try to compare levels 1-to-1.
Thank you for reading system bashing. This post is public so feel free to share it.
Also for more in-depth reading on this, heavily recommend these 2 issues by @GergelyOrosz