How to Earn Six Figures as a Software Engineer in the UK
TLDR; work hard, smart and grind Leetcode.
Brits aren’t very good about talking about money. This can make it tricky to figure out which roles are the most lucrative and in this day and age of everything being available on finance, it’s hard to know who is living a champagne lifestyle on a lemonade budget and who is secretly wealthy, but frugal. Among my friends we often joke that the more homeless looking a Software Engineer is, the more likely they are to be a high earner.
According to This Is Money, earning 6 figures puts you in the top 4% of salaries in the UK. However, that is still 1.2 million people and I genuinely believe that you, dear reader, can be one of them. In this Blog I will outline a high level plan that you can follow to level-up your earning potential.
The plan below is based on my own experience and observations. It is filled with survivorship bias and there is no guarantee you’ll be as lucky as I was. However, I do believe if you follow it you will be incredibly hireable and in-demand.
The plan is mainly aimed at younger folks just starting out in their career, but I see no reason you couldn’t follow it from the middle. I also do want to be clear that the plan below prioritises wealth over work/life balance and, potentially, happiness. It won’t be for everyone. Finally, its stating the obvious but there are many different ways to achieve a six figure income as a software engineer, but this is my general advice.
Early Career
Should I go to university?
Yes, if possible; but not necessarily for the reasons you think. I completed a degree in Computer Science at a fairly respectable UK university and I’m not convinced from a “purely educational” perspective it would be worth it. However, there is a lot of benefits to university that are easy to overlook on first sight.
Firstly, it’s a chance to learn to be an adult in a fairly safe environment. You start having to manage bills, budgeting and resolving silly conflicts in a pretty safe environment. Especially in the first year, most universities provide halls which tend to be “all in” costs so that even if you budget terribly, you still have a roof over your head. universities also usually provide hardship funds for those who have ran out of money and don’t have parental support.
Secondly, you will make friends for life. If you throw yourself into university life and join clubs and teams, you will come away from university with a handful of friends you’ll likely keep in touch with for the long run. I have found as I have got older its harder and harder to make friends outside of work, and I am very glad to have this group.
Finally, all those other people studying Computer Science with you are likely to go on and have successful careers too. Having a network of people to reach out to find jobs or exchange ideas with is invaluable.
Which degree should I do?
I’d recommend picking either Computer Science or something like Computer science with AI or Software Engineering. I do not recommend the degrees like “Game Programming” or anything like that. They sound fun but in my experience are not that well respected. If you get a good CS degree, you can apply it to whatever field you like, including gaming. The same is not necessarily true the other way.
Final note on University. Some Universities offer placement years (sometimes called sandwich years or years in industry). I highly recommend taking them. In this situation, you effectively take a year off between second and third year and go and get a full time job. The university will usually partner with specific companies and will work hard to help you get them. They will also be keen to ensure they maintain a strong relationship with the company and so will give you support throughout. Furthermore, it will teach you good habits (for example, working 9-5ish) which will help you be successful in your final year. Finally, it will give you an edge over graduates with no experience.
Quite a few people that I know who did years in industry ended up getting return offers to the company they worked at. It is worth working hard on your year in industry and treating it like a year long interview. I would not be overly concerned about the company you end up at. Even if the role isn’t necessary software development (for example in consulting), I don’t think it matters. Any experience at this point is invaluable.
I can’t/don’t want to go to university
No problem. Your goal should be to build a portfolio. You could consider attending one of the boot camps. I have worked with people who did Le Wagon and found them to be effective junior engineers. You could also just build 3-4 full stack applications and deploy them somewhere. The main goal here is to just land that first job however possible. Once you have a foot in the door and some production experience on your CV, this whole thing gets easier.
Unfortunately, I have found that some hiring managers are still bias against those with CS degrees. My advice would be even if the job requirement lists a degree just to apply anyway. Some people involved in hiring (such as myself) will ignore company mandates and review CVs on their merit.
First Job - What should I look for?
I truly believe what you do for a first job doesn’t matter too much, it is more important to get the experience. As I mentioned in my post here, my first job was more project management than it was dev, and I think it has a positive impact on my career. I do think for a first job I would recommend a bigger company though. Learning within the relatively safe bounds of a sightly slower moving company enables you some safety as you find your feet. Furthermore, large companies often have training budgets and have regular leadership training courses. Do all of them, every optional course or certification. Be a Scrum master, an AWS solution architect, do the PMP course, whatever.
Whichever job you get, ensure you work hard as well as smart. The most important early career tip I have is to learn to manage your manager. Here is some blog posts and articles that helped me learn to do that:
By figuring out how to manage your manager, you will build a good rapport with them and find out what their priorities are. Whatever their priorities are, make them your priorities. I would (and still do) pick up side-projects and work on them outside of work hours that would help my managers to achieve their goals faster. This is the absolutely easiest path to growing your salary. Even at big companies, it is overlooked how valuable having your manager as an advocate is for you; they can make exceptions to processes and all sorts.
If you ever find yourself with extra capacity or you have an evening or weekend spare; automate something. Every company has some janky process that is manual or takes up time (even if it’s only a few minutes). Automation projects are always appreciated, especially if they reduce toil. Some things to look at automating might be deployments, incident management processes and gathering retro items. If you use Slack, writing Slack bots is easy. If introducing SaaS is not a problem, check out Zapier which will have you automating some workflows in seconds.
I always aim to spend at least 12 months in any job. I read that the average time spent at a startup is 12-13 months, and I think this is a good idea. Even in the worst jobs I have had, there is enough to keep me learning for at least 12 months. That is my top piece of advice on when to move jobs; if you’re not learning anymore and do not feel challenged, its time to go. Early career, you want to always be learning and challenging yourself.
Job Two - Time to move to a startup
Even if you joined a startup for your first job, after 12-24 months its still likely time to move. Moving companies is the highest leverage thing you can do to increase your salary. Furthermore, new joiners who can bring a fresh set of ideas and energy are valuable.
Startups are great places to learn and grown. Typically there is a “everything is your responsibility” philosophy which means getting involved in all aspects of the business and you’ll usually have more direct access to the CEO and CTO. This is a prime learning opportunity.
Startups generally do not provide a good work/life balance. They are not for everyone. There will be “crunch” times when you need to try and ship x feature to get y customer which will assist in z investment. However, a growing startup for someone willing to put in the long hours will enable you to get 5 years of experience in 1 year. In exchange for this, startups will typically pay a little under market rate and give you equity. Early career, I don’t think you need to take a salary haircut and you should be able to get a market rate. Furthermore, you should get some form of stake in the company. If you don’t get equity or a market rate, I recommend you keep looking as it is possible.
You shouldn’t underestimate that searching for a new job can be a lot of work. Its worth spending some time thinking about what you’d like to do next ideally, and making a spreadsheet of companies that satisfy for it. For example, if you have decided you want to focus on Rust, you might target companies that use this in production. Its worth making sure you have an up to date Linkedin and making use of the “open to work” feature. You might find your next job comes to you! I have also used hired.com before and had some interesting companies reach out, although I have never accepted an offer though it.
Generally when you move jobs, (especially early career), you want to be looking for at least a 10 - 15% increase. You can use Glassdoor and levels.fyi to try and figure out roughly what the going rate for a position at the company is, but also don’t be afraid to ask in your initial interview if they can give an idea of range. Usually a hiring manager will ask you something along the lines of “what is your current salary?”. I tend to ignore this question and instead respond with “I’m looking for x”. If they repeat the question, I repeat my answer. I have found this works really well, especially if you have done your research and know what they can pay.
Some startups will have a “Google-esque” interview process where you’ll need to grind Leetcode to pass their interview. I don’t recommend doing this and looking for companies that don’t require it since I think at this point in your career your time is better spent building side projects and working on solving “real” company issues that I think provide much more learnings than grinding leet code. Again, you can usually figure out which companies do this by using Glassdoor.
Don’t underestimate the importance of the behavioural interviews. Chances are you’ll have to answer questions such as “tell me about a time you had a conflict with a colleague”. You can use the STAR technique to help you here and I like this blog on how to prepare for these interviews.
If you’re lucky, you will have just joined a rocket ship and the company may IPO in a few years and you’ll have achieved Fat FIRE. Congrats! However, the likelihood of this is slim with less than 1% of startups achieving this.
However, if the company is a true meritocracy and you continue to manage your manager well, automate tasks, pick up side projects to improve the business and work long hours, you may find yourself growing your career very quickly. In growing startups they are going to be bringing more engineers on all the time which means they will be looking for mentors, managers and tech leads for new teams as they spin up. If any of these positions interest you, express it to your manager and be clear of your ambitions. I cannot state enough how important it is to be upfront about this, even if it seems obvious to you that you would be interested.
Not all startups are rocket ships, some are stagnant or have toxic cultures. Glassdoor can give you some insight into this and hopefully the interview process will help you surface this too. If you still get this wrong (like I did), then do not despair! My advice is to work as hard as you can for 6 months, get the experience and then look around again. I ended up staying 12 months at the first startup I joined even though in the first 3 months I could tell it was not going to grow and the people around me were not driven the same way I was. I learnt lots about what I don’t like in a company as well as some new tools and processes.
I recommend spending a few years in startups. Try and collect some vested options (which typically takes between 1 and 2 years) as you never know, they may accelerate your FIRE journey. Once you feel you are not learning as much anymore or you feel that career opportunities are stagnant (or maybe you’re just a bit bored), its time to start looking at big tech!
Why Big Tech?
I think for most of us, big tech is the best path to fat FIRE. It doesn’t have the same upside as startups, but it still does have amazing upside that is often underrated. A lot of big tech companies pay a good base salary and then also issue RSUs and sometimes bonuses. Even junior software engineers can creep into six figures at the right company with the right market conditions.
Getting jobs at this companies can be highly competitive, and nearly all of them will require behaviour, system design and leet code style interviews; you have to make yourself an all rounder. There is no getting round the fact that if you want to work at one of these places, preparation needs to become your morning, evenings and weekend. Its important you continue to perform at your current job (even if you give a little less) just in case it doesn’t work out. Its perfectly normal to have to have a few attempts at this.
The first step is getting your CV in order. The book “Cracking the code interview” has some good advice for how to structure your advice. My general advice would be to keep it brief (one page) and put your most recent experience at the top. There is some general good advice here.
Once your CV is in a good spot, its time to start the leetcode grind. I reccomend ensuring you can do the easy and medium ones here.
Its called the grind for a reason. It will take you a long time and it can be tiresome, but eventually you will see patterns and they will start to become an exercise in pattern matching. One piece of advice I have is to do all of these exercises in Python, even if you don’t know it. Its worth learning. Pretty much all the problems have a succinct Python answer because Python has some nice data structures and paradigms as part of its standard package. If you like video courses, I like the videos over at Udemy.
System Design is similar. Get yourself a little whiteboard and practise some of the problems from here. There is a course here you can do if you want to.
Once you feel comfortable you should start applying. One piece of advice I have is to make a list of companies you want to work for and work backwards. I.e, apply to the one you want to work for the least first and hopefully get some interview experience. Its also worth thinking a little broader than Meta, Microsoft, Netflix, Google and Apple. There is a few big tech companies that hire in the UK and can likely get you to that six figure mark even with only a few years experience. You can use levels.fyi to get an idea of that. You’ll see a few trading companies on here which may or may not interest you; you’ll need to do some additional prep for here.
The most important piece of advice I can give is DO NOT GIVE UP. This is a grind. This is hard. You will get rejected. This is why not everybody does it.
Other Tidbits
Be Clean!
I hate that I have to write this, but I have worked with enough people in tech that did not do the basics that unfortunately I think it is worth calling out. A lot of being successful in software engineering is about perception and therefore, paying some attention to your appearance is recommended. This doesn’t mean you need to buy fancy clothes, but you should:
Shower every day.
Brush your teeth twice a day.
Get your haircut regularly (even if its just a tidy up)
Keep your beard neatish (if relevant).
Wear deodorant and some perfume/cologne.
Change your clothes every day, even if you don’t think they smell.
Keep deodorant with you in your work bag.
Some of you may be laughing at that list, but unfortunately I thought it was necessary to be explicit.
“Everyone has the same 24 hours in the day”
You’ll hear people say this throughout your career but its just not true. If someone works 6 hours a day and someone works 12 hours a day (especially as you are growing early career), who will have more experience after a year? Perhaps its my imposter syndrome speaking but I never felt I was “naturally smart” like some of the others I have worked with but I always managed to make up for the gap with just sheer hours.
Quick Fire Finale
Prioritise work from home jobs, this will give you time to work on side projects and do exercise.
If you don’t live in London, consider moving there. If not an option, apply for companies based in London and hope you can negotiate a London salary.
Focus on leadership and communication as much as code. Writing blog posts, volunteering to lead projects. Learning out how to manage stakeholders is essential.
Cross-train. Learn about the complete stack, even if you are backend focused.
Pick a niche language and learn it deeply. Rust or Go would be my choice.
Learn how promotions/pay rises work at your company. If its cyclical, about 2 months before step up your efforts even more. You’d be amazed at how impactful this is. If a startup with no formal process, ask every 12 months or after each funding round.
Learn how to ask for a pay rise effectively. I will write about this in the future.
Make time for your health. I did not do this so well and am fixing it. It doesn’t need to be anything crazy but walk/run/gym for 30 mins a day. If you work from home, consider this “commuting”
I hope this post is helpful and it helps you grow your salary.
- The Fat Software Engineer
I'd love to hear more about why you recommend learning a niche language. Also curious if you have any criteria for selecting one.
Would you mind sharing where you work?