When it comes to learning, and therefore teaching, there is a commonly accepted methodology, that dictates content should be broken down into the smallest pieces, and provided to a learner in a logical and linear sequence.
It is no accident this is the standard methodology, because it is simply common sense to start at the beginning and build slowly from there. To a large extent, this is the most natural way to learn, considering we all were brand new people at one point, and knew absolutely nothing about nothing.
Over time, however, as we all develop our personal learning styles and preferred methods for processing new information, we all tend to diverge from the baseline, in ways that best suits the material, the context, previously acquired knowledge or experience, learning environment and goals.
For most, this will still require starting at a more logical beginning, but may be skewed toward a preference for either visual, auditory, or kinesthetic modes of learning.
I myself, have always been a visual-spatial learner; I figured out early on that the easiest way for me to learn, was to see the big picture first, then breaking it down. This has always served me well when trying to find solutions to very complicated problems, because the desired end-goal was frequently more readily available to me in my career, and taking a desired ‘whole’ to ‘parts’ was an easy trajectory.
When it comes to learning something such as code though, my natural inclinations have not always easily met the way information is provided. Meaning… it is sometimes difficult to understand the nature, purpose, or behavior of different tools and methodologies, without the proper and complete context being provided to make this evident.
Imagine being handed puzzle pieces… also, assume the picture on the cover of the box hadn’t been revealed to you… what are the odds you would be able to easily place the puzzle pieces in their correct vicinity as they relate to each other? Without knowing what is possible, or what you are trying to accomplish, how efficient could you be in attaining an objective, without a direction?
This has been my struggle, as it relates to code, in some ways. Understanding the small insular pieces individually, but lacking a larger context, not always readily being able to make the best use of my tools, until more of the icture is revealed.
I have found that exploring meta concepts has been helpful in gaining understanding of OOP, it’s benefits, uses, limitations, etc… therefore making the skills and tools I am acquiring, more useful to me, with some immediacy.
There is is much to learn, but the puzzle pieces are coming together much faster, now that I know why or how they matter.
Sometimes knowing the destination, makes the journey that much more fruitful!