BUT, I'm entirely self taught, and I feel like I'm likely missing a bunch of things that 'properly' trained programmers know. But you don't know what you don't know, right? I would definitely fail any kind of code test with sorting algorithm type questions for example.
Has anyone also been along this path and realised these important things they don't know? If so, what are they?
Things I've had to learn:
- Big O notation and what it means
- UML, at least parts of it
- SQL
- git
- gdb
I am not expert at any of these. I've learned enough to get by.And that's kind of my philosophy. It's like just-in-time learning. I learn what I need to be able to do what I need to do. I haven't bothered to grind leetcode or anything. I let the job tell me what I need, and I learn that. (I do also kind of keep an eye on what else is going on, so that every five years or so, I try to learn the one thing that's going to matter most for my employability in the future.)
Personally I'm a big advocate for learning all of this stuff, even if you don't ever need it for your job. It still changes how you think about problems and makes you more well rounded (though formal education is not the only way to be more well rounded).
If you have an undergrad degree or past experience in a different area, you may not be "missing" anything from the perspective of being well rounded.