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.
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).
Good on you, man, and honestly, I should be the last to take advice from, but you might benefit from a serious skills check-in to see what your real deck of cards is. Sit down and do it with someone who likes you and wants you to succeed, because it seems like you might not be in a state to evaluate yourself favorably. You might discover that you’re sitting at the top and selling yourself into the bottom. I did this, and it was disastrous for my career. There’s probably an upward step you’re not seeing.
You'll definitely be great at software engineering, as the intuition to dive deep into the bowels of these archaic ways of using a computer seems to come naturally! (especially compared to my attorney friends, who basically just use the browser, Outlook, and Word, and probably think a "command line" is some sort of military jargon)
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.
I like to remind myself of the encouraging phrase "We overestimate what we can can accomplish in a year, and under estimate what we can accomplish in five". Compounding gains is the game and humans always seem to underestimate their power
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.
Problems you solve with programming may or may not require math: the math requirements come from the specific problems.
Every time I've used heavy math in programming, I've figured out the math for the problem in isolation, then programmed that solution.
Strictly that is incorrect, but I get what you mean and agree with the point you’re communicating. I suspect it’s largely due to the rather dysfunctional way mathematics is taught in America.
Writing C for example requires knowledge of order of operations, inequalities, boolean arithmetic, and something very much like mathematical induction if you want your loops to terminate. Most programmers with the math optional mindset just don’t think of all the math they’re doing as math. For me the realization was empowering since once I realized I really was using a lot of math it inspired me to start filling gaps in my knowledge.
Edit: This looks interesting: https://pimbook.org/
To a first approximation, this is a substantially more limited set of concepts than even low-grade math.
Iterating counters and loops is the most "general" math I've used on most problems, and for...each or equivalent auto-bounding functions over sized collections removes that.
Can you write a 3D engine without math? No. Can you write a DB engine without math? No. Can you write a general web app without math? Probably.
Point being: if your goal is to put food on the table by programming, a 2-year study plan worth of advanced math is better invested learning elsewhere.
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.
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.
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.
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.
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++!