PS. I don't aspire to work in the valley per se, but I've failed multiple technical interviews with a variety of companies, if I ever want to earn another job I feel like I'd have to learn how to work w the system.
PS. I don't aspire to work in the valley per se, but I've failed multiple technical interviews with a variety of companies, if I ever want to earn another job I feel like I'd have to learn how to work w the system.
I was a no hire. But for google, all I can really say is study the crap out of data structures and algorithms. Buy a copy of "cracking the coding interview" and make sure you can do the difficult problems in it in 45 minutes. Practice at a whiteboard, with a friend if possible. Don't just memorize answers, you have to be able to do this quickly and readily on things you haven't seen before. Try it, work at it, finally look at a solution, then repeat. Basic data structures should be so ingrained that you don't really need to think about them - this is how you'll be able to reason abstractly during an interview.
That's google, other companies may not be quite as data structures and algorithms oriented. That makes it tough, though.
In my 15 years, in interviews, I've had data structures white board exams, math exams, sample projects in rails and java. It varies dramatically. You don't really know what's coming.
Another option would be look for a way to be a software developer that doesn't involve taking technical interview exams. That limits your options, but it could happen. If you're an X that programs, rather than an X programmer, this can work. For instance, I know people who work in various analyst jobs, who do a substantial amount of programming. It helps them stand out in their field, but their interviews are more like usual interviews - discussions of experience, that sort of thing. In most fields, interviews aren't essentially exams. The "interview as exam" culture seems to unusual outside software, where it is pretty much the norm.
This won't work at google or Facebook, though, for those, yeah, you'll need to do well on the interview exams.
You research companies that share your values/goals, then start a conversation with them.
I know a lot of people who work outside tech, and they actually kind of shudder when they hear about what happens in our field. Yes, interviews outside tech are stressful, and knowledge and experience will be probed, but the whole "here's a marker and a whiteboard, find all strings in this set that combine to form a substring of any other string in this set"? Yeah, that's unusual.
I think there are ways to have a programming career that don't involve this kind of thing, but you do limit your options.
I cannot stress enough how important mathematical foundations is. It'll make everything else much easier to learn. I haven't read the book but heard good things about: https://www.amazon.com/Discrete-Mathematics-Applications-Sus... as a beginner text.
Coursera has multiple offerings on Data Structures / Algorithms -- find one that works best for you.
For instance:
https://www.coursera.org/learn/introduction-to-algorithms
https://www.coursera.org/specializations/algorithms
https://www.coursera.org/learn/algorithmic-thinking-1
https://www.coursera.org/learn/algorithmic-toolbox
By doing all of those you'll get a good introductory exposure to the topics.
You should also look at a rigorous course offering of Algorithms. MIT has a few online to view.
Some readings for a beginner are:
https://www.khanacademy.org/computing/computer-science/algor...
https://www.amazon.com/Algorithms-Unlocked-Press-Thomas-Corm...
https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press... (not beginner level but classic)
After all of this you should be fine with diving into interview books. You'll want to whiteboard solutions and be able to do all the difficult problems. Look into sites like leetcode, glassdoor and be able to do the difficult problems posted there.