- Pointers and understanding how operating systems address/access memory at a low level.
- Hashing (This one may seem a little insulting but I have seen otherwise good developers confuse hashing with encrypting and it seems like an easy mistake to make if you haven't worked specifically with either concept)
- Binary math, logic, and encoding.
- The OSI model.
- Parallel programming, the program counter, and how operating systems execute/switch programs.
I would not count these as "massive" holes and it is also likely that these concepts would be discovered by a self-taught developer especially if she has looked for material from college-level CS courses.
None of this stuff is necessary to make great software but having this knowledge can help make other things easier to learn or understand. It's like the difference between knowing how to use common git commands and understanding how trees of objects are used to form a chain of commits.
- Pointers and understanding how operating systems address/access memory at a low level.
- Hashing (This one may seem a little insulting but I have seen otherwise good developers confuse hashing with encrypting and it seems like an easy mistake to make if you haven't worked specifically with either concept)
- Binary math, logic, and encoding.
- The OSI model.
- Parallel programming, the program counter, and how operating systems execute/switch programs.
I would not count these as "massive" holes and it is also likely that these concepts would be discovered by a self-taught developer especially if she has looked for material from college-level CS courses.
None of this stuff is necessary to make great software but having this knowledge can help make other things easier to learn or understand. It's like the difference between knowing how to use common git commands and understanding how trees of objects are used to form a chain of commits.