My technical background is largely from reading books and manuals on my own, but I'm under no delusion that I would benefit greatly from some more formal instruction for certain topics, if nothing else because then I would have someone challenge me immediately when I'm wrong.
I suggest learning a little about data structures and algorithms, each are typically one semester courses in undergrad. You might supplement it with operating systems and distributed computing, though data structures should be a primary focus.
* What is big O
* What is value type vs pointer/reference
* How does the internet work
* Binary search trees, tries, graphs - u wut m8 (Thankfully, there's this: https://medium.com/basecs/archive/2017/01)
* Basic cryptography, hashing, etc
* DNS, IPs, HTTP, etc
* TCP, UDP, etc (I still don't know these)
* Stack, heap, queue, malloc (Again, very little exposure to this without learning a low level language.)
* How modern computers work
* Logic gates, clocks, memory, (actual) binary math
* Wifi basics (actual physical data transmission)
* Linux
I can go on and on and on, but these are things you don't pick up at work unless you go out of your way to learn how they work.
Regarding the parent post - I have a very generous training budget. And guess where I will never spend it? At the best University in my state. I got a degree in something other than Comp Sci, and 95% of the classes were useless and way-too-drawn-out. So, you might not be as behind as you think.
A pretty-smart co-worker of mine with a Comp Sci degree said he didn't figure out the point of object oriented programming until he got his first Java job.
This is only related to other comments in this thread, but I do feel that formal education is oversold, and particularly to people who are from poor families with no guidance trying to have a shot at life.
I've also worked with people who can explain what big-O is and yet they'll write completely inefficient nested loops and N+1 SELECT queries, and then wonder why everything is slow in production even though it works great in dev.
Comp Sci can teach you theory and concepts, but as they say: there's no substitute for experience.
If anything, a self-study program with a list of books to read and skills to master would save many self taught / self motivated people quite a bit of time, but its absence is by no means a show stopper.
I learned a lot of these things from taking Harvard's CS50 online, reading the blog posts I linked (and doing problems), and I would imagine this book (https://bigmachine.io/products/the-imposters-handbook/) would help out - a friend recommended it, but I never got around to it.
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
^Covers logic gates and the basics of how a computer is built to an incredible degree, but it's VERY time intensive. Still, I really recommend it.
Maybe some of us self taught developers should get together and curate a clear path for CS knowledge and ancillary helpful things.
I wouldn't mind spending some time contributing to something like that. There is an endless amount of material to read and classes to take, but narrowing it down and prioritizing is the hard part.
Which is a real shame.
If you just want to get a good sense of UDP, ICMP, TCP/IP, datagram headers, and a handful of older protocols (like FTP), "Inside TCP/IP" is still valuable.
If you're self-taught and worried about your CS fundamentals, there's a really simple algorithm to get an education better than any CS student at roughly 1/100th of the price:
1. Look up some famous university like Stanford or MIT.
2. Download the course syllabus for the course you're interested in off their website. (Nowadays you can often get the full course, including all the lectures and handouts.)
3. Buy the textbook. When I was in school you could pull shenanigans like buying the European version of the textbook for 1/4 the price or (if you live in a college town) buying the textbook, reading it, and returning it before courses are finalized, but these loopholes have probably been mostly closed. There's now a thriving used-textbook market online that didn't exist when I went to school, though.
4. Read the textbook. Do some of the exercises. Implement the algorithms.
Incidentally, this is largely what CS students do for homework. Most of them kinda gloss over it because it's required, though, while if you're doing this because you really love the material, you've got a big advantage.