>>A few years ago, my dad mentored some college kids who were incredibly smart and eager to learn. But he complained that they had almost never touched a machine in their lives. They didn't know how to design the parts properly. He had to teach them.
This happens because no matter what you learn and how much you know in general, that doesn't say anything about ability to deliver in practical areas of work in a small narrow fields.
You can learn everything general about programming. But pick up a new language and you will be hitting the manual very often even to do some very trivial tasks. Or you will like to read existing real world code in that language, to learn the idiomatic way of doing things.
When you spend time solving real world problems in any field using any tool. What you are basically doing is turning yourself into a 'human database' of problems and solutions to a wide variety of problems. And you get that only by practice and experience.
This happens because no matter what you learn and how much you know in general, that doesn't say anything about ability to deliver in practical areas of work in a small narrow fields.
You can learn everything general about programming. But pick up a new language and you will be hitting the manual very often even to do some very trivial tasks. Or you will like to read existing real world code in that language, to learn the idiomatic way of doing things.
When you spend time solving real world problems in any field using any tool. What you are basically doing is turning yourself into a 'human database' of problems and solutions to a wide variety of problems. And you get that only by practice and experience.