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.
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.
The quants (people who do the analysis to give buy/sell signals, basically, typically using programming for the analysis) will generally need a strong grasp of statistics and finance.
The developers that build the trading platform will need a strong grasp of exchanges and the mechanics of trading, but not really of statistics or "how the market works/reacts".
The developers that work on the reporting side don't really need a strong grasp of either. The math is relatively simple, the difficult part is handling stuff like cross trades. I.e. internally trading stocks between portfolio managers without having to hit the actual exchange (i.e. PM A wants to sell Intel, and PM B wants to buy, so you just transfer ownership instead of actual buy/sell orders). You have to attribute a profit/loss to PM A even though there wasn't a "real" profit or loss.
The SRE/ops side often doesn't require much knowledge of finance or math. The apps aren't particularly unique, and the portions of the trading flow you're expected to know aren't hard to pick up in a month or two. You aren't typically expected to have an in-depth understanding of trading strategy, or a highly detailed understanding of how trading works mechanically. Knowing that stuff probably lets you command a higher salary and title, but it isn't a prerequisite.
The goal of the job is keeping large systems online and operational.
Think: systems engineering, DevOps, and sysadmin at scale - leveraging automation.
Lots of other shops still call it DevOps Engineering, Production Engineering, etc.
(I've never been in a company big enough to have one of these, so I'm just trying to understand)
Rather than focusing on making the software do X, it makes software that already does X more resilient to failure.
I think it strongly depends on exactly what you end up developing.
You don't necessarily need a better name on your CV yet. If you're just starting out, having a single financial org on there already is enough — as long as you can get good references.
Do something to skip the recruiters and talk directly to your potential colleagues.
UX Engineering it a good fit for my skillset (and might be for other self taught people too).
Thought it might be too late. As a magazine writer I had interviewed Chris Espinosa of Apple, their first documentation person. He started his employment at Apple when he was 14 years old.
It's anecdotal based on my social circle and their younger friends, but I'm wary of turning into my parents with advice like "you don't need a degree, just a firm handshake and an affinity for hard leetcode problems!"
I have never interviewed someone with many certifications and thought the person would be a good addition to a team, and I have never worked with someone who has many online certifications and thought they are good at the things they are certified in.
It's fairer to just focus on competency, certified or not.
1. Collects certifications just to pad their resume, and get there probably by mostly studying brain-dumps and memorizing the answers. Often have little or no actual experience with the technology in question.
2. Gains certifications related to things they have actually done / are actually doing, and use the certification process as a "forcing function" to motivate doing a deeper dive into obscure or less frequently used corners of the technology that they may not currently be strong in. Puts the certification on their resume but only expecting it to be a "weak signal" that complements their actual experience.
I think there may also be a 3rd category which may be relate to (1) but specifically relates to people who are just beginning their careers and seek a few certifications just to give them "something to hang their hat on" as far as getting in the door somewhere.
Anyway, I consider myself a representative of group (2) and as such I tend to default to an assumption that most people are also in that group. As such, I consider certifications a positive (if weak) signal, unless there is some other "red flag" to suggest the person is in "group 1". Like having 100 certifications, but not documented experience actually working with any of those technologies, or something like that.
The exceptions are certifications that are required by law.
Fair enough.
If someone it doing it satisfy a bureaucratic machine, I'll suspend judgement. If they think that makes them actually better than someone who actually does the thing, hard pass. It's usually pretty easy to tell where people fall based on their general behavior.
I don't care about who someone is, or where they to school. I care about what they can do. Certs don't show any of that.
Edit: to add to this, you know what signal I’ve also never observed in 11 years? A PhD indicating someone will be an exceptional engineer.
You appear unsufferable. If i was in charge of deciding whether or not to hire you, I would not, based on this comment.
Good thing we don't hire people based on social media comments then! It really looks like you just took an opportunity to use careful language to bully someone that you just didn't need to.
Something about the phrase “the bleeding edge of tech (AI)” is just very off putting.
Screams Dunning-Kruger effect.
Again, I also have nothing against the person here, it is the behavior that is a red flag.
The issue is putting it on your resume and thinking it's a criteria hiring managers would use.
If you can build some body of work, whether it's a paper, code, etc that reflects what you've learned, that's infinitely more relevant.
the former tend to be the type that list as many of those 100 certs as they can on your resume - I assume you're the latter and actually tailor mentioning those to very relevant / the best of the best
https://www.edx.org/learn/computer-programming/massachusetts...
People within companies are all different, so we can't say. Some hiring managers might, others actually prefer no degree, others might focus more "shipped". It depends
The courses from Berkeley, Harvard, Stanford, MIT are quite good. There is no paying, just knowledge.
Taking the course is not a negative signal.
Putting the course on your resume, as if that conveys useful information, is.
Are you a hiring manager? A you are hiring manager of the whole IT industry?
Even in this thread there are many that have successfully landed great jobs with certificates on their resume.
You also seem to be missing that the content associated with the certificate can be fine, but the validation process broken enough that the certificate per se (and therefore listing it on a resume) is worthless.
(I prefer to hire based primarily on work samples or a take-home project.)
People actually learn the basics of CS and foundational knowledge in those courses. And how to use git and GitHub.
I never stated that those certs, or courses alone would be enough. This comment thread started because someone called it anti-signal. Listing anything on a Resume is never pointless, it tells us something about the potential hire.
Courses like the one mentioned are open, which means if you wanted to test that knowledge you could, easily.
That could tell you so much about the potential hire:
* Did they actually do the course.
* Did they retain the information.
* Did they understood the material.
* How did they use the information, in their own projects or clients.
From those answers you would even be able to learn more about their seniority level.
The point is, "anti-signals" is just not everywhere the case. It might be for some, sure. But how many of those would like to see formal CS education?
Seems that even you are more on the side of actual code examples. And in order to create great code, allot of deep knowledge is needed. Which those courses provide.
Sorry, but you have absolutely wrong ideas about resumes, how they are read, and what information they convey. Both descriptively and normatively.
> Courses like the one mentioned are open, which means if you wanted to test that knowledge you could, easily.
If I have to test anything, I'm going to test the actual job skills. But actually the point of a degree/certification/whatever on a resume is to show me that someone else already did the testing so I don't have to spend time doing it. Conversely, if I have to test it again, it's pointless to put on a resume.
It seems you are misunderstanding me again, If someone puts something on resume. It's a signalling they think it's important. And in order asses candidates on their strengths, we use the resume.
If you are worried that they are missing the information from the course, I gave how it's actually great tool to asses candidate.
You also thinking that can outsource in some sense if developer will workout at the work place you are hiring for. This is a mistake.
Instead of making blanket statements, and dismissing people on frivolous things. Like going to ivy league universities or having certificate.
It's better to test the person, to get the know more about the strengths and weaknesses.
A resume is just window into the candidate thinking process.
-edit It's clear from your comments you're not aware of the great work at Harvard with CS50 course.
I don’t get the elitism or why you think someone with a degree from a specific school is inherently stupid. That’s as weird as refusing to hire non-formally educated people.
Harvard is good for signalling, traditional liberal arts, and pre-law (but, I repeat myself). It's not a very good teaching university overall, and especially not in CS.
That said, I think you’re completely out of touch with how 18 year olds choose universities. It can be as simple as a friend of theirs is also attending, or the school is close to a parent’s home, or they were actually in a liberal arts program before they switched into CS.
Sometimes as you implied, it’s their parents making that decision for them.
There’s no point in holding the cost of a student’s education over them, especially as you don’t know even how much they paid.
It's not reasonable, those statements are liability for you and the company you represent. Hiring laws are quite strict of discrimination.
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.
"No application, ever―just start learning and show us you are ready
Simply pass a three-course pathway with a B or better in each course to earn admission. No bachelor’s degree or extensive work experience required." /[edit]
Typically having a Bachelors is the basic entry requirement for a Master's program, with that program you can pass the three classes with B-s or better. There are adult edu divisions that will try and help you finish your degree with credits for life experience, but they usually require a certain amount of credits at their school, Rutgers was like 30 or 1/4 of the required 120 credits.
Would love to see something that sticks to malware and reverse engineering. Say something starts with low level programming, proceeds to os internals and then exploitations and such.
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.
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”.
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.
It doesn't hurt to get someone to review your resume if you're not getting bites.
If you can find a friend's cousin's sister who works at a FAANG company who's willing to refer you, that'd be ideal. All the FAANG companies I've interviewed have an internal referral system.
I only got into a FAANG company once as an intern. It was pure luck that I didn't have any leetcode rounds. Every other time I tried interviewing for SWE my fall was leetcode. The good news is there isn't much luck required, its 90% just a grind. You can be the unluckiest person on the planet and still get in. That being said, good luck :-)
But let's be real, not having a HS diploma, for most people, means that they can't progress to the next level - no college, no military, and probably no skilled trades. So it is kind of an economic death sentence. The exceptions are if you are extremely smart and talented (and if you are, you can get a GED with almost no effort).
Football (soccer) players sometimes don't have their high school degrees, but they have training in a high paying profession.
Same goes with people who can code.
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/
Apple is one of the few FAANG companies with a decent number of open vacancies in the UK at the moment.
Can you tell me what you mean by shipped code? I've shipped plenty of code in my current job (none of it is that exciting, though). I probably don't emphasise it enough on my current CV, now I think about it.
Both of these things lead to natural points of conversations with your interviewer.
"Have any problems with concurrency with you approach?"
"Any user feedback that caused you to make changes to the app?"
etc....
If you can prove you can do the job, you will get the job.
Cheers!
If you want to talk to someone about this don’t hesitate to reach out over email!
Do you work remotely in Asia? I would like to relocate too one day.
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.
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
Come on monster, be a bit more logical ...
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.
You probably want to go to play with a couple problems from leetcode though. I'm not for the grind, but there's a high likelihood at some point you'll be asked questions like those. The last thing you want is to be surprised by a "standard" interview question like those.
There are other resources (books, etc.) that supposedly help you prepare for the interview. Make sure you spend some time preparing for the interview if you get one.
Also, I don't think past industry experience makes much of a difference unless it's in a firm of a similar "tier". Staying in a public sector org as a software engineer doesn't really do you much good if your aim is to enter a big tech firm. It might even be considered an anti-signal by some. FWIW, if I'm involved in the hiring process and see a candidate who's worked in the public sector for years, I'd be slightly concerned with them picking up "bad" habits that don't meld well with tech companies (and will adjust my interview questions to try to tease out details on that front). I can't stress this enough -- don't expect that more years in your current job will increase your chances, it's equally likely that it will count against you.
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.
The question is more whether anyone will look at your CV if you didn't do these advanced topics at uni. Most things people can and do learn on their own. If you look at how uni works, what did you do? You went there and found out what you needed to learn, and then spent a bunch of time studying it on your own. There was never enough time in a class to learn things just by watching.
Apart from that, if you go in a traditional uni (which is not my case, I do online degree at Open University of UK), you also have great networking opportunities.
Not saying about other subjects, like medicine, physics, biology where you need access to a lab to learn something.
If you are targeting fintech, ML or "rockstar" corps that might be different.
Sorry but wrong mindset. You will not learn the most when you are surrounded and mentored by "yoda class" devs. The sad reality of the tech sector that this happens very rarely - not many teams have this growth attitude, everyone just wants to hire seniors who instantly have the best answers. You can learn just as well by surrounded by and inspiring juniors when solving problems. With any luck they will rightfully question many things you take for granted.
TBH I can't even chain together any of your reasoning here. How does teams wanting to hire seniors imply juniors who join won't be able to learn? Were you on those teams? Did you actually see "yoda class devs" refusing to spend effort to grow their junior team members?
And how is mentoring juniors an even remotely acceptable substitute for learning from the best in the industry? Having juniors question your assumptions only works for making you aware that they might be bad, but doesn't necessarily help in guiding you towards making the right ones.
The only issue I take with GP's is the assumption they make with FAANG having the "best engineers". At tens of thousands of software engineers per company, the concentration of top talent is quite dilute, and if you're unlucky you'll see a lot of mediocrity just due to the large numbers. My impression is that often smaller companies with an strong engineering culture might have "better" engineers on average.
The interesting thing is IME these engineers only have so much to bring to the table, and often have to push through the same technical hurdles. A passionate, hard working junior may get more done, if they have experience at the company.
Among even competent senior engineers, these mega-performers are unicorns. For every one that will save any project, or at least greatly improve it, there's 5-10 that are just okay.
I have 2 years of experience. I'm mainly concerned that my experience isn't really impressive having only worked in the finance and education sectors.
I also got promoted to a senior role very quickly, which was genuinely on merit, but I worry will make moving to tech firm harder.
So I guess that's "good news" for you, but then if you actually tell them you don't really have "high expectations" then be prepared to get a low ball offer..
I didn't get an offer, though, so take my advice with a grain of salt.
I think the carts mostly exists to satisfy corporate clients
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.
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
Members will come at you.
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. 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.
4. 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.
5. 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.
I applied to Google in late 2021 / early 2022. The suggestion was to grind leetcode.
The recruiter emailed me after my interviews to say they'd resulted in good news. She set up a phone call shortly afterward in which she told me I'd passed the interviews, I should prepare for a series of "team fit" interviews, I should see a job offer in about 6 weeks ("the end of February", when the call occurred in mid-January), and congratulations!
I was never offered, or contacted about, a single "team fit" interview. When the end of February rolled around, she informed me that, because I'd done poorly in the interviews (the same ones mentioned above; my results were good in January, but by February they had apparently spoiled), Google was uninterested in hiring me.
No one has really been able to explain why, in Google's eyes, "you did so poorly we're rejecting you" is a message to congratulate the candidate over, or why performing at that level is considered "passing" the interviews.
A lot of times you're not interviewing for "Google", but a specific team. If that team has all it's members, then well, sucks to be you.