How to Maximize Your Income as a Software Engineer

Mathew Kuhn Making Money 8 Comments

I’ve worked as a software engineer for a few years now. And while I’m far from being an expert, I’m acutely aware of what makes an engineer more money. Obviously, these are all my opinions based on personal experiences, but I hope at least a few of these tips help you improve your financial situation and job satisfaction.

My Humble Beginnings in Software Development…

What makes little ol’ me qualified to speak to this? Allow me to share some of my background:

I actually didn’t go to school to be a software engineer. I majored in IT (Information Technology), where I only took the basic computer science classes. I’d never heard of Prim’s Algorithm and had implemented Dijkstra’s once before I quickly and happily forgot it. 

I got hired at Amazon as a “Linux Cloud Support Associate”, where I rotated with different teams with the target goal of becoming a Systems’ Engineer. Oddly enough (and luckily for me), I kept getting put on teams that wanted me to do full-stack development work. I learned that it was way more fun for me to build something from scratch than to deploy infrastructure and run linux commands all day (even though I sort of do it all today). So when a friend said we should loop for a software engineering position, I was all in. I studied “Cracking the Coding Interview” and a few weeks later I was coding away as an official Software Engineer at Amazon. 

I had always gotten straight A’s in school because I understood the formula – work hard, study, and do the homework. At the time, I believed in the little lessons I learned growing up and watching idealized movies – that hard work and a pleasant attitude would help me climb the corporate ladder and beat out all the slackers. After all, the good guy in the movies always wins in the end! 

I was hired onto a team within Amazon Web Services (AWS) that was literally the only dev team in my specific org not in Seattle. This meant that my leadership (manager excluded) had no visibility into the work I was doing. And I worked some long hours. I worked through lunch and often worked at night. In meetings with my manager, I was constantly told that I was doing great work. I didn’t talk a ton in the office because I was always working on the next feature or next sprint story.

After about a year of working on our service, my team finally launched. A year before our launch, we were told that the thing we were automating was a big deal and would save/make the company a ton of money. However, when we launched, the senior leadership almost seemed confused at why we had built the service and what the impact was. I was extremely confused. Hadn’t they just asked for this a year before? I was then passed up for promotions twice and was finally told that the director (in Seattle) didn’t know enough about my work to promote me. I’d basically have the whole process of delivery and building my reputation over again.

At first, the victim mentality kicked in – “After outworking most of the other employees in the org, and giving up a ton of my free nights and weekends, I was being told that I wouldn’t be promoted any time soon!? Why did upper management wait a whole year to check in on the project?!” I felt used and betrayed. Several coworkers left to work for Microsoft. It was a huge hit to the ego.

Because of all this, I learned a ton about what not to do to get promoted and increase that income. Luckily, the proactive part of my brain eventually kicked in and I decided I’d get at least a slight “promotion” by switching companies to work for a bank. Which is where I learned more lessons on negotiation – mostly because I made some mistakes there as well 😉

My Rules Going Forward For Maximum Job Satisfaction (And Pay)

Go for the Raise/Promotion Right Away

In our field, Imposter Syndrome is a tough disease to cure. You feel like you’re not as good as the engineers around you and they’re just moments away from finding out that you’re a fraud. This causes a lot of devs to postpone going after the promotion or raise they want. Once you’re “smart enough” or “experienced enough”, then you’ll go after the next level.

Highly Paid Engineer: Go after the next level as soon as you can. If people don’t know you’re trying to get to the next level, they won’t start looking out for the work you do. If you don’t see yourself at that next level, it’ll be very difficult for anyone else to see you there. I’ve known engineers who didn’t get a ton of work done, but they truly believed they should be promoted. More often than not, their confidence made leadership believe they were ready. 

Also, sometimes you’re not given certain opportunities until you’re at the next level. You may need to know how to design systems in order to get promoted, but you don’t have any opportunities to design until you’re at that level. I’ve seen a lot of engineers learn what they needed for a position once they were already at that next level, while getting paid more. Yes, it’s the opposite of what your company will tell you is “right” – but they’re looking out for themselves! You need to look out for you and your family.

Negotiate In The Beginning and Never Take A Companies’ Word As Payment

Like I said before, a company does (and should) look out for themselves. They’re running a business after all, and their job is increasing revenue while decreasing expenses. As you’re running up against a deadline arbitrarily set by an HR rep, you may start justifying a lower offer. “Well, at least it’s more than my current salary!,” or “Well, I’ll just work really hard and get promoted within a few months!” – these justifications will leave you feeling cheated and bitter.

Highly Paid Engineer: Have patience and don’t back down. If you’ve done your research and know what you’re worth, put a stake in the ground and stand by it. There are always other companies if this one doesn’t work out. Trust me, I’ve made this mistake. I had a number in mind that I felt was reasonable and fair for my experience level. I let my ego get in the way and tell me that I needed to do anything I could to get out of my current company. Which included accepting a much lower offer. 

In my defense, I did ask for more. However, the HR rep told me that their number was the most they could offer someone at my level. For one, that wasn’t true. They can always make exceptions and I wasn’t anywhere near the top of my pay-band. I also later found out that they were considering me for the level above the one I was hired at. If I had just asked to be hired at that next level, I could’ve gotten my target salary. Remember, your leverage comes from not needing to take an offer. Yes, deadlines are a good negotiating tool against you, but they’re also a good tool for you. Your deadline is also their deadline. And they probably won’t want all the work of interviewing you to have been for nothing.

Finally, a highly paid engineer never takes an HR rep’s word into consideration when considering an offer. I was once given an expected total comp statement that included an “expected” bonus of $5k. The rep told me that I was almost guaranteed this money at the end of the year and that it was safe to include the number in my total comp. When the end of the year came around, I was rated as “too new” and received $1k – not a huge loss relatively, but annoying nonetheless. I also had a coworker who was promised they’d get promoted within a few months if they came in at a lower level. The org wanted to “verify they could perform at the expected level”. Years passed without ever getting promoted and the employee eventually left. Take any promises with a grain of salt.

Know Your Company’s Promotion Politics

When I was an intern and just starting out in the professional world, I believed that hard work and passion were all I’d need. I’d stay up late at night getting work done. I figured my work would speak for itself. It did not. That stuff alone WILL NOT get your promoted. Many engineers like to put their heads down and crank out code. They might feel that it’s their manager’s job to recognize what they’re doing and they can just focus on what they were paid to do – write code. Unfortunately, companies are far less idealistic.

Highly Paid Engineer: The highly paid engineer makes it a priority to figure out what a company (or an org if you’re in a big company) promotes on. It’ll take some work to get past the fluff like “deliverables” or “mentoring others”. What you’re looking for is what engineers in the past have done to get promoted. Typically it boils down to one thing – visibility. If no one knows you, no one will vouch for you. If you work until 1am, but nobody outside your team knows it, it won’t make a difference.

I’ve learned that understanding a company’s politics makes “success” in a job so much easier. Amazon really does focus on big deliverables. When I say “big,” I mean deliverables that leadership cares about. So if you’re on a team that has very low-priority projects, it doesn’t matter how hard you work – you will get passed up in favor of engineers on higher-visibility projects. So you’d want to switch teams or maybe leave and come back in at the level you’re looking for. 

Other companies may say they want you to mentor, deliver, design, present, get certifications, become an SME in a given domain, and basically be a robot, but they really just need a majority of the leadership to know your name. By knowing that, you can focus on the few things that will make the most impact in that regard – writing company blog posts and sharing them with the org, presenting in technical meetings, etc. Although you should get your Sprint stories done, you don’t need to worry as much about little tasks as they won’t help you get any closer to a promotion. 

Make Work/Life Balance Key

This sounds cliche, but it’s way too easy to get sucked into work. When something takes up 8+ hours of your day, it’s hard not to get so wrapped up in that last-minute bug that you decide to stay at work just another hour. Or you figure a couple of extra hours each day will make you a shoe-in for that promotion. Don’t get fooled by this. You may work those extra hours and then not get promoted. Then what? You just wasted months of your life for a promotion that may never come.

Highly Satisfied Engineer: You want to get paid more, but you also don’t want to hate your life. This is where understanding your workplace politics can help. If you know what really impacts your chances of promotion, you can focus there and spend less time on things that don’t matter as much. In the end, you have to do what makes you happy. I still work overtime some days because I feel a sense of ownership over the work I do and I enjoy learning and coding. But it’s nowhere near the hours I used to spend working. Those hours were worked out of fear and made me miserable.

I had a friend who made it a priority to work 8 hours and then go home. No matter what, they would typically drop what they were doing, and leave. This friend also got a promotion and I did not. The friend had worked on a very high visibility project (this goes back to understanding what really matters to a company), and the rest is history. Don’t sacrifice your work/life balance for money or company pressure. Oftentimes, it’s just in your head. The work will be there when you get back to it the next day. If not, I recommend looking for a new job.

Always Be Working on a Side Hustle

It’s easy to feel safe in a job. You go to work, they pay you, you live your life. “I only want to watch TV after a long day of work – there’s no time for a side hustle”. If this makes you happy, feel free to skip over this section. If not, then read on 🙂

Highly Paid/Satisfied Engineer: As a software developer, you have a huge opportunity to build both financial security and something you’re really interested in. Most developers aren’t privileged enough to love what they do. I’m sure you didn’t wake up one day wanting to build an automation system that has no applicability to your life and only serves to make a big company more money. The technology might be fun and you don’t mind the work, but you’re probably not passionate about it. By having a side dev project, you’re able to work on something that has real meaning to you.

As a developer, you have the rare gift of being able to combine two passions – coding and whatever else you’re interested in. This gives you a huge advantage over others who might have ideas, but have no idea how to bring them to life. You also get to learn new skills that can carry over to your job. The opposite is also true. You can use the skills from your job to speed up your side project significantly. 

A 9-5 is pretty stable, but there’s always a chance you could lose your job or something could happen to you physically that prevents you from working anymore. A side hustle can provide supplemental income while providing you security if something goes south. There may come a time where you could leave your job altogether to work for yourself. Salaried jobs typically have some sort of pay cap. Owning a business really opens up the possibilities. It doesn’t even need to be coding. It could be real estate, an ecommerce website, or even a blog!

Final Thoughts…

Be An Owner, Not a Victim

As I’ve been reminded in the book Extreme Ownership by Jocko Willink and Leif Babin, everything in my life is on me. If I don’t like my financial situation, it’s on me. If I don’t like my job or I feel like I’m not getting promoted, it’s on me. I can choose to stay and have a better attitude, I can go to another team, or I can leave the company entirely – my choice.

As a software engineer, it’s extremely easy to blame others. “My manager didn’t promote me.” “That other team is dumb and slowing down our release.” “Our team doesn’t do anything fun.” Etc etc. It might make you feel better temporarily, but those phrases only slow you down from what you’re really after. Analyze the situation, make a decision, and execute.

First, you need to have a target. If not, you’ll find yourself at the same job in 15 years at a far lower pay than your newly hired peers. Then work towards it. You have it in your power to reach each of your career goals. You just have to keep moving forward and learning from your mistakes. This is my own attempt at learning from my mistakes. And I’m much more confident about moving forward because of it. Take ownership of your life and maximize your income!

Are there any things you’ve learned that’s helped up your income as a software engineer or another 9-5 role? Comment below!

Comments 8

    1. Post
    1. Post
    1. Post

Leave a Reply

Your email address will not be published. Required fields are marked *