I’ve been programming for 24 years. I started by slanging PHP in a LAMP stack install on a Windows XP machine when I was 16. In the 24 years since I put <?php phpinfo() ?>
into a text file, I’ve gotten a Software Engineering degree, worked in e-commerce consulting, adtech, medtech, fintech and edtech on 2 continents. I’ve written production code in Lingo, Actionscript 3.0, VisualBasic/VBScript, C#, Ruby, Python, Javascript, Elixir, Scala and Clojure. I have written personal hobby code in PHP, C and C++. I can write desktop applications, web applications and internal tooling. All of this to say that I have a lot of experience in programming and working in the industry.
Yet it seems like when I apply for senior software engineer roles, I’m up against 20-somethings with at most 2 or 3 years in the industry. What’s up with that?
Where did these kids come from?
I kind of touched on it in my last post on the state of programming as a job in 2024 - programming got a lot sexier over the last 5 years. Not because the fundamentals of programming changed - because it suddenly became worth a lot of money.
In 2000, a fresh computer science graduate could expect to enter the industry earning around $48k. 22 years later in 2022, a comp-sci grad could reasonably expect $102k. That’s an increase of salary expectations by roughly 200% in 20 years, vs. inflation at roughly 75% over the same period of time. I think it’s easy to see that salaries have shot up over the last 20 years. This is good for us career programmers. It means we earn more money, which is always nice. It’s also really bad for us career programmers.
For one thing, there are way more programmers competing for a given job than in the last 20 years. That in turn is putting current downward pressure on salaries. Employers have their pick of programmers right now and it’s easy to low-ball someone who was laid off and needs to pay their mortgage next month.
Now I’d expect that a bunch of programmers entering the industry 4-5 years ago would have caused a clump of junior to mid-level programmers. It makes sense to me that someone at the beginning of their career would have trouble finding work in today’s climate. We lost over 200,000 jobs over the last 2 years.
What I didn’t expect was to be competing against these programmers for senior software engineer jobs.
Over the last 5 years I’ve worked for a number of employers beside a number of other programmers. I’ve worked with programmers who graduated top of their class in MIT, and programmers who graduated the local tech bootcamp. This isn’t a hit piece against bootcamps - some of the smartest people I’ve worked with studied at bootcamps. I tend not to put much stock in someone’s education - I’m a firm believer that you can learn almost anything on your own with enough motivation and grit.
I recall one particular co-worker in the past who was a year or two out of one of these bootcamps. Things between us came to a head when we got into a heated exchange in a code-review. The piece of code in question didn’t seem to make sense, and it definitely didn’t resolve the issue the programmer claimed it did in the PR itself. I asked what to code did, and how it resolved the issue.
He couldn’t tell me.
It turns out he searched the internet for the problem, saw some code somewhere that he felt fixed the issue and submitted it. I don’t know if he didn’t take the time to understand what the code did, or if it just couldn’t figure it out. All I knew is that he was trying to push code that he didn’t understand.
I thought it was a one-off experience - this company just happened to have a programmer who was under-skilled for their job. As it turns out, I was wrong.
I have since had the pleasure of repeatedly meeting and working with under-skilled programmers. I don’t harbor any ill will to any of these programmers. We all had to start somewhere, and nobody starts an expert.
My problem is that these programmers are supposedly my peers. They’re also senior software engineers. The title implies that they’ve been around for a while, they’ve seen a lot of the ebb and flow of this industry and they have experience.
What exactly is a senior software engineer?
I don’ think there’s a single definition - software development isn’t a credentialed profession like law or medicine, so we don’t need to be certified or tested. Anyone can claim to be a professional developer - you just need to back it up in an interview. Having said that, there are a few traits I’ve observed among senior developers during my career:
We know what to do - we actually rarely need management. Senior folk tend to be in-tune with what’s going on at the company, what the business challenges are and the direction the C-levels want to product to go. Management consists of telling us what’s going on with the business and your ideas to fix it, and when you want it by. The rest we can just do.
We know what not to do - knowing what to do is great, knowing what to avoid doing is better. We see through the performative meetings which is why we work through most of them. We know that making that trade-off now will just bite us in the ass 2 years from now. We know that the AI tool you want to integrate is going to underwhelm you.
We can do anything - no matter if your production stack is creaking under load, you need to integrate an ancient SOAP XML API or you actually have no idea what you actually want but you have a few loose ideas, we can do it. If we haven’t done it before, we can learn how to do it. Computers have been around for at least 45 years and haven’t really changed significantly. I don’t care what your programming language is or your tech stack is - I’ll learn it.
There’s more, obviously. Seniors tend to have been exposed to different programming paradigms, languages, architectures, and design patterns. They’ve experienced successful projects and failed projects. I’ve only enumerated what I think are the most valuable traits of senior programmers.
Twice now I’ve met senior programmers who have only worked in their pet tech stacks and never stepped outside. They’ve never released a significantly important feature. They only know React - ask them to read a Javascript stack trace and you get instant panic. They don’t know how to write raw SQL without their ORM of choice. They don’t understand what a protocol is, really, just how to use one. They’ve never designed an API that was intended to be consumed outside the company.
In short, the seniors of today are senior in tenure only (and even then, not really). It seems as if titles and salaries exploded in lockstep during the pandemic. I wouldn’t be surprised if companies offered higher titles as leverage in salary negotiation to either hire a new employee or retain one thinking of leaving. They’re seniors because their previous manager gave them that title - not because they have seniority in the field.
That’s not to say that these folk are less capable, less smart or less passionate about their jobs per se - just that by definition they’re not senior. They don’t have the experience in life or in the work place to justify any kind of “authoratative"-ness. They’re not necessarily going to see the same patterns and trends that seem to continually come and go. By the way, where are we on the whole “compute should be at the edge” vs “compute should be centralized”. I think we’re at edges again?
Ultimately, given what’s happening to the industry, I’m not sure it matters. All of us are facing a change in our careers - regardless of seniority or lack of it. I don’t think any of us can really tell what programming will look like for the next batch of real senior developers. Maybe they’ll be spending their time teaching AIs how to code instead of juniors, and the juniors just work the AIs.