In 2022 I'll study to become a programmer.
Focus on algorithms, data structures, and try to learn math (I'm very math illiterate, I don't know anything beyond basic arithmetic).
So at least by this time next year I'll have more knowledge.
I was mostly math illiterate too. Geometry was my strong suit, not manipulating symbols. Still want to learn PDEs someday just for fun, mostly because I have no idea how to model anything as a PDE.
But I would never try to learn PDEs to make money, because it would put me under a lot of pressure, since I wouldn't be doing it just for the knowledge. Just make sure you're having fun as you're questing your way towards programming. It's key.
I already use Emacs for everything since 2003, so...
Believe it or not, you managed to hit on the most lucrative long-term strategy, too. That's exactly the mindset that the best programmers have. If you like it, then a job is pretty much a matter of time.
Best of luck, friend. Take care of yourself, and prioritize yourself. You're worth it.
I'm always curious what non-IT folks that use some rather IT-specific tools do (not that Emacs is just for coding like gcc, but it's pretty rare to see it jump over the wall).
Some people have recommended Kahn Academy. https://www.khanacademy.org/
Don’t be afraid to use a calculator when things get complex. Calculators are not cheating. But try to do as much in your head and on paper as you can. It helps to learn why things work.
You will get frustrated. Be patient and walk away for a bit when you need to. :)
As a kid, I used to complain often and loudly that I would never need any of this stuff. Turns out I was wrong.
You can turn around your life. I did so in my 30s. I am only saying this because there's a high chance you are an old fart since you know and like kraftwerk.
As you have correctly guessed, it's not too late.
Just sayin', if someone is truly not a math person, saying "oh yeah, learn math and then learn graphics programming" is probably just going to discourage them.
ML is supposedly all about math. And sure, I could walk you through a backprop pipeline at this point. But it took me years before that was useful knowledge to me. The practical experience of doing it was way more interesting, and it lead to more knowledge than I would've gotten with a traditional path.
Most linear algebra courses and textbooks do. Without a lot of background, you'll run into a hard brick well.
A few good starting points
- Project Algebra's Road Coloring curriculum
- 3B1B (on Youtube) has a series on the geometry of linear algebra. You should have the mechanics of adding/multiplying matrices, but not much more
- Game theory is a nice place to explore early
Linear algebra is a many, many year progression. It's quite deep and interesting. But you don't need to start with singular value decompositions and whatnot. Start with those sorts of things, and then apply it in different domains:
- 3D graphics
- Image processing
- Control theory
- Quantum computing
- Data analysis
... and whatever else suits your interests.
After a decade or so, if rather fascinating deep dives, you'll have a deep understanding not just of linear algebra but of some rather interesting domains.
I agree with other comments that linear algebra has limited relevance to learning programming. Your experience with Emacs gives you a far bigger leg up than mastering linear algebra would.
In game programming you would need linear algebra, but you can go a long way with just vectors, cross products, and dot products.
But I'm open to any advice.
I went BASIC -> C++ -> Java -> Python (some years ago) while learning programming. Learning memory management fundamentals in an unmanaged language felt enormously helpful in recognizing the bigger picture in later managed languages.
... But! It wasn't required.
Advice: Know what language(s) your target job market (there's a lot of programming) uses, and spend more time / practice on those. Most hiring folks don't know enough to evaluate language knowledge from a theoretically similar perspective.
Now if you're in to mastering complexity, C++ can be a great choice, as there are a ton of complex things to learn, but I would take a look at job postings where you think you might want to end up to see if it is actually required. It is very unsexy to talk about on HN, but for pure employability, Java (and other JVM-based languages) are probably the best in most areas. There are tons of remote jobs, and pretty much in any city, plus you can branch out into other JVM-based languages (e.g. Scala!) once you feel so inclined and still incorporate that at work. C# and F# have a similar "progression" and are now completely open source too!
Good luck, whether or not you end up choosing C++!
So I would explore and see how far you can get in math before investing to heavily into a specific language. If you want to learn one that’s useful in many domains and is easy to learn while focusing your studies on math my suggestion is Python.