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!