Anecdote from a Software Engineer

Anecdote from a Software Engineer

If you want to be a junior software engineer (think 50k – 80k salary), you need to understand several basic things:

  • at least one high-level language (think Python or Java)
  • at least one lower-level language (think C)
  • data structures (LinkedLists, ArrayLists, Dictionaries, Binary/AVL/RedBlack/SplayTrees, Stacks, Heaps, PriorityQueues, etc)

If you want to move past junior and become a mid-level software engineer (think 80k – 100k salary), you must additionally understand:

  • Algorithms (big-O runtimes, pros/cons, optimizations for searching, sorting, NP-reductions, domain-specific algorithms)
  • Some type of domain-specific skill that makes you more valuable (networking, distributed systems, etc)

If you want to move past mid-level and become a senior software engineer (think 100k – 200k salary), you need to improve the quality of your skills and/or learn some very in-demand skills, like DevOps.

Your salary will always depend on your location, skills, and how well you negotiate. In addition, the type of company, and their status will also determine how much you get paid. For example, I bring in about $2 million worth of revenue for my company and pull in $120k with bonuses. We have about 70,000 employees in total. I am interviewing with a much smaller company (5 people) and I’ll actually be doing significantly less than I currently am (but it is a much more in-demand skill) but I won’t take the job for less than $140k and it looks like they’ll meet my expectation. The general thinking is that smaller companies in startup mode pay less; however, that isn’t always the case.

I’ve had about 10 technical interviews since I graduated college. In addition, I’ve performed about 30 technical interviews with prospective employees. There are generally 2 types of interviews: coding theory, and “show me what you do.” Coding theory interviews are the typical “show me how to reverse a string” and are great for determining if you are a competent junior engineer. However, they are useless once you have a few years of experience. “Show me what you do” interviews involve you talking about your work, and how you can apply that work to the company’s mission. They are terrible for junior engineers, but great for senior ones.

If you are being interviewed, you can tell how much the prospective employer respects you based on the type of interview that you receive, and your experience. With 4 years of experience and 2 degrees, I walked into an interview and was asked to reverse an array. I did it, but I’d never work for a company that asked me that question unless they pay me a boat load of money. It shows they only want to know if I can be a code monkey, and they don’t care about the sexy stuff that I’ve built.

Edit Response

Honestly, it just sounds like you’re underpaid and have a skewed perception of the market. Either that or you live in a low COL area and the startup you’re moving to is also in a similar area. Regardless, bringing down 2MM of revenue should be compensated better, and maybe there are non financial benefits you receive.

I think for the junior level you outlined, the requirements are weird. I’d say junior level employees probably need to know one language of any level well enough to interview in – it doesn’t matter if it’s C, Python, Java, as long as it’s common -data structures and algorithms (sidebar: is it possible to understand data structures and not algorithms?).

And the salary for competent employees is super dependent on the area. If you’re willing to go where the money is (the Bay, Seattle), 100k is starting salary for juniors. 50-80 would be in places like Texas, Illinois, Ohio, where there is a growing scene but it’s not too expensive to live.

Close Menu