Have you ever worked on a coding problem and have to constantly stop to look up syntax? You're almost at the solution to a problem and you know exactly what you need to do, you just don't know exactly how to do it?
It's a super common and frustrating issue and is a really good sign that you're progressing faster in your ability to think about problems than you are in your ability to memorize less used syntax or tools. This, in my mind, is the start of a transition from a junior developer to a mid-level developer. A switch to the mode of "conscious incompetence" and while that doesn't sound like a good thing, it's the first step towards getting really good at programming.
But something that everyone gets tripped up on is, "How do I get through this?" It's not fun to be conscious of your incompetence.
I think there are a couple of things that you can do. The first is to evaluate what you're struggling with the most. I've noticed a few common areas that people get stuck on. Which of these are you constantly looking up?
- Syntax of the language you're working in
- Command line syntax
- Editor shortcuts that you see more advanced programmers using
- Slow typing due to not knowing how to touch type
- Vocabulary and names for patterns and programming concepts
- Vocabulary for server applications and what other systems do
- Administrative tasks for your application (adding new libraries or building the project)
- Processes that happen behind the scenes (ie. How is the DOM built, how does the browser download files, etc)
I don't know that these are exastive, but I remember running into these myself. Some of these do with programming, but others are much more about the environment around programming. You need to be comfortable enough with your tools that you can use them at the speed of thought. Stopping and looking things up constantly will just slow you down and prevent you from doing your best. It's frustrating, too. I didn't know how to touch type when I started programming, which was fine at first because my brain wasn't moving very fast. But once I was good enough to work faster, I had to learn touch typing to keep up and not get annoyed with myself over struggling over it.
All of these are fixable, but one thing you'll notice is that a lot of them will require practice, either practice doing them like the typing or the shortcuts. The best way to learn those...is to practice! It really is that easy.
As I said earlier, I didn't know how to touch type when I started programming. So I trained myself using a typing tutor (which are all over the web now for free) and spent time each day practicing. It probably took about a month of that to end what had been a long bout of frustration. Since then, I've switched my keyboard layout to Colemak—due to shooting pain in my wrists—and picked that up the same way.
The other items require some sort of memorization. If you look up the same thing more than three times, memorizing it will be worth it in the future. A good way to do that is with spaced repetition. Have to look something up? Write it down on a flash card and then go through the flash cards every day. Eventually, you'll have it down pat and won't have to run to Google every time you want to create a new class or set up a controller. You'll also know what the other developers mean by "Pub-Sub" when it comes up in a meeting.
Even if you feel like you're being held back by your abilities, you can improve at this and move into a higher understanding of programming paired with a better ability to get things done.