Did it start like this for you?
I had learned some programming while in high school and had written a couple of small programs. Then I wanted to improve one of my programs and begun redesigning it, but I hit a wall in trying to manage the complexity. Writing small programs was OK (1000-2000 lines of Java), but I did know how to go about writing larger programs.
If so, how did you conquer it?
In university I got the skills for designing larger programs, and the basic information on how things work (databases, networking, operating systems, algorithms, data structures, assembly code, concurrency, project management etc.). None of the things in themselves were hard to learn. It just takes time to learn them one by one. You also need to practice what you learn. While studying, it's good to have some hobby projects or part-time programming work, so that you can put to practice the theory that they teach at university (but don't work so much that it slows down the studies).
Is this normal?
In programming, you need to be learning new stuff all the time. And the more you learn, the more things you will see in the horizon about which you don't know that much. Then depending on what your needs are and how much time you have, you need to decide what learning that will benefit you the most, and leave the rest for some other time, or ask someone else to do the work which requires knowing those things.