I played around with programming as a kid, programming things like Mandelbrot sets on my TI calculator. In college I didn't take a single CS class, other than a EE signals class using Matlab. I graduated with a degree in Physics. After college I ended up in a training program at a big tech company, spending 9 months learning to be a test developer. After a couple years, I took some time off, studied the CLRS book and the first Coursera course on databases, and found a job as a developer in a "big data machine learning" company. Over the next couple years, I completed a self-taught CS degree through textbooks, video lectures from big CS schools, and a couple MOOCs.
My tips would be to take self-education slow and steady. There's an infinite amount of stuff to learn out there, and I found one "course/textbook/lecture series" per quarter to be sustainable for me.
I also recommend alternating theory and practice; studying to pass the interviews until you have a job, then emphasizing the theory that is semi-relevant to whatever job you get; and accepting that a lot of what you learn may not seem very useful/relevant until it suddenly is - six months after reading a couple books on Mapreduce program design, I was able to use that knowledge to ace an interview at a company that used that technology.
My tips would be to take self-education slow and steady. There's an infinite amount of stuff to learn out there, and I found one "course/textbook/lecture series" per quarter to be sustainable for me.
I also recommend alternating theory and practice; studying to pass the interviews until you have a job, then emphasizing the theory that is semi-relevant to whatever job you get; and accepting that a lot of what you learn may not seem very useful/relevant until it suddenly is - six months after reading a couple books on Mapreduce program design, I was able to use that knowledge to ace an interview at a company that used that technology.