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.
Top comments (6)
For the "learn your shortcuts", some IDEs have amazing plugins, for instance: plugins.jetbrains.com/plugin/9792-...
For the rest, for sure it's about practice, and taking the time to learn. If you only "code", you won't improve past a certain point. You need learning moment: reading, experimenting new things, pure practice with kata or other tools (I love exercism for that purpose)
I am struggling with touch typing too. I've tried practicing it a few times but could stay consistent.
I worked through keybr.com/, which has a great method for slowly working you through the keyboard. Try to take half an hour a day there, and then try to force yourself to use touch typing in your day-to-day work. It will slow you down at first, but the long term improvements in your working speed are worth it.
Thanks for sharing. I'll try this. :)
you need a good keyboard for that.
TL;DR practice, practice, practice
I would also add: get feedback, look how others work
Also the "conscious incompetence" as you called it won't go away. The more you know the more you understand how much you don't. You just get used to it and you get the confidence that you can overcome it.