HACKER Q&A
📣 quisquous

How can a junior dev maximize their income?


Let's say you are a junior dev that wants to maximize their income over the next 10 years, median outcome for someone capable of getting into a FAANG, not lottery tickets. What should you focus on?

ML+Python+Pytorch because it's hot right now? Java because no one wants to maintain legacy Java code but there are lots of it and the demand will be there? COBOL to take that even further? Node.js because it's popular? Swift because Apple will continue to dominate the high end? Practice and pass the tests to get into a FAANG? Go work for a high frequency trading company? Learn SAP?

Asking for a friend (TM). Seems like a particularly interesting time to ponder this question (again), with layoffs in tech all the rage and geopolitics looking a bit less 'steady as she goes' than say, 10 years ago.


  👤 101011 Accepted Answer ✓
I know this question is situated around the tech, but the real answer is to leave every couple of years. There is always more money to be made, and the more experience you have the easier it is to get it.

I'm not saying this is what somebody should do, but if you're only indexing for income, then it's the only answer IMO.


👤 jaredandrews
While I personally didn't go down this path and wouldn't necessarily recommend it... if you are going to, the answer has almost nothing to do with any particular tech stack.

NETWORK NETWORK NETWORK, hop jobs every one to two years and make sure each of those jobs comes with a salary increase greater than what you could get via the promotion ladder at company you are leaving. Be a good enough software developer that you can switch tech stacks at will. Learn the software engineering (design patterns, how to communicate with stakeholders, etc) and language design / compiler / networking fundamentals (so you can easily switch programming languages / stacks).

Beyond that, certain subsections of the tech industry have higher salaries so network with people in those subsections.

Also just to be clear, the point of networking is so when you hop jobs you aren't applying to random jobs, you are being referred by employees at other companies.


👤 danpalmer
Learn Java or C++, get good at leetcode, and work in finance. You don't need to be a good engineer – these places are messes of legacy code created in fiefdoms run by people who care more about money than the engineering. You'll make a ton of money and feel poor because the quants will make far more than you ever will.

In my opinion this is a truly terrible path to choose, but you will earn more than anyone in tech who doesn't win the startup lottery.


👤 Zetice
The least relevant or interesting part of this question is what tech to focus on, as you can learn anything enough to be helpful in a few weeks.

The second least relevant part of this question is how geopolitics and current "layoffs" factor into this, as those are largely a product of bad management, and extremely isolated. They won't matter in 6 months, let alone 10 years.

If you are a smart and driven person, then software development is not going to be the best way to maximize your income. Get out of software and into finance, and/or get an advanced degree (MBA or law) from a prestigious university (M7 or T14). Ideally combine finance with an advanced degree, and work at an investment banking firm.

You won't be able to compete with the best individual contributors in software if you only care about cash, and in a hard(er) science field that becomes obvious relatively quickly. In finance, caring about cash is the passion, so that drive to make money will serve you better there.


👤 DanHulton
There's already a lot of great advice on what to do in the comments, so let me address a specific part of your question and suggest what NOT to do: Do not learn COBOL and do not try to make a play for maintaining legacy code.

It's not that it's a bad career, and frequently the places that still use COBOL are pretty stable and unlikely to do mass layoffs (governments, banks, insurance companies, etc), but it's TERRIBLE for maximizing your income, which is what your question is about.

If they don't have the money to rewrite all that old legacy code in something needlessly new and shiny, they very likely do not have the money to pay high programmer salaries, either! Well, that, or they have a finance-focused hand at the tiller, working to keep costs (and salaries) down. Neither of which is terribly conducive to you making big bucks in the short term. (And yes, ten years is "the short term". You in ten years will agree with me, even if you don't now. =) )


👤 im_down_w_otp
The pay discrepancy between FAANG and almost everywhere else is quite large. Even all the FAANG companies aren’t on the same level. If you think you can do it, study up, get a job at Netflix that pays 2x-3x the industry average, prioritize savings, don’t scale your lifestyle up to match income, swim around in your piles of money like Scrooge McDuck.

👤 zer0tonin
Build interesting things, meet great people, keep a curious mind and focus on building great products instead of chasing what might look good on a CV.

Tech changes fast and nobody has a crystal ball which can tell you what will be hype in 3 years. But everyone knows that having a solid professional network and proof that you are able to deliver great products will greatly benefit your career as an engineer.


👤 edude03
There isn't really a clear answer to this as if there was everyone would do it and because of supply and demand it wouldn't be a valuable anymore.

That said, there are a few "meta strategies" you could consider

1) get really good at learning and hop from hot thing to hot thing

2) do the jobs that no one wants to do that also pay well (mainframe maintenance, documentation, sales?)

3) get really good at soft skills and put yourself in positions like management where a lot of your staying power (and income) comes from the relationships you build and maintain


👤 EliRivers
Find a new job with a significant pay rise every couple of years. Think hard about the next jump each time you make a jump.

All the best pay rises I've ever had involved finding someone willing to pay me a lot more for basically the same thing as I was already doing for someone else.

Barring winning the "pick the exact stupidly-overpaid technology of the future", banking on any particular technology would have done me far fewer favours than just finding new jobs paying more money.


👤 zengid
If they can get into a FAANG, I think they're already maximizing their income compared to the rest of the industry (not everyone in Tech works at FAANG). I would focus on broadening my knowledge of as many things as I find interesting and not try to specialize for a few years because platforms and languages are always going to change, but there are a lot of core things that everyone needs to know:

  - HTTP/TCP/UDP and basic networking
  - Client/Server architectures
  - Machine learning basics
  - Cloud Computing basics
Every platform has a different flavor of these things, but if you understand the basics a lot of the knowledge carries over (or you at least can see why one framework picked a particular trade-off over another)

Also, I'd learn a little bit about Product, and what Product Managers do. Lenny's Podcast is amazing for this. Thinking about Product and how it leverages Engineering is really important. Customers don't give a shit about your backend architecture, they just want a good experience. I think that helps keep you from going down too many technical rabit-holes


👤 politician
Find a remote job in an Agile shop with a bunch of legacy code, and use an LLM to solve tickets. Then find a second remote job in a different an Agile shop with a different bunch of legacy code and use the same LLM to solve tickets.

Since you're a junior in an Agile shop, no one will bat an eye at assigning you to solve ticket after ticket. Since it's legacy code and they're staffing juniors to it, management won't really care about your code quality. Use the LLM penetrate the dullness of the legacy codebase. Just make sure not to solve tickets faster than the average burn rate.

Spend your brainpower working on your LLM system - the model, the vector database, the git integration, etc. At the end of this process, you'll own the IP for your LLM system and will have made money from two jobs.

You can rise and repeat this by applying for more junior positions and editing your resume to remove older positions. Once you're bored, just pivot directly into consulting because what I've described is literally consulting.

braces for downvotes


👤 gumballindie
Best way to make money in tech is to go your own way or leave tech all together. I know being able to afford rent and a new iphone every couple of months sound tempting but what one needs is plenty of money to own a home and start a family. Those are things that only the rich afford these days - a rare sight among tech workers.

👤 rco8786
None of that matters. If you can get into FAANG your best option is to cram leetcode and get into FAANG (or FAANG-lite...basically any reasonably well known public tech co with Silicon Valley roots). You can learn whatever you need while you're there. And after a few years jump to another one, etc.

👤 alex_lav
Worth noting, the amount of people that believe they’re capable of getting into FAANG is not the same as the amount of people capable of getting into FAANG, which is also not the same as the people that actually get into FAANG. I wouldn’t base your planned career trajectory on something like this.

That said, just pick anything and become better than average at it. What do you like? If you think statistics is boring, you’ll hate the Python/ML path. If you think CSS sucks, you’ll hate the FE path. Etc. Find something you actually like and become better than average at it, and then shop that skill around. Once you get a job, seek out the smartest people/most interesting work at that company.

Rinse. Repeat every 2-3 years (faster iteration earlier on, slower iteration after more experience).


👤 Galanwe
There are more dimensions to this that just the tech stack.

- Industry: focusing on big tech or quant finance would be a good choice. That's where the money is IMHO.

- Expertise: if you invest on being the best, that will pay off.

- Network: you will get you best offers from friends and colleagues, not head hunters.

- Role: being an above average support engineer can very well earn you more than an above average data scientist, just because there are much fewer bright people willing to work in support positions.

- Jumps: at the beginning of your career, move often, say every 1-3 years. Calm down the frequency after that.


👤 bartwr
There are two main paths to promotion and salary increase: - Becoming a super expert in one domain, or an expert in many. Rare, irreplaceable skillset that is recognized and valuable for the business. Yes, this is vague, but there are tons of different career paths where it's possible. Pick the one where you feel you can learn the fastest and are strongest at. (Often correlates with things you like!) Note: This involves some healthy self-promotion, advertising your work, blogs, conferences. Even if you're the best in the world but no one knows it - nobody will care.

- Focus on organizing other people's work, leadership, empathy, cross team communication. This is the way to get promoted into managerial and director positions at healthy companies. Obviously, a junior should not try dictate others what to do (lol, but I've seen some hyper ambitious ones like this - it didn't end well), but first very quickly becoming proactive and gathering requirements by yourself, working with many people and on many projects. Trying to expand the scope of work broad, instead of deep.

Choice of either depends on your skills and personality. The latter can eventually pay more (statistically - there are more highly paid directors than world class experts), but can be also more risky (if more senior people think you want to manage them, they might get upset).


👤 aristofun
Either focus deep in some specific business domain you like (or don't hate at least), or focus on becoming a super knowledgeable generalist.

In either case it's better to start with becoming an okay expert in a single domain.

Also don't focus too much on tools or leetcode shit, tools will evolve unpredictably in 10y. And FAANG landscape/salaries too.

E.g. java, swift, nodjs, LLM is not a domain, it's a tool.

But banking transactions, realtime video processing or customer support automation — is.


👤 ZephyrBlu
1) I think 10yrs is too short of a timeframe if you want to maximize your income

On a 10yr timeframe the decisions you make will be very different than 20yrs. For 10yrs, your best bet is probably finding the highest paying Senior/Staff role you can then staying there. For 20yrs, even if it takes you 15yrs to become a Director you will probably earn more than your high paying IC role.

20yrs gives you time for things to compound (Skills, network, etc). 10yrs does not really afford you the same time. You'll probably be jumping around jobs to maximize short-term TC instead of building and compounding on long term things.

2) Considering you are talking about tech stacks, I don't think you have a good framework for thinking about this question

What dictates compensation? Generally the scope and responsibility of your role. Nothing to do with tech stacks unless you have an incredibly niche skillset.

I don't think this question is that interesting. Play long term games and build long term skills. On a long enough timescale things like tech stacks are effectively fads. Relationships with other people and skills like being able to lead people are always going to be valuable.


👤 chagaif
As a junior developer myself, asking a similar question, I will try sharing some of my thoughts and why I think this way.

Key points:

1. Search for jobs with high salaries.

2. Move to Switzerland.

I haven't seen anything consistent yet when it comes to how high your salary is based on what programming language you know. What I did notice, like many people wrote already that you can hop between jobs and that way get a higher salary, I think that's not entirely true, you could probably pull it off without hoping between jobs but just look for jobs with a high salary, always higher depending on how high the salary of the job was where you were successful before in getting an offer. If needed you could probably also lie about how much you earn now just to see if anyone is willing to pay more.

Regarding the second point, I think it's incredible how high the salaries are in Switzerland same as the US but the market is not competitive at all and basically any idiot (me) can get a really good salary by just going through enough interviews. I can't even imagine how high you can go if you're actually like really good.

I personally started (only 3 years ago) with 72k a year (franks/dollars/euros it's basically all the same) then I went up to 78k and towards the end of 2022 I jumped up to 115k in less than a few months only by consistently taking interviews with higher salary expectations. A good way to get started is by sending a contact request to all the recruiters on my LinkedIn page and they will take it from there and bombard you with offers...I even tried optimizing the process by sending the recruiters this: https://chagai.website/notes/recruiters


👤 sarimkhalid
Many good answers already but definitely look into freelancing on the side. Maybe even build an indie project but please make sure you charge for whatever you decide to do and make sure its more than $5/month.

👤 jacobsenscott
I got into programming because I loved programming. Because I loved it I also knew which of the items in that list interested me. You're going to be doing this every day for 8+ hours a day - you better have some idea if what is interesting to you.

It sounds like you are really asking if there is a "get rick quick" scheme available in tech - and the answer is no.

I can't imagine doing it just for the money. If you aren't excited about programming at the start you'll have 10 years of pure hell.

All that said, since you can "get into faang" - just pick the faang job available to you with the highest salary ¯\_(ツ)_/¯. You won't be independently wealthy after 10 years, but you'll be quite comfortable.


👤 mytailorisrich
For sure, what area you get into has a big impact. Language, industry, etc. but there is also the "career strategy" aspect. If your aim is to maximise income and progression, I'd say you should target high growth companies and teams, for internal promotion opportunities, and send your CV out every 2 years, for external promotion and salary increase opportunities.

By 'growth' I mean increasing headcount (perhaps not the best period right now...). If you're in a company or team that has no plan to increase headcount then opportunities for meaningful promotions (expanded responsibilities and scope) and salary increases will be almost nil.


👤 sshine
As posted here recently:

Don’t be a junior dev.

https://medium.com/zerotomastery/dont-be-a-junior-developer-...


👤 smallerfish
Learn enough about product that you can be a "product engineer". Automation is coming for the industry, and routine jobs will suffer. Engineers who can make sound product decisions are and will be hot shit.

👤 heisenbit
Realize that answers from those who have been in your position years ago are answers fitting to a low interest rate landscape. The rule book has changed and so will the industries that are at the top.

👤 MilnerRoute
If the ultimate goal is increasing your discretionary income, you can also approach the problem by lowering your rent and living expenses. (Same work, different location.) Maybe even think about working in a country where the currency exchange works in your favor.

And since you have 10 years, you might also want to invest that discretionary income. (A well-diverisified portfolio is pretty low-risk. And with interest rates as high as they are, you can also get some guaranteed/fixed-rate returns that are pretty high.)


👤 rozenmd
Drop the junior title immediately from your resume.

Complain to your tech friends about tech while making new tech friends - one day they might work somewhere you want to, too.


👤 Mc91
> ML+Python+Pytorch because it's hot right now?

Watch this video, which is an introduction to logistic regression for beginners - https://www.youtube.com/watch?v=hjrYrynGWGA

If you think that is lacking some preliminary explanation, this is the possibly clarifying previous video: https://www.youtube.com/watch?v=eqEc66RFY0I

The video doesn't expect you to know deep learning, but does expect you know probability/statistics, calculus and linear algebra.

If this is confusing, then things like transformers will be even more confusing.

> Java because no one wants to maintain legacy Java code but there are lots of it and the demand will be there? COBOL to take that even further?

Over a long career I have not found this to be a good strategy. Although plenty of application servers run JVM code - Java, or nowadays sometimes Kotlin (or other JVM languages). Java is OK to do, but the idea of starting with some legacy stuff does not - there are Java programmers who have experience going back to the 1990s.

> Node.js because it's popular?

Popularity has its appeals and drawbacks. More jobs for popular technology, but there is also more competition. Companies are always having trouble finding senior programmers in niche but not too niche stacks.

> Swift because Apple will continue to dominate the high end?

iOS is not going away anytime soon.

> Practice and pass the tests to get into a FAANG?

It makes sense, as other companies ape FAANGs tests as well. Being able to do Leetcode and system level design never hurts.

> Go work for a high frequency trading company?

As competitive as FAANG for successful ones.

If I were a junior dev right now, the two stacks I would look at would be React/JS and Python/pytorch. There are lots of openings for React/JS in small and big companies, so it's easier to get your foot in the door with it, which is the important thing. But if you're already a junior dev that matters less.

Then Python is good because people run it on servers, but it's also what pytorch uses, and deep learning will surely be growing in the coming years. You can get a job and hone your Python skills even if it does not involve neural nets, and then use those Python skills if you switch over into working with neural nets.


👤 JonChesterfield
1/ get better at developing stuff

2/ interview a lot, move jobs when you see something better

3/ assume the expected return on stock options is zero

Stock in public companies (might be called RSUs) is pretty close to income. Even gets taxed like income. Stock in private companies is not like that. You can't sell it without the company agreeing, at which point the company sets the price as they see fit.


👤 frappuccino_o
You can check your odds by looking at statistics. I did it. I wanted to go for PhD but PhD salaries were lower than for Masters (on average). I wanted to live in France, but working from USA gives 3-4x more salary (on average). I wanted to switch to blockchain during the hype, but my odds of becoming a good employee were higher if I stayed in Speech Tech, so I did.

👤 have_faith
What do you enjoy doing?

It depends what you mean by maximize. Any of your options will likely put you into one of the top percentiles of earners.


👤 Vanclief
Are they trying to maximize their income in the next year or in their lifetime?

I would honestly advice them to change their mindset from trying to maximize income, to maximizing learning. So instead of finding a job that pays a lot, find a job where you learn a lot. Over the long term you will earn more if you are highly skilled.


👤 koinedad
JavaScript/Node.js is a solid direction. I see people struggling with Node/React that are tasked with it only because they are familiar with Java or some other tech stack. Being flexible and able to learn a new stack pretty quickly will help as well. Also negotiate each new role/raise.

👤 sublinear
Not with this attitude. That's like asking what kind of guitar to get to be taken seriously as a rockstar despite just recently learning how to play, not knowing very many artists or their works, and not knowing anyone who works in the industry.

👤 dharness
Maximum wealth would come from creating (or being and early member of) a startup that succeeds. This also has high risk, but the worst-case outcome for a paid early employee is still pretty good relative to the average (non-tech) salary.

👤 cvhashim04
Get good at public speaking

Learn how to tell a story

Get good at interviewing and Leetcode (this just isn’t going away anytime soon)

Learn some infrastructure management and plumbing

As for languages and code, join an org that uses Java and Go, should be good with those for the next decade :P


👤 chainwax
Though I don't make a killing, I think I've done pretty well jumping up the pay scale over my career so far. In 6 years I went from $60k to ~$185k, and I'm still aiming up.

Graduated college in 2017 and landed a job at a Real Estate company that employed 2 other developers. I was the "junior" for 1.5 years or so, but when we hired another I sort of fell into "mid-level", as I wan't the most-junior person.

In year 3, I jumped to a smaller company that was mostly engineers in ecommerce. They wanted someone to lead a consumer-facing marketplace thing that fed off a bunch of existing APIs. It was maybe a little over my head in hindsight, but they were letting me build something from scratch and hire some juniors to help so I jumped on the opportunity. Went from 60k to 100k here.

That place ended up being fairly chaotic and I didn't really believe in leadership, so after I finished the platform and had it basically in maintenance mode, I started looking for another job. I went from 100k to 120k here.

I think the last place bolstered my resume a bit, as I led building out an app from scratch. This got the attention of a f500 finance company that hired me at 155k+20k bonus as a senior. After a year that went to 165+20. I wanted more, but this was during all of the layoffs and apparently a lot of the org just got a 3-5% raise.

I definitely could have started higher, but coming from a ~3.0 GPA from a Southeastern liberal arts school I wasn't complaining and I think I've done a pretty good job so far moving up in pay. If I have any advice to give, its

1. Work hard. I generally only work 40hrs, but it's not unusual for me to do more without being asked. I care about my work, I take ownership of it, and I try to learn more outside of work.

2. Never accept the raise/bonus amount that is offered to you. Until the f500 company, I asked for a bigger raise/bonus than was offered to me and I have always gotten it. This move was probably the biggest contributor to my take-home, though I don't think it'd have worked if I didn't do [1] above. No one is going to fire you if you ask for more, the worst they will do is say no and acknowledge what you're looking for in the future. This is what happened to me at my current company at the end of the last fiscal year, and honestly I understood why they said no. The company was tighter than last year, but my boss and his boss both know what I'm after this year.

I hope this is helpful to someone. Not all of us land the cushy tech job out of college, but you can run your way up the ladder if you apply yourself.


👤 deviance
Very good question / topic. I don't have a good answer to contribute, but I am as curious as you are on the topic.

👤 d--b
Dont focus on tech, say you can learn anything, be likeable, jump ship often. Good luck.

👤 0zemp3c
whatever you do, use whatever money you earn to become an OWNER of something

this is an economy of owners and renters, you will be one or the other

so buy an income property to rent out, etc

otherwise, you are always just someone who works for someone else

people who try to succeed just based on their salary will be disappointed unless it is a mammoth salary (becoming more rare in sw)


👤 vbezhenar
Kubernetes. It's early enough, so you'll be among first adopters. It's mature enough to not go anywhere in the next 30 years. It's important enough to be adopted by anyone in the next 10 years.