Programmers often take something for granted that would make them significantly better at their job. No it’s not communication skills, or management. The biggest differentiator between the best and average programmer is how often they have to refer to google to solve a problem.
No doubt that Google and Stack Overflow are awesome resources that make it easier to write things you don’t really have the knowledge to do off the top of your head. Each detour to the search engines eats time. It takes 10x more time to find a good piece of code on the internet than if the programmer knows how to write it already.
The skill that most programmers overlook is memorizing the APIs and languages they use.
When you take away all the crutches we use to help write code by writing with pen and paper, without the help of reference material gaps in your knowledge become brutally apparent. Try this from time to time.
Most programmers I know seem to think that picking up a new language or framework can be done in just a few weeks. My experience is that unless they take deliberate time to read and learn and build expertise the typical result is getting to a passible skill level and then plateauing.
Do not underestimate the value of depth of knowledge.