I never got along with school, I couldn't wait to be done with "learning". I began my professional career in sales and quickly found out that learning in all aspects of life NEVER ceases. Whether it be education or training on a new product, learning details about my particular territory, or just being shown the ropes by my elders, learning was not going anywhere. I've also had a habit of challenging learning when given the opportunity, wanting to skip over the boring fundamentals and jump right into the fastest ways to accomplish a particular task, i.e. the fun stuff. Juxtaposing against my own experiences is what helps me understand new material. The subject that most comes to mind is math. This should ring true with most because 99.99% of people learn mathematic fundmentals the same way. Long division written out on paper showing all of the steps done to complete the equation.
Whenever I think about abstract learning, I think about all the math teachers I've had, and the same argument I got myself into that always gave the same answer:
You're not always going to have a calculator in your pocket to do this!!
Being someone that would eventually go down the sales rabbit hole and also having a small amount of technological foresight, this argument never sold me on the WHY. Learning the skills to be a developer has certainly given me new found appreciation for my math teachers. It's given me an even greater appreciation for working to get the basics down to second nature as soon as possible. We're not reinventing the wheel when it comes to coding, most of our code is completely unoriginal and will come from multiple sources. Having a strong grasp on the fundamentals gives us the ability to communicate to other what exactly our code is doing 'under the hood.' The strength of this communication is what separates the good from the great.
'Under the hood' counts as a life experience for me to help me learn. I've worked on cars most of my life, I'm not an expert by any means, but I know my way around engines enough to be able to diagnose a problem or follow the paths to bring me to where the problem is. Problems are usually acute in nature, something small that throws a chain reaction to everything that is working properly resulting in a non-working car. The same holds true for coding, tiny details our errors throw combined with fundamental knowledge should bring in the vicinity of the issue to be fixed.
Fundamentals don't just stop at learning either, there's an entire flip side to this coin and that is training, or for someone who plays/played sports should know exactly what I'm talking about:
In sports, the whole point of practice and training is to build muscle memory, you're training your body to react in an instinctive way based on what is presented before you. That is, an immediate recognition or reaction without thought. Our brains are muscles, and if you don't stimulate said muscle skills will diminish.
Learning in theory is abstract in and of itself and that is all well and good. But I ask you, would you rather have a new pilot flying your plane who's only ever been in a simulator, or do you want the one that has thousands of real hours logged in their resume? There is no teacher like experience and all the knowledge you consume should be put into practice, otherwise what's the point? So take the dive! What do you have to lose? You might show weakness of a skill you don't possess to begin with.
It's cliché but I personally subscribe to the 10,000 hour rule to master a particular skill. You have to put the time in to get good at anything. Yes there is always an exception to the rule but if you happen to be one of those exceptions, chances are you won't even be reading this article, or attending a bootcamp to learn this material. Those unfortunates such as myself, will win on effort over raw talent.
The whole point of these ramblings of a mad man is to convey the importance of complete fundamental understanding of coding to be able to keep up and communicate what your code is doing in the background. Programmers are lazy! But you have to attain the pleasure of being lazy, one cannot simply jump right into it. It will take a huge amount of hard work, dedication, and discipline to get yourself where you need to be. Once you're there, laze around and enjoy it, but don't say I never warned you 'learning in all aspects of life NEVER ceases.'