Another good one that was optional reading was Book of Proof, it's free so maybe start there.
That being said I'm very much a beginner. I've only come across proofs in the one course I took (where I listed the textbook above). I dropped out of Introductory Analysis due to the fact that my foundation was very very weak. I don't know know much of Calculus and so I had a lot of difficulty building intuition behind a lot of concepts and theorems.
I've been taking high school courses for the past 6 months or so in order to build my foundation because I see a lot of value in a Math degree and would like to complete it.
My intent in asking the question was just to get an idea of what people with a possibly similar background to mine did to really teach themselves upper level math, because I'm struggling at it, very very much.
1.Regardless of which route you choose to go whether probability theory, algebraic geometry or optimization algorithms, do a course in proof writing. Absolutely do not skip it. It will teach the fundamentals and most importantly patience and persistence
2. If you're a programmer, prepare yourself for a much larger feedback loop. Unlike code which can just be executed and you have the satisfaction of seeing something sorta work at first try, math is a completely different beast. It will punch your expectations in the face, and the progress points you celebrate will be a joke compared to what you are used to with code
3. Screw the videos, just sit down with a hardcopyand work through the theory and most importantly work through the problems.Try to get a textbook with a partial solution set.
4. Practice Practice Practice your fundamentals
5. Have realistic goals and timelines! People trip up here big time
6. Be prepared to dive into things that at first glance may seem unrelated. Don't skip chapters just because you think you don't really need to make progress towards your topic of interest. More often than not, you'll end up coming back
7. Celebrate the small milestone
8. Expect things to get exponentially difficult as you go along.
9. Learn how to manage extreme frustration and learn to keep your promise to come back to a problem you couldn't solve again and again. Nothing ever gets done in one sitting especially if you're learning.
10. Mixup things to make sure things don't get boring!