But I still don't think this is enough for me to make the move to FAANG or other tech companies unless I stay here for a long time to rack up experience (I only have 2 years SWE experience at this point). Also, as the org I work for is not a tech company, I'm not sure how seriously recruiters will take my time here.
I've studied data structures and algorithms, and I think I am a decent programmer. I could probably progress quite quickly through CS50 or some other online course. I just don't know if it's beneficial.
This topic online is full of misinformation and people just trying to sell you a course. So this seemed a good place to ask.
I'm UK-based by the way.
Thanks.
It won’t get you very far though it’s an intro, personally I am looking at CS61a/b/c next.
https://inst.eecs.berkeley.edu/~cs61b/sp22/
More concretely from reading your post the best thing you can do is move companies to a more engineering focused company where you can learn more, before you are ready to shoot for the likes of FANG
I've been in SRE or SRE-adjacent roles at Amazon, Microsoft, Dropbox, and now a quant hedge fund (the first three in the US, the last in London). My only degree is in English lit.
Your hardest step is getting into your first job with good name recognition in the tech industry. For this, your best bet isn't certs, it's networking -- find someone who can refer you, which will get you past the automated resume screening and get your resume in front of a hiring manager, at which point your degree and certs don't matter.
I think the carts mostly exists to satisfy corporate clients
I had the same feeling as you (regretting not doing traditional CS). I ended up studying it on my own and really recommend it as I find that it made me into a much better engineer.
The only place where having a CS degree would be important is if you want to move to a different country and the company would have to sponsor your visa.
That said, FAANG seems to be pretty tight with headcount these days, hopefully it’s better in a year or two.
Cheers!
If you want to talk to someone about this don’t hesitate to reach out over email!
I recommend applying and grinding leetcode if you aim for a SWE role. Two years SWE experience is enough for them to give you an interview with a cold application through their job board in my experience.
Choose one side of the coin and prepare accordingly.
To simplify:
- FAANG (and FAANG wannabes): leet code, algo, CS stuff
- other tech companies: getting things done, Open Source contributions
The only part of a degree course that really matters in an interview context is algorithm analysis. You need to understand how the cost, in space and time, of code you write scales with the size of inputs.
Degrees and certificates from reputable organizations may be important for getting a H-1B visa though, should you want to emigrate in the future.
Everyone says you don't need degree, but in my experience if you want to do advanced stuff (machine learning, cryptography, algorithms) you probably need one, unless you are extremely talented and can pick up everything on your own.
You probably don't need degree if you want to work as SWE in mid-tier companies, once you have experience there are no problems with finding jobs.
On the other side of the leetcode discussion, I’ve worked at a company that managed to hire someone with zero ability to program based on their ability to bullshit. I personally loathe doing leetcode myself, but I won’t hire someone who can’t take a stab at it, and I don’t want to work somewhere where my colleagues might be bullshit artists.
Now this doesn’t apply so much at startups, because founders generally don’t tolerate hiring decisions that would kill their company. So for example our first engineer at one place had a six hour interview where they broke down this game engine that they themselves had written. So, “it depends”.
If you are targeting fintech, ML or "rockstar" corps that might be different.
https://www.colorado.edu/cs/academics/online-programs/mscs-c...
But as they say, this will only put you on the radar, but then it's all about LeetCode-Hard and -Medium and system design.
For staying in FAANGs learn to embrace and exhibit "leadership principles". It is all about impact and likeability during perf. FAANGs arent (especially) immune to politics and all things that come with humans at the helm.
If you can prove you can do the job, you will get the job.
0. Total Compensation (TC) Salary comparison site: https://www.levels.fyi/ Anonymous posting with verified employees: https://www.teamblind.com/
These are the best tools for finding out what compensation actually is at these places. I know enough people in these companies to know these numbers are accurate. Keep in mind these numbers often include stock appreciation. You can filter to new offers to get numbers that exclude stock appreciation.
1. Leetcode (LC)
FAANG+ interviews always involve solving programming problems in real time. The best place to practice is Leetcode.
Buy a yearlong Leetcode premium subscription and do all the modules listed here, in no particular order, but skip decision trees and machine learning: https://leetcode.com/explore/learn/
When you are done with that, do all the problems on this list: https://www.teamblind.com/post/New-Year-Gift---Curated-List-...
A lot of these problems are on the modules linked previously, so you will only have 30-40 new problems here
Next, do random problems until you "see through the matrix." Focus on medium level problems. Try to do something like 35% easy, 50% medium, 15% hard. If you can't find the optimal solution to a problem, "upsolve" by reading a bit of the solution and trying again. If you still can't get it, copy the code of the solution and study it. Then erase it and try to solve it from memory. Periodically go back over solved problems and re-solve them while taking notes. Your goal should be to solve two random LC mediums in ~35 minutes. Solve problems out loud to simulate communicating your thoughts to an interviewer.
Consider using Python as your interview language if you are comfortable enough with it. It's faster than Java for writing. Some places will have you run the code, others it will be a glorified whiteboard, so don't use the run button as a crutch. Around two weeks before your interview, start doing company tagged problems like: https://leetcode.com/company/doordash/Start doing this part first and grind it hard. It might take 3 months, it might take a year. It takes as long as it takes until you think you can crush it.
2. System Design
The system design interview tests your ability to piece together components to build an entire product or feature. A typical question is something like "design a URL shortener that serves 1B requests per day." You will need to choose database/pubsub/caching technologies appropriate to the problem, describe DB schemas, caching strategies, partitioning/replication schemes, design APIs, etc.
For senior level roles, this will be the most important part of your interview as far as leveling. If you are shaky, they will downlevel. Buy DDIA: https://www.amazon.com/Designing-Data-Intensive-Applications...
Read it more than once.
These courses on educative.io are useful: https://www.educative.io/courses/grokking-the-system-design-... These videos are also really good: https://www.codekarle.com/
Also FAANG level engineering blogs. Uber/Doordash/Netflix/Facebook. Tech talks on Cassandra/Kafka and stuff like that.
Videos are the best last minute prep before interviews for design.
3. Companies
On Blind people talk about company "tiers" Companies like Salesforce/VMWare/Adobe are tier 2. TC is still amazing, but not as good as tier 1, which they call FANGMULA (Facebook, Apple, Netflix, Google, Microsoft, Uber, LinkedIn, AirBnB) Amazon/Zillow are easier in terms of LC problems but ask more behavioral. I would do these interviews first since they are good practice for getting behavioral stories real sharp.
Facebook/Google/Uber are on roughly the same level of difficulty from what I've heard. LinkedIn/Lyft/AirBnB/Netflix pay more, but the interviews can be harder. Also Google is way slower than these other companies, so if you wanna consider them, get the process started as early as you can.
Browsing Blind will give you a decent sense of company culture.
4. Applying
Get referrals wherever you can. Most places will ignore you unless you have them. I applied to probably 25+ companies and got rejects or ignored for all but Uber, AirBnB and LinkedIn. Places I had referrals to I scored onsites for 100% of the time, including places that rejected me before a referral. You can get them referrals off of Blind, but you probably also have people in your network in FANG and top tier companies. People will be motivated to refer since referral bonuses are usually large.
5. Interviewing
The process is recruiter call -> "phone screen" (do an LC problem on Hackerrank on a zoom call) -> "onsite" which is 5 hours of zoom...usually 2 coding, 1 behavioral (maybe a small coding question as well), 1 design.
Do mock interviews with friends/colleagues for LC problems. I would totally be willing to do mocks with you when you are ready. I had 3 different people give me a total of 6 mock interviews. You can also pay for this with different companies like interviewing.io or randoms off Blind. I can give you the contact info of the guy from Uber who did the system design mock with me as well. He is super super good. It's much harder to find mock interviewers for system design.
Also for interviews you can interview over 2-3 days after 3pm PST to avoid taking time off work. Recruiters will let you push back interviews for any reason multiple times, especially if it's for more interview prep, so if you aren't where you want to be before one, it's totally fine to ask for more time.
6. Negotiating
You should try to get all your interviews lined up very close together to get competing offers, which can increase your offer by a lot.
The CSI course itself isn't a FAANG prep nor will you take interviewing or leetcode classes.
Here's a free version (and larger in volume of knowledge) of what CSI offers to enable you to understand and interact with: teachyourselfcs.com/