How to avoid the software salary ceiling


When I was re-entering the tech workforce 18 months ago, I ran into several problems:

  1. Nobody cared that I had worked as an engineer for Google or shipped 2 very technical products while starting a company. I was still put through the technical whiteboard wringer when interviewing. 
  2. My old salary was too high for my local tech market.

Today I’m happily employed, as these were only temporary roadblocks. But I’m writing this post so you can be aware of these issues in your local tech market.

Software engineering starts off as a great career. The starting salary for a computer engineer in 2015 is $62,553. Life is especially good if you work at one of the top engineering firms: Google, Apple, Facebook, etc. There you can expect to make 2-300K a year as a senior software engineer, which for most people, is all they ever need. Plus, you don’t have to spend extra years in school, or work long hours.

But what if you don’t live in silicon valley or work for one of those top companies. Google pays salaries in the 90th percentile, but what if you only find a company that pays in the 50th percentile?

Many people reach senior software engineer, and then they get stuck. They’ll still be a “senior” level developer 5 or 10 years later. For many, getting stuck is just fine. They like coding, and they don’t want to manage people, and the money is pretty good. The average pay for a senior software developer in the United States is $106,575, which is plenty for an upper middle class income. But what if you want to go beyond that level? How do you break through that pay ceiling?

I experienced this problem first hand when I left Google after 3 years and became an entrepreneur. 3 years later, I re-entered the workforce as an employee with a couple of hangups:

1) The Interview Process

When I was interviewing at startups and bigger companies around town, nobody gave me any credit for having worked at Google, or for starting a company and shipping 2 very technical products. They still put me through the whiteboard wringer, asking me about algorithms and trying to evaluate my coding skills. I won’t go into this. As many have mentioned before, the software engineering technical interview is broken. We’re the only field that places 0 emphasis on what you’ve done before. The fact that I passed the Google wringer once apparently didn’t matter to anyone who was interviewing me.

Anyway, it turned out fine. I went over all of my algorithms and “Cracking the Coding Interview”. I screwed up a couple of interviews along the way, but ultimately wound up with a good job ~3 months later without having to move. When I compare that to how long it takes people in other fields, I know I got off easy.

The interview process is just something you have to accept if you’re going to work in software. Maybe some day the technical interview will fix itself, and companies will stop interviewing people this way, but I’m not counting on it in the next 10 years.

Google and Microsoft have spread this nonsense. Until a new “hot” company becomes the top dog, and doesn’t interview candidates this way, the industry will remain the same.

2) My salary was too high.

Local recruiters balked at my old salary. Funny enough, I hadn’t been collecting a salary or getting raises for almost 3 years when I went looking for a job. Even with 3 year old salary numbers, I was still over-priced for the local tech market. I stopped going to interviews until I gave the recruiter a compensation ballpark. If they didn’t freak out, I would agree to be technically interviewed. 

When I took the job at Google right out of school, this is not what I had expected. I thought Google would help me in my career, not hinder me. Instead of being impressed, people would see Google on my resume and write me off as too expensive.

Had my career really peaked when I was a 24 year old at Google?

Now I understand why older programmers complain about rampant ageism in Tech. Younger workers are cheaper, and programmer productivity is notoriously difficult to measure, so most companies opt for the cheaper option.

So what do we do about this problem? How do you avoid this “ceiling” if you’re looking for a job as a more experienced programmer?

The best solution I’ve seen is in James Whittaker’s book: Career Superpowers.

James was my old director at Google. He jumped back and forth between Google and Microsoft three times, doubling his salary each time, and he did it without burning any bridges.

The biggest takeaway from the book is specialization. Most software developers avoid QA like the plague, but James chose that career on purpose. He knew it was easier to stand out as a tester than as a regular software developer. He became a national authority on testing and QA, started a testing company, went to Google as a test director, and then finished up at Microsoft as a Vice President. Specializing worked well for him.

Viewed through this lens, the problem with my resume was that it was too generic. Sure I had worked at Google and started a company, but my resume still essentially read “web/mobile software developer.”

I knew all of Google’s proprietary technologies, but those just aren’t applicable in the real world. As a result, there was no clear distinction between me and a kid coming out of school, other than being more senior. But once again, more experience isn’t valued at most companies because developer productivity is so hard to measure.

It sucks, but it’s the field we work in.

So what am I doing now so that this doesn’t happen again? One option would be to get out of software and go into management or project management. But I like programming. Most programmers do.

Instead I’ve opted to take the James Whittaker approach. I’ve spent the last 6-8 months learning graphics, OpenGL, and WebGL. Most people don’t know 3D graphics, and we’ve found it notoriously difficult to hire for graphics related jobs. The fewer people that know this stuff, the better off I am.

The flip side is that it will be more difficult in the future to find a job. There are obviously fewer graphics related positions than generic web developers. But that’s a gamble I’m willing to make. Anytime you want more pay, there are going to be fewer jobs offering the higher salaries.

We will see how it plays out for me over the next several years.

Photo Credit: Steve Cadman