I’ll answer this question with a different perspective.
If you just want to be an “employee” (nothing wrong with employees! but if that’s all you want to be), then your best bet is to study the shit out of algorithms + cs interview problems.
Do every single problem on leetcode.
And then you’ll probably be one of the best interviews they’ll have had. If you spend 3 months every day for 8 hours doing leetcode problems, you’ll get a job at Google or Facebook, assuming you have mild competency as a software engineer.
You make a cool $110k per year (assuming you’re also a new grad / junior level hire) and then in 10 years you might get up to $230k / yr.
Nice money, and stability, but there’s a secret out there that top tech companies don’t really want you to know: you’re most likely being underpaid. If you become a kickass software engineer who can build anything (and if you can do it with speed), you can make much more money building up your own products or even development firm. And then you also have much more freedom.
Let me tell you, if you know how to
Then you will be the hottest person in the Valley. Everyone will want to hire you. At that point you won’t be employee #10,000 at Facebook / Google doing the mundane. You’ll have lots of people really wanting you to build their product. If you know the right people at Facebook or Google, you’ll even have them at your doorstep wanting you to lead large teams for them.
If you’re an employee your earnings are capped. If you work for yourself and build your own business, you earn as much as you can bring in.
Do you want to be an employee for life? Or do you want to be the best tech gal / guy in the Valley?
I faced a similar crossroads. In the end, it wasn’t that hard of a decision for me. I built those god damn products.