The first thing I tell junior programmers is: keep going.
If you've been programming a while, you know that feeling of encountering a new project, with a new stack, in a new language. The feeling is: OK. And you roll up your sleeves and get to work.
But do you remember the first time you were in a professional setting, in front of a new project with years of engineer-hours invested in it? You are staring at a foreign IDE for the first time, and a senior engineer has told you to fix a bug. You have 20 new technologies to learn, all at once, and you don't have a solid conceptual model for how they fit together. The syntax might as well be a Dwarf Fortress game, and you're 10 steps away from even being able to figure out what to Google.
And, you know what? I still find it overwhelming. I recently started learning ClojureScript. The recommended first step is basically, "spend 2 years learning emacs". Then learn the Java ecosystem. Then learn Clojure. Then learn ClojureScript. Yikes.
But the difference between wet-behind-the-ears, just-graduated Chris Clark, and the me of today, is that I've had this feeling dozens, or hundreds, of times before. I just barrel through. I know that all of this stuff was built by other engineers. Some of them were smarter than me, some of them weren't. It doesn't matter; I have complete confidence that if I perservere, I will figure it out. No doubts at all.
So that's what I tell new engineers: When you worry you might not figure it out? That you weren't cut out for this? I've been there, and then been there again. But you'll figure it out, I promise. Just keep going.
The second thing I tell new engineers (specifically, new grads) is:
In college, a tough professor might give you a huge assignment that might take you 20 hours. What a jerk! In the full-time-work world, that's a project that's done by Thursday.