As you become more experienced/skilled at something you’re really becoming better at recognizing and leveraging patterns. Patterns allow us to load complicated ideas and schemes in to our working memory where we can twist them around more effectively without having to rely on memorization.
As a professional software developer I spend every day solving complex problems, trying to figure out how best to structure my code so that it solves a problem efficiently and can be understood by another developer who might need to make changes.
I can’t possible analyze all of the different ways I can solve a problem without relying on patterns. These patterns inform my decision by allowing me to analyze a number of paths superficially. Once I find a path that seems promising based on the patterns I am familiar with I can analyze that path more completely to see if it holds up.
Just recently I was reading a quiz that someone was taking for a computer science course. It was the equivalent of trying to teach someone language by telling them which word was the verb and which word was the noun. Ever as a professional programmer it made my head hurt, confused me enough that I wasn’t confident with my answer, and was generally far less fun then the programming I do on a daily basis.
I don’t think like that at all when I program. I think in patterns. I think about strategies that I’ve learned along the way and I’ll try to form a blurry vision of the whole solution constructed of various patterns that fit together. Then I’ll try to break that solution in to smaller parts that I can think about with more granularity. Occasionally one of the patterns won’t fit the way I expect it to and I’ll have to try a different strategy to see if it works. Sometimes things get thrown off so much that I need to reanalyze the whole solution.
It feels very similar to solving a puzzle. I’ll have a basic idea of what I’m trying to accomplish and I’ll attack it from a number of different angles, starting from the more obvious areas and working toward the less obvious areas, making steady progress. Sometimes an area will prove too challenging and I’ll need to step back, take a break, try a different area, or maybe just walk a way for a while and let the problem brew in the back of my head.
Although I can’t confirm this I have a gut feeling that all experts work this way. They understand patterns that are not obvious to the rest of us that allow them to play with complicated problems in their head, looking for solutions, trying out strategies in their mind to try to get the pieces to fit together.
An excellent musician understands how to use notes and tempo to illicit emotions. They can play with these patterns putting together an enormous variety of music from small number of distinct notes. A baseball player can recognize the patterns that tell them where a ball traveling 90+ miles per hour will be in less than a second and how to hit that ball in a way that makes it travel as far as possible. They do this without thinking about it, just by recognizing and responding to patterns subconsciously. A mathematician doesn’t see the numbers and symbols written on the page distinctly. They read them as patterns that inform their thinking in a way that someone who is not familiar with the pattern can’t take advantage of.
If we hope to become expert in something we need to pay attention to the patterns. The more patterns we discover the more we’ll understand the subject and be able to interact with it in a way that was previously unavailable to us. As we discover more patterns we’ll be able to refine our patterns and make more subtle observations as we understand the subtle tweaks to a given pattern or the way a simple, fairly obvious pattern is really thousands of more nuanced patterns that look the same when viewed from less experienced eyes. This is really what an expert is. Someone who understands the patterns so well that they can notice and leverage the subtleties of the patterns that exist in order to solve complex problems with new, creative solutions.