For me the hardest part was slamming into that wall where you've been working at a very high level of abstraction (HTML, CSS, a web framework of some sort, an IDE) and you realize you have very little idea how computers work or how they talk to each other.
This is the point where you need to do some kind of a deep dive into UNIX or the command line of your OS and figure out what the hell is really going on. Processes, files, permissions, networking, security, etc. When you pull back that curtain a bit and realize you know almost nothing...