Although this article is for earning a high income as a software developer, the same principles apply to all other professions.
It’s not all about money, but software development can pay very high income if you play well in the industry.
The average software developer in the UK earns £37,469 according to Glassdoor. You can also become a software developer without a degree. But can you achieve higher? Yes, you can.
Here I share the most important tips that helped me go from looking for my first job to £100,000 in 3 years.
I have to admit it was not an easy path for me and it’s not a get-rich-quick scheme. It requires hard work, decent values and to always strive for improvement.
It sounds too good to be true but I believe anyone can do it. I wouldn’t write this post otherwise. Also, there are people who have done much better than I did and laugh at my post right now. I hope I read your stories in the comments guys!
For now, here are my top-10 tips:
Working really hard
It may now seem an easy life. Working 9-5, taking frequent holidays and earning a very high salary despite the expensive city I live in. Hell, not only I’m enjoying my everyday life but I will be free to choose whether to continue working after 7 years. This is when I will achieve financial independence. How awesome is that!
I am really grateful. But you may start wondering.
How can I follow the same path and earn loads of money just after getting my first job?
Here is how I did it, and how you can do it too.
If I have enjoyed a quick success, it is because I worked really hard for it.
This is the first and foremost of all the top-10 tips. Have no illusions. If I’ve done well so far it’s because I sat my ass all day for many years trying and trying and trying. Since elementary school, I always tried to get the best grades. High-school followed with a very stressful exam period that got me into the engineering school. There, I focused on getting the projects done, help other people and learn as much as possible about the field. (Ok, I also partied and played some online games too 🙂 ).
Then I got hired into a startup. That’s because I had shown them my dissertation work for which I spent 2 months trying to crack the goddamn problem. Day in and day out.
I worked significantly more than the average person, giving talks to conferences, technical meetups and helping people out. I started a technical blog which helped me get my second job, again thanks to the network value of reaching out to people.
There I worked even harder, as I really enjoyed the algorithmic aspect of it. Weekends, evenings and 12h days were not necessary but happened from time to time.
And here I am now writing to you about how hard work is paid off! By working hard on trying to build a blog audience and teach people, that will benefit both you and me.
Oh and luck. But I have learned how to increase my Luck Surface Area! As this great blog post demonstrates: “The amount of luck you receive is directly proportionate to the degree to which you do something you’re passionate about combined with the total number of people to whom this is effectively communicated”. In other words, you make your own luck!
I didn’t consider it lucky when someone offered me a job without an interview out of the blue because they had read how to analyze bank data on my side project. Or how a person with whom I had a conversation over tech-meetup-pizza wanted to partner with me next week.
Of course, there are exceptions to the rule, like a friend who inherited a good amount of money or a dad that owns that hotel chain. But for the rest of us, it’s all about pure old-fashioned work.
Actual value vs Perceived value
I was lucky to realise this early in my career.
When negotiating for a promotion, a starting salary or for anything that needs an evaluation of my skills:
It doesn’t matter how much I know. What matters is how much people think I know.
Unfortunately, this is the sad truth. You may accept it and play with the rules or deny it forever and hope for the best.
I have worked hard to learn from all sources, attended meetups and conferences and contributed to online projects. But I had to make this visible and make it count.
As I said in the first point, it’s really important to be a competent software developer in terms of technical skills. There is no question about that. However, it is equally important you improve your soft skills too. The skills that will allow you to let others perceive your value and realize they would be missing out had you not been there.
When getting hired or receiving a promotion or getting a bonus, what matters is how others value your work, not exactly the value of your work. The value of your work is the necessary bit. The essential work that won’t get you fired. But you will be rewarded according to the optional bit, which is how much value others think you’ve added.
You may be the best programmer in the world but if no-one knows about it then there is no point.
Here are a few things that incredibly helped me increase my perceived value (ranked from highest to lowest):
- Run a technical blog & Github showing my expertise
- Give talks and attend free meetups (like this and this)
- Help others solve their problems whenever possible
- Reach out to community members (ex-colleagues, people that share the same interests, blog authors)
- Send an e-mail to my manager highlighting the work I did in the week. It doesn’t have to be long, just a few bullet points summary
I would write a book on the topic, but luckily there is one – Soft Skills by John Sonmez.
If you develop software, you should develop yourself too.
Write a blog
I don’t think it’s just a coincidence that being a technical blog author gave me an incredible boost in the industry. Job opportunities aroused just because I had demonstrated my expertise in certain areas such as big data algorithms, machine learning and open-sourcing my dissertation (which yet I’m not sure was a legal thing to do!).
My posts made it to the top of HackerNews, hitting 6k visitors a day for 2-3 days. Such exposure was very valuable. It gave me the upper hand when interacting with potential conference organizers, industry people who wanted to use my code, etc.
I gave talks as an invited speaker at a university, a data conference, local groups and met so many people who face similar challenges. All of the above not only boosted my confidence but gave me something to talk about at interviews.
We are what we repeatedly do. Excellence, then, is not an act, but a habit. Aristotle.
When you run a technical blog you demonstrate the value you can add to partners and businesses alike. You say: “Look, this is how I would solve this problem, and here are the advantages and disadvantages of this approach.”
If people disagree with your content, GREAT! This will challenge you, find out what others have to say and improve yourself. By writing a blog you force yourself to write quality content and put your thoughts in order.
Nowadays it is quite easy to start a blog. Just register on Siteground, click the automatic install WordPress button and you can be up and running in 5 minutes. Seriously, it’s that easy.
You will always have content to write about. I usually find myself taking notes on Trello while commuting to make sure I remember what my future posts are going to be.
Never stop learning
We live in 2017 where knowledge flows freely on the internet in one form or another. I have found that the best way to educate myself is to complete short online courses on Coursera, Lynda, Treehouse, Edx, Udemy or any other platform I can really find!
Learning online can not only make you more competent but can show you ways to push your career forward. Whether it’s about learning a new specialization or programming language or even learning how to learn (!) – the knowledge is there. Staring at you.
This also holds true for the company you work at. Try to learn as much as possible from your colleagues, from online documentation and technical education that is provided. You get paid your replacement cost, so make sure it’s high.
I’ll give you an example. I wanted to step into Data science more since it’s a very interesting area for me. I had no work experience and touched the surface of it at a previous role. A friend suggested the popular Machine Learning course of Andrew Ng, by Stanford University. The amount of information I absorbed and the quality of it was astonishing!
Sure, it took me 11 weeks and many hours fighting with Matlab but, oh boy, let me tell you it was worth it. I built a library that learns how to recognize handwritten digits, a neural network that can drive a car, a program that can predict house prices and other exciting stuff!
That gave me the push to open-source some of it in conjunction with other technologies on my blog, which enjoyed a few hours in the top-10 of Hacker News.
I was also offered 2 jobs which I turned down because I had already too many plans for the near-future!
The point is – be a voracious learner and it’s going to pay off multiple times in the future.
The common excuse I hear is “But I don’t have time”. What I hear instead is “I’d rather do something else”. Nobody has time or resources. This video by Anthony Robbins really nails it. When people don’t have resources they make them.
Be competent, do not be shy and make sure you know the company systems better than the person who set them up. It’s going to make you more valuable and helpful. In case you want to increase your salary, that’s a good way to start.
Move where the money is flowing
By observing the market you can move to the most profitable areas. Any worthwhile programmer can learn another language or technology in a few weeks.
Currently, in the back-end engineering I’m in, these fields are large-scale engineering (aka “big data”), data science and microservices architecture. I make sure I’m active in those fields by choosing an appropriate role and spending a few evenings at relevant talks. Taking part in seasonal hackathons is another great way to get exposure in interesting areas.
Even in a specific area, there are micro-niches that always stand out. In a DevOps role, for example, DB administration and Puppet pay well in general, but you get bonus points if you can master containerization (eg Docker) and cluster management (eg Kubernetes) in the cloud.
If you can get yourself into the fields that are in great demand, pay will follow.
Know your market
Are you underpaid or overpaid?
I have found that a great way to learn about a market is setting up alerts on JobServe. This is a classic job search portal but without any bullshit upselling or ads everywhere.
It comes with a great alert system that gives me a daily or weekly overview of relevant jobs in the market. From what you can see in the picture below, it’s a 20-second check every week in my mailbox. I have also filtered out to only receive alerts that pay at least 75k annually.
Here’s an example alert for Java/Scala roles that pays at least 75k, taken right from my inbox.
Glassdoor provides some good estimates of anonymized salaries. How much are jobs advertised for? Or how much is company X paying for a developer role? What are the trends?
By having a constant flow of relevant information you know how much you’re getting paid compared to the industry.
I hate Networking too
I hate this word so much because it brings a negative feeling in my mind. The feeling that I’ll have to print out business cards and exchange them asap, which usually results in meaningless connections that never talk again.
But it doesn’t have to be this way.
One thing I learned reading this amazing book is that People like to work with people they know.
This is built-in in our human nature.
If you know someone that you like to work with, and you know is a good person then there’s nothing else to ask for. The interview becomes a ‘typical process’. Again, what networking is under the hood, is pretty much helping other people and get to know them better.
I have always tried to help by connecting people I know. Someone who wants a job should meet your friend who wants to hire. I provide my expertise whenever possible whether that’s for software architecture advice or managing personal finances.
- “Which technology should I use to solve this problem?”
- “How can I make more money?”
- “Where to invest?”
are common questions I regularly answer. What is your expertise and how can you help other people as much as you can?
People remember, and if you read another great book (Influence: The Psychology of Persuasion) you will recognize the importance of reciprocity. In other words, the practice of exchanging things with others for mutual benefit.
The title may sound cheesy and the practice subtle, but it’s not. All I needed to know was this: Help others and they will help you back.
What I got back is stronger friendships, job offers, business partnerships and plenty of great feedback on my thoughts.
Start with your friends, family & colleagues and expand from there…
Once I remember sending a cold-blooded e-mail to the keynote speaker of a tech conference I attended. He was a person I admired because I had been using the open-source framework he’s written (that’s Apache Storm). I wanted to meet him in person and discuss challenges and successes I had experienced using his work.
To my surprise, he was happy to meet me. In fact, he invited me to spend some time talking about different technologies and comparing London to San Fransisco as a city for software engineers. I was really glad I had sent this e-mail.
I guess I am never afraid to ask people for what I want.
This includes asking managers for a raise as well as people I don’t know for their valuable opinion.
I am not satisfied easily and trying to be persistent. However, this has a limit – you cannot frustrate people and become annoying.
But as long as you make your work visible and show your value, why not ask to be paid back for the extra effort you put and the quality of your work?
Managers are busy, forget or whatever. I make sure I remind them I am there and try to show my value.
Learn how to negotiate
I hate negotiations. Probably I’m not the only one. It’s such a hard subject to crack because usually, both sides have a conflict of interest.
Negotiation starts way before you join a company or a project. This is why being approached by someone instead of you reaching out gives you the upper hand. Imagine a person approaching you after your conference talk in order to partner with you. Which position would you rather be in?
Nothing is rigid in this world. If you want to achieve something try to present the facts first and then objectively negotiate.
Every role in the industry has a budget. For example, a company may demonstrate a role on 70k plus benefits but what they really mean is “We’re looking to hire someone between 60-80k and we’re happy to offer 80k for a suitable candidate”.
A company will not take an offer back if you ask for a higher salary. If the company wants to hire you it’s because they really want you. Companies have a budget for roles and you need to score near the higher end of that range.
Negotiation starts BEFORE you join. This is why it’s important to increase your market value by blogging/speaking/networking rather than relying on a good CV.
You can hardly double your salary while you’re in the company but you can always get hired on a much higher starting salary. That’s another reason that explains why candidates jump from company to company every 2-3 years here in London. It’s an easier way to bump up your paycheque as well as get exposed to different technologies, teams, industry etc.
A great book on negotiating is the Getting to Yes by Roger Fisher.
I loved the way it describes the negotiation process. It’s surely hard to negotiate but it doesn’t have to be a fight. If both sides can reach an agreement based on facts, that’s a win-win situation. It all starts with understanding what the other side wants and giving it to them.
You can get far in the industry just by being nice.
Golden Rule #1: Do not argue with people.
Golden Rule #2: Do not be a douchebag.
None wants their ego hurt and people have strong egos in the software industry. Avoid arguments at all costs.
Learn how to let off steam every now and then.
Appreciate people’s work and give the thumbs up when someone achieves something. The same way I like hearing “Good job”, I like telling people when they deserve it. It doesn’t cost anything and it makes relations better.
We all deal with people day to day, and it’s people who build things together, not coding.
I guess that was all… All the top tips that helped me get a high income so far.
If you develop software, you should develop yourself too.
When such an amount keeps growing then you can start dreaming. Will I achieve financial independence anytime soon?
I hope this post will be an inspiration for both new starters and existing engineers to up their game! I’ll be very happy to help. Send me a message or leave a comment below.
* If you buy the above books via the links then this blog will benefit (and thanks!)
If you find this content valuable, please share it with your friends on Facebook or Twitter. You help me bring more readers to this blog and encourage me to write more useful content like this one!
17 thoughts on “From Zero to 100k in 3 years as a Software Engineer”
Very interesting post… Working hard always pays off big time.
Very inspirational. I started learning how to program around 5 years ago and been working in the industry for 4 years, I’ve recently negotiated my way into a £55k job, which I’m pretty pleased with up here in Manchester. Not sure if £100k is possible yet up here in a salaried role but there’s no harm in setting high targets!
I am also looking to live a more frugal life and have the option to retire young (32 currently). This post just struck a chord with me as I have the same kinda attitude to relentless learning an improvement, although i could do with re-starting my blog that’s been dormant for 18 months.
I’m looking forward to reading through the other posts on this blog 🙂
Great journey so far, Robert! You haven’t mentioned it, but are you a self-taught programmer?
I believe £55k is quite a good salary for Manchester, probably a £90-100k London equivalent! I’m currently investing more time into the so-called Big Data technologies (I hate the cheesy term). Both challenging and rewarding in terms of compensation. Lately though, personal finance has taken most of my free time though, I need to get back in! 🙂
Thanks! Yes I’m self taught. I’d been working minimum wage jobs throughout my early-mid 20’s got in debt and decided enough was enough and embarked on a great journey of self learning.
Unfortunately I haven’t been as frugal as I could have been, debts however are paid off and I’ve built up around 5% towards a mortgage. Coming across this blog and Mr Money Moustache have both inspired me to work towards early retirement… Now the journey to learn more about personal finance really begins!
I’m mainly a front-end developer and have dabbled in back-end (NodeJS) and this role is going to be more back-end heavy so will be a good opportunity to learn much more here, including some big data and infrastructure stuff too.
very helpful blog.
Glad you like it Ram! Tell your friends too 😉
Could not agree with you more with your tips… especially the one about just being nice! Manners and just being a positive person to be around goes a long way.
One thing that I always think about when moving roles is that the grass isn’t always greener on the other side. Had colleagues move to investment banks on the technology side for higher salaries and end up working +12 hour days and weekends to keep up with workload. Worth taking into consideration…
So true Neil. People think moving to another job will always be better but that’s not the case.
In my experience, knowing people inside an organization is the best way to grasp the feel of the place. I guess that’s not always possible which is why (genuine) networking is usually beneficial.
Greeting from the homeland. 🙂
I am re-reading for the thousand-th time this article, as I find it extremely inspiring, thanks for that.
At the point where you mention that: \’Currently, in the back-end engineering I’m in, these fields are large-scale engineering (aka “big data”), data science and microservices architecture. I make sure I’m active in those fields by choosing an appropriate role and spending a few evenings at relevant talks. Taking part in seasonal hackathons is another great way to get exposure in interesting areas.\’, I have a question to ask:
As I am a backend engineer too, where do you get up to date with such stuff? How did you learn eg microservices are hot and how will I/you/we know what’s next? One’s company’s trends might be a source but what if they are ‘tech dinosaurs’?
Very nice post, greetings from brazil!
regardless of the language, i believe my “barrier”, and where i spend most time of because i belieive is what the market requires, its about “programming right”, i mean, everybody can code, but can everybody respect and understand design patterns, and others conventions?
i think that would be nice if you make a article about the knowledge “pos-programming”, the kind of programming patterns that the market wants and for you to become a really good coder.
sorry for bad grammar.
Thanks for your comment, Thiago. I agree with you, the market wants you to be the best coder. I think the more experienced you are the easier it becomes to think in terms of design patterns, appropriate data structures and the ‘right tool for the job’.
A book called “Clean code” helped me become a better software engineer.
One of the most inspirational blog posts I have read this year so far. It is hard to believe what you have achieve in such a short period as I seen that basically seniors can’t earn that kind of money. I think that your thought on actual value vs perceived value is a gold.
Oh wow, same here! I moved from Spain to Scotland 3 years ago and I went from being unemployed to be a contractor now, earning ~£120K. The hardest part for me was actually believing I was worth it because people always make it sound difficult and try to bring you down.
It took me years to decide to study software development because everyone was saying how difficult it is, even when I knew I loved it I wasn’t sure of myself. And then it was the same for contracting and having my own business, having to hear from colleagues that I needed more experience or it’s too risky. Same with moving to another country, they made me feel I was crazy!
You don’t get big results without trying, it’s sad how many opportunities we loose in life because of fear. I’m ready now for all the people who’ll tell me how risky is to invest haha
Thanks for your post!
This is such an amazing achievement Mara, from unemployed to £120K in 3 years! I think we are limiting ourselves by our thinking. It’s not just you it’s everyone. My brain is wired in a very risk-averse way that prevents me from starting new businesses!
Good luck with your investments and hopefully you’ll find some relevant content on this blog to help you with it. Thanks for commenting 😉
Hey Gheorghe, HTML, CSS, JS are all important if you want to follow the web development path. I think there’s enough demand in all areas of software development so it really depends what YOU want to do. Perhaps you can explore a course on Kotlin/Android ecosystem or iOS development.
Or you find the backend development interesting, in which case you can learn some Node or Java. I’m biased towards Java a) because it is my main, but b) because you can also find it useful in case you do Android.
So keep learning and try to show case what you build on Github or on your website.
PS nothing wrong with thinking about girls 😉