Originally from yourdevcareer.com
Have you seen tech articles that talk about how certain software development fields pay more than others?
Certain fields like machine learning generally pay more than web developers, etc.
But then these articles go on to say that if you want to rake in the cash long-term then picking a specialization like machine learning, AI, data science, etc. will pay you much more.
For example, there was this article which re-capped some of these ideas.
This article wasn't saying that you should become a data scientist, for example, in order to make tons more money. But generally, the same ideas and figures are being thrown around quite a bit on the web.
I disagree with this type of conclusion.
Gross and Net salary are very different beasts.
Every one of my paycheques leaves me with just about 55-60% of my gross salary. Taxes in Canada are pretty high. And I'm not even in the highest tax brackets either.
I also have to pay into other things like a federal pension program, employment insurance, and other non-negotiable government programs. Even if I never use them. But that's another story.
Let's take some metrics from the article I quoted, which was derived from Stack Overflow's 2017 developer survey and have a look at some more realistic salary calculations.
Machine learning software developers made, on average, $108,000 USD in the United States in 2017.
Web developers made $90,000 USD.
That's a difference of $18,000 USD a year. Sounds great?
Let's take my general deduction percentage, which, on the lower realistic end, is about 40%.
40% of $18,000 is $7,200.
So, my net gain is about $10,800 (assuming I haven't entered into a new tax bracket).
Not sounding as great, eh?
Over a bi-weekly pay period, this is a gain of about $415 per pay. So $830 every month.
That's a good chunk, but not as much as you probably would have estimated up-front.
And depending on where you live, this may not offset the cost of living very much since location also plays a role in salary amount.
P.S. This article is originally from YourDevCareer.com where you can check out more articles and resources to help accelerate your career growth!
Now, let's include the overhead of specializing in machine learning vs. web development.
I studied programming as part of a 2-year college program. Many web developers chose to join a fast-track boot-camp, are done within a few months and then end with a legit web developer job. Overall, these programs will cost a few thousand dollars a year.
Some boot-camps will even let you pay "later" by taking a chunk of your future salary once you've landed a developer job.
What about machine learning?
Well, you need to know linear algebra, applied statistics, tons of mathematical algorithms, deep learning and neural networks, natural language processing, etc.
I once had a job offer to work for a software company that was doing some awesome stuff in the medical field. I declined the offer for "reasons". But I was very impressed with the work they were doing.
I had tons of interest in their core system and had asked lots of questions about it.
They created a natural language processing system that would let medical professionals and organizations feed it with text files containing information about drugs, etc. This system would use machine learning to extract and classify the various drugs and medical information contained in the text, then link them to their individual ingredients, etc. Pretty sophisticated stuff.
Were web developers allowed to touch this system? Nope. Never. Never. Never.
It was built and maintained by a Ph.D. holding scientist.
There's the rub.
Real machine learning systems that are going to be serving fields like medical, financial, etc. need super highly qualified scientists.
In other words, you need to get A LOT of training. Lots...
Is a $10,800 net increase in average annual salary worth years of intense training and potentially tens of thousands of dollars of student debt?
I would agree that some industries aren't as critical as the medical industry. Those companies won't necessarily be looking for developers with as much training. But still, the bare minimum requires some intense mathematical training.
I believe the specific industry or technical specialization itself doesn't matter nearly as much as becoming a recognized expert in your niche.
I've talked about this concept before - finding niches as you progress in your career that will help you stand-out.
Let's play a little thought experiment (hopefully, it goes the way I intend😋).
Imagine you are hiring a web developer for your growing start-up in the manufacturing industry. Your company is introducing a new way for manufacturing plants to manage their machinery in a way that will save them tons of money every year.
You need a backend developer who has experience with distributed systems, among other things.
Your candidates are:
a. 7 years of experience in backend development with about 5 years working in distributed systems professionally for the same company.
b. 4 years experience overall in backend web development while working on a distributed system for the last 2 years. But, has written articles featured in well-known publications which are known to feature industry experts on this topic. Has also spoken on a few podcasts that are known to interview experts in this field. He/she has also written a small book to help introduce developers to distributed systems design.
Who would you pick?
I would pick b.
Candidate "a" has more experience in terms of their "professional experience". Their professional experience with distributed systems is more than double that of candidate "b".
But. That's it. All of their expertise is isolated to the company(s) they work for.
How can we verify that they actually did a good job? How can we verify that, even though candidate "a" was successful at building distributed systems, it was done in an efficient way, was secure, etc? How do we really know they are learning about any new better ways to be thinking about these systems?
Candidate "b", on the other hand, has placed himself/herself into the hands of the public community. Not only that, they are being featured as somewhat of an expert in the field. Not that they are necessarily super-advanced in their knowledge, but they are standing out.
This person also wrote a book directed to a beginner audience on the topic, and may not have the experience "on paper" that candidate "a" does. But, we can be certain that they have been "tested", as it were, by the community at large.
That being said, the 2 years of experience that this person had might be considered equivalent to more experience overall since they've been involved in the community and putting in some serious effort to master the areas they have written and talked about.
Not all experience is created equal.
In addition, this candidate has more (what I like to call) leverage points.
Leverage points are these kinds of varied yet relevant achievements, experiences, etc. that you can use to impress, for example, a potential employer.
The more of these you have, overall, the better impression you leave.
For example, candidate "a" mostly has one leverage point: Professional experience building distributed systems in a private company.
Candidate "b", however, has way more:
- Professional experience with distributed systems (about half of the other candidate in years)
- Featured in well-known publication(s) X,Y,Z
- Featured in well-known podcast X which has hosted industry experts like A,B,C
- Written a book on the subject that has received positive reviews by the community
There is a kind of "stack" to these leverage points that help to verify the core skills this person needs to demonstrate.
See, candidate "b" isn't an "expert" in the sense that they have the same number of years of experience as other candidates.
However, they are perceived as an expert because what they do know has been solidified by the community.
We trust that this person is solid and has been vetted socially.
On top of all this, when candidate "b" is in their interviews - most of the interviewers won't even have a working knowledge of distributed systems. But, this candidate will make a serious impression on them by pointing out these leverage points.
Leverage points can be helpful during salary negotiations too 😊.
P.S. If you are curious about salary negotiation, I would recommend the book "Never Split the Difference: Negotiating As If Your Life Depended On It".
At the end of the day, these leverage points help you create a more robust impression to your potential employers that you are the real deal in your field.
Near the end of this article about career ownership, I listed out a few ways to own your career. This is also a good starting point to think about what leverage points you can gain.
Naming dropping, for example, is a big one. If you can point out that you've been featured by some big well-known publication/brand, it will really impress your audience.
Of course, this isn't the core of your expertise.
This stuff is like icing on the cake to prove that what you already have stated about your skills is true.
It's the difference between being perceived as "good enough" and being perceived as exceptionable. Or, as Seth Godin would put it - remarkable.
If you focus on putting yourself out into the community and providing real value then you will grow your reputation.
One of the hardest parts of hiring is knowing whether the candidate in question is good at what they do and whether we can trust them.
Naturally, if the public community trusts them - then that's huge evidence that someone hiring can trust them too. Therefore, is also more reason to pay them more since they've proven themselves as being worth investing in.
Don't forget to connect with me on:
An e-mail newsletter that will help you level-up in your career as a software developer! Ever wonder:
✔ What are the general stages of a software developer?
✔ How do I know which stage I'm at? How do I get to the next stage?
✔ What is a tech leader and how do I become one?
✔ Is there someone willing to walk with me and answer my questions?
Sound interesting? Join the community!