It's hard and it will remain hard. Sorry ;) Some things that might help:
- You will never know everything. Nobody knows everything. Everyone knows something other people don't, including you. It balances out.
- Don't worry about being better than other people, work on being better than you were before.
- Have a specific learning plan reasonably balanced between the job you currently have and what you want out of your career. Decide where you want to go broad and where you want to go deep.
- Don't learn ten things badly all at once. Learn five things well, in a row. Then do the other five if you think they're still relevant.
Other thing I find is that i'm quite visual, even though I can do most the logic, I for example with the mean stack, need to draw out architectural plans on paper so e.g I know this files "xyz" and this module should be in example.
Sometimes I find, no matter if you're not getting it or it might be hard, try taking a different approach to it and soon enough you'll grasp it :)
Some great answers here, I'm going to offer up something different, and suggest you start understanding WHY you feel the way you do. Essentially a psychological journey if you will :)
Do you know what Imposter Syndrome is? Briefly explained, it's when you think you haven't "earned" your way up to whatever point you are in your career. Most, if not all, developers have gone through it at some point, usually doing the exact thing you are doing, trying to learn a new technology. You feel a bit hopeless, doubting your ability to learn it, and it can be quite depressing.
But there's good news! You'll pull through it, and learn it. How do I know? Well, you've done it before, haven't you? I assume you're not a magical Imp from the 4th dimension, and that you actually had to learn all of the skills necessary for your job now, right? Oh but those skills were easy you say? Could your grandmother do your job? After all, she's been around a lot longer than you, and has much more experience, sooooo....of course not :)
My point is, if you're a developer of any sorts, or even someone with a particular craft/trade, then you're ability to grow is only limited by your desire to put in the effort. What we do is NOT easy, and there's a reason why there's a shortage of programmers here in the States.
So go study, put in your time, try to have some fun, and in time, it'll come to you :)
Having an empty cup is good.
Start small, learning a new function or similar and slowly build out your knowledge, both in breadth and depth. (This is how you get where you wanna go).
(This bit is how you understand where we've come from)
Always remember what you did yesterday, always reflect on the new skills you've learned and the things you have achieved and be proud that you're making these steps forward.
Having some sort of todo list for the year or month is a good idea and can help, but keep it a small list, especially if its a year list.