Hacker News new | ask | show | jobs
Ask HN: How can a junior dev maximize their income?
53 points by quisquous 1114 days ago
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.

41 comments

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.

Strongly seconding this answer. I did the opposite in my career. I did not change jobs often enough. One job I had for a very long time. The growth staying in place was not very much. I knew changing jobs would get me more money, but I didn't think I could find a job as good in all the other aspects. I was wrong. I've changed jobs a few times more, and every aspect got better, including money.
I agree with this as well. I spent 7 years at my first job, and would have been much better off moving at least once. After that I tended to average closer to 3 - 4 years at jobs.

I would recommend having at least one stop where you spend more than a year or two, just to show that you can get past the initial ramp up period. This avoids having a red flag on your resume, but that may be old fashioned thinking.

The original stipulation is someone with the skills to get into a FAANG, so I'll focus less on that. I'm also going to ignore quality of life considerations.

Cynical ideas, with a slant towards making the most money: - Don't be afraid to move, or take advantage of working remotely.

- Get a job that pays Silicon Valley money / RSUs but then move somewhere cheap.

- Pay more attention to potential stock benefits, that's where the bigger money can be.

- When the market is running better again, jump to a company that should go public soon. This way you get the most shares with the least personal risk. If you get good a guessing who the "hot" company will be, you can do really well.

- Companies aren't allowed to say when they're going public, or their stock may disappoint. Switch and try again if you've guessed wrong.

- Don't stick around past your initial stock grant (generally 4 years).

- Keep an ear out for the hot new tech / VC focus, and learn enough of those skills to get hired.

- Get good at interviewing.

Note: this is what's worked in the past, future conditions may be different.

I spent my 20s following this advice, but now in my 30s I am starting to question it.

When I look up the org chart, the people higher up have been at the company 5+ years. Moving into the higher roles requires the right opportunity, which often takes time to find. Those "right opportunities" are rarely given to people new to the company and are often used to retain existing high performers.

Certainly if you're stuck in your career and are not on a growth path, jump ship. But if your job is promoting you consistently every 2–3 years, then I'd stay.

You are talking about two different goals. Yes, stay if you want to climb the corporate ladder but if you want to maximize income then one must jump ship. Some people are just not cut out for the corporate route so moving is good advice. These are the people that just transition to starting their own companies in their 30s/40s or consulting.
Interesting in that I kind of did the opposite. I stayed at one company for a long time, and then moved more around later in my career.

Perhaps there is an argument for getting to the "staff" level quickly, and then hop around more as it's harder to advance past that level?

In my own network and in my current role, I see people that should have left years ago, but they never got the hint that their careers stalled. I would have a direct conversation with my manager to see where the growth is and then verify that with action (Are they promoting other people instead of me? If yes, leave.).

As far as reaching staff and then jumping ship, I have no idea. I started my career 10 years ago and at the time, I thought "senior" was the highest option, but then staff role got created.

I wonder if in 10+ years, the IC ladder will get taller, so people don't feel "trapped" at staff level.

Title inflation is a thing even with ladders. I know of some non-tech industries where there are 15 levels to climb and at level 7 you were considered a director already.
Can't upvote this enough (or indeed more than once) but yes, this is the way to do it. Don't stay anywhere more than 2 years until you're more than comfortable with your income and/or taking a role where it's beneficial to stick around for longer.

Companies don't expect people at the beginning of their careers to stick around for long.

The other benefit is that you get to experience a broader range of environments and technologies, which is good for everyone.

I would say this is right for the first 2-4 jobs but then I would start looking for really promising startups with equity and stay until vested (normally 4 years) unless it's clear the startup is not doing well or you see another startup you just cannot miss. Having said that in my actual career I missed out on a big equity payday due to the dot com bust and my best year I earned about 200% of my base salary + benefits due to bonuses. Later in my career 35-60 I did better maxing out 401K, and stock option plans and just accumulating IRA money. I wish I had converted my traditional IRAs to Roth IRAs during the dot com bust when I was self employed running my own business and making very little.
That is the only correct answer.
To a point. People who move around too much will not get the job if there's a comparable candidate that has stayed around longer at previous jobs.
Not necessarily, not when I hire. On-boarding, and ramping up in a new environment is a skill and to some extent, I see that as a value add. A person who has gotten comfortable in a role for 10 years is often slower to ramp vs. a person that has seen a lot of environments and projects.
Depends on the role. When it's a highly complex system where it will take 6 months for the person to become a productive contributing member of a team, I have most definitely heard and been part of conversations where we considered if the person will stay around long enough to be worth the effort of training. On the other hand, for roles where it's a series of 1-2 month projects to make fairly straightforward changes to network protocol implementations, time to turnover for a new employee hasn't been a concern.

Of course a reasonable explanation for why a person has turned over jobs so many times can negate the concern. It really depends on the candidate. My point is that someone early in their career needs to recognize that there are both upsides and downsides to switching jobs frequently.

Optimizing for “ramping” seems incredibly shortsighted.

Does seeing things through, pushing through the hard bits, the bits that only come up after a few years when your pet project starts spouting fire or some major restructuring happens and not to mention loyalty doesn’t mean anything anymore?

If the company was giving pensions and compensating people like loyalty mattered then we could have that conversation but there is no loyalty toward employees from companies. I see loyalty to any company as shortsighted from the employee's point of view.
There’s the issue of building virtue and good character, which I suspect are ancient and long obsoleted concepts.

This pragmatism is understandable, but I don’t think it’s a nice way to live. Of course to each its own.

I’ve been on interviewing panels before. It is extremely rare to have two “comparable” candidates for any one position. Everyone has different pros and cons. Tenure at past positions was always very low on the list of qualifiers we evaluated.
Is there a reason why it was low on the list? What qualifiers did you placed more on? Could you explain more about the thought process?
I’ve also done a decent amount of interviewing, and have a similar (but slightly different) experience to the GP.

We considered someone’s career history a problem when they had several jobs of ~a year or less. Or someone interviewing for a senior position with 4-5 years of experience across 5 companies, for example. If those were the case, we were much more likely to reject them.

If someone (hypothetical) had 10 years experience, with a few that lasted 1-2 years, one that was only a few months, and maybe one that was 4-5ish years, then that was no problem at all. We wanted to be sure they had seen the consequences of their prior decisions, if they were coming into a high-mid or senior role.

When we did hiring, we wouldn’t be comparing candidates 1-to-1 like “Well A had this, but B was good at this, which one should we pick?” …instead, we would just say “ok we’re in hiring mode, keep hiring everyone who is good until we have enough for xyz goal”. So it wouldn’t be that CandidateA is better than CandidateB, but rather if they both met the standards, then they’d get hired.

Some of the qualifiers that mattered more than tenure for us were:

* are they capable of explaining technical problems and communicating

* do they understand algorithms at enough of a level that they won’t cause major performance issues

* are they polite and friendly, how do they respond to feedback

* can they build an architecture which handles expanding requirements

* how eager are they to learn and work on our tech stack + business domain

I haven’t interviewed juniors really, so I can’t speak much to that. But when we’ve hired someone less experienced, it would be the same requirements as above just with a lot more leeway on tech, and more emphasis on “eagerness to learn” + “receptive to feedback”

If that is the case, then the job is not one that our hypothetical job hopper wants, so it all works out.
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.

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.

> You don't need to be a good engineer – these places are messes of legacy code created in fiefdoms ...

For juniors coming in, "messes of legacy code" probably isn't the best learning environment from a tech skills standpoint.

For more sr folks coming in to "message of legacy code", you do need to be a good engineer, because you may have to be working around a lot of stuff that can't be changed. You may not have version control. You likely won't have any sort of fancy CI/CD/pipeline process. You may not have tests (as the code is likely untestable in its current state).

For people actually working in FinTech today, what does a day-to-day workday look like? What types of problems does your code solve?
You solve a lot of the same problems that other tech companies solve, just with different constraints. An example I like to use is: "Facebook can afford to lose a 'like' on a post -- whether that is through data loss or just eventual consistency -- while we cannot afford to lose a penny (exaggerating a bit here) since there are people making live decisions on that penny"

Those sort of problems are more on the product side, along with the regular slew of product development tech problems. On the infrastructure/platform side (where I work) it is remarkably close to "regular tech". Same types of distributed systems problems, database issues, CI/CD pipelines, engineering efficiency, etc. The "new" part here is working with the finance specific areas such as physical data centers and networking to clients, or domain specific items such as data retention for compliance.

I generally think of "FinTech" as startups/scale-ups working on finance related products, and they're not too different.

There's quite a difference with what I think of as pure-finance, companies that aren't producing a tech product, but are using tech to make money with financial services, or betting on the markets in various ways.

As for the problems, I was once in an interview given a coding task of moving money around a network of companies based on tax rules. Fun.

I am a junior that does C++ currently for HFT. Lots of legacy code, although I don’t think the code is that terrible (although I am a junior so maybe I can’t tell).

Any reason why it’s a terrible path to choose? Am I stunting my growth? I was hoping HFT would help leverage me into a big tech company for systems level stuff since (at least I was told this as a selling point to get me to join) its tougher here so FAANG likes to see HFT experience. Is that not the case?

It depends on the FAANG, though most of them have some amount of C++ code. Google has a ton; they'll appreciate people who know the language well.

I think people may be concerned because these days it's more niche, though it's still a very common language. Take a look at the job postings from the companies you want to join and see what skills they want. Get familiar with some of them, even if you don't do them professionally.

Get good at the Leetcode style questions.

Are you doing distributed systems work? Can you answer design questions like: design bit.ly, Twitter, or Facebook? There's a lot of info out there on how to solve these problems.

There may be questions about your ability to work with "big data". But that's also something you can pick up on your own, even if you aren't doing it at work.

Look for technically challenging projects at your job and solve them. Learn from them. Think about ways you could have solved them better with what you know now.

> Any reason why it’s a terrible path to choose?

These reasons are not universally applicable, so see what fits your experience, but... code quality is often poor, internal practices often seem to leave a lot to be desired, company culture does not seem to be a focus, assholes seem to get rewarded.

You can probably get into big tech from it, but perhaps not at the seniority you might expect, or if you do you may find it a struggle to get onboard with industry norms around engineering process and company culture that are missing from a lot of finance companies.

Another junior eng here chiming in.

Base on what I can gather from my friends who work in the space (DRW, Citadel) it's just more stressful and has more politics than my current role (ML Engineer @ a retail company). Trading income for work-life balance and stress, and maybe OP is hinting that as you progress down that track the WL balance and stress only increase.

Just my 2 cents and why I didn't choose to pursue that path.

isn't it risky to work on finance related code...

i don't want to get shouted out by a bunch of coked up psychopaths.

I think this culture has changed a hell of a lot. When I started there were eating contests on the floor and someone got fired for being sexually harassed. People would break keyboards and bring water pistols onto the floor, and there would be free dinner each night for anyone willing to listen to salespeople.

Nowadays, it's quite different. Gifts have to be logged so people don't do it much anymore, metoo happened, and I can't really imagine another burger eating contest, even though that last one is fairly tame.

Finance is a large field with a lot of different personalities and cultures. Paying top dollar for devs is inversely correlated with getting shouted at by coked up lunatics, although there are exceptions…
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.

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. =) )

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.
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.

This is the best advice.
It's totally inactionable though. "Build interesting things", "meet great people". It sounds nice but it's completely hollow. Not to mention "what looks good on a CV" is actually a really important thing to consider.
"Build interesting things" is pretty actionable, it just requires opening your code editor and building stuff that interests you. There's a good chance that your interests will overlap with other people's interets and that you'll end up having built something interesting.

"Meet great people" isn't crazy hard either, literally just talk to people, and keep talking to the one you find great. If you have trouble talking to people, I recommend Dale Carnegie's book (How to win friends or something).

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

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.

You can price yourself out of the market with this strategy.

Because every overpaying technology normalizes over time. Someone who is willing to pay more at this point in time, will always find someone cheaper in time next few years.

You can always lower your price back to market. Pricing yourself out means you've spent the last N years getting paid top dollar. I'll take it.
In reality, you cannot lower your price. You have mortagages that assume that you will be paid at x amount every month. You life is planned around the money you make. If you take a pay cut, it does impact yuor life.
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

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

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.
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.
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).

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.

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).

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.

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.

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

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.
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.

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.

As posted here recently:

Don’t be a junior dev.

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

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.
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.
I’ve been thinking about this. You bring up a good point. Advice of the last decade might not apply anymore given the changing landscape in tech and broader economy along with the feds response.

Joining hot new startups or VC propped companies may or may not be worthwhile. Is there a point of learning the latest FE frameworks or some new backend language? Companies will be risk averse. Hiring across the board might be tighter for the next couple of years with less roles so Leetcoding your way to a FAANG job might not be enough.

OTOH, the changing landscapes and uncertainty could lead to massive breakthroughs, initiatives and opportunities ex. (LLMs, AI, AR/VR, emerging markets in lesser developed countries, Renewable) etc.

Expand on this. How has the rule book changed and how would you answer OP's question now that we're in a high-interest rate world?
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.)

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.

> 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.

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.

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.
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.

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.

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.
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.
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.
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

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.

Very good question / topic. I don't have a good answer to contribute, but I am as curious as you are on the topic.
Dont focus on tech, say you can learn anything, be likeable, jump ship often. Good luck.
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)

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.
Kubernetes and react can’t go on their merry way soon enough.