People have different abilities to "chunk" information into their working memory. For some people, a single slot in memory can represent a large abstraction. As much hate as it gets, "jargon" does have value in that it can succinctly express a huge amount of information in a handful of words. Software Design Patterns are particularly useful for this reason - if I can hold all the meaning of "singleton pattern" in one slot, I can move on to more interesting problems and load up the remaining slots with other information. But if I didn't understand the singleton pattern, I would need to retain a whole slew of information about how a certain class is extended from a Singleton base, why constructors are private members, and so on. Those each end up occupying their own slot in working memory, and I'm tapped out.
The key observation here is that the mind is very, very flexible and adaptable to assimilating new information and working with abstractions. So when you feel like you're at the edge of your working memory when solving a problem, then maybe it's time to take a step back and find ways to simplify or abstract those pieces into a larger concept that can fit more easily into one "slot". Instead of remembering 6 pieces of information, it might be easier to learn a particular pattern, load that into "Slot 1", and use "Slot 2" to keep track of the particular ways the code you're looking at deviates from the standard pattern.
It's also interesting to note that these "slots" aren't really fixed in size, nor are they even comparable between people. Some people have way better abilities to cram a huge amount of mathematical information per slot, while others are very good at people interactions and assimilating all their observations. Finally, all of this can be trained - just because you're bad at one skill, doesn't mean you will always remain bad (yes, even outside the "critical learning period")
People have different abilities to "chunk" information into their working memory. For some people, a single slot in memory can represent a large abstraction. As much hate as it gets, "jargon" does have value in that it can succinctly express a huge amount of information in a handful of words. Software Design Patterns are particularly useful for this reason - if I can hold all the meaning of "singleton pattern" in one slot, I can move on to more interesting problems and load up the remaining slots with other information. But if I didn't understand the singleton pattern, I would need to retain a whole slew of information about how a certain class is extended from a Singleton base, why constructors are private members, and so on. Those each end up occupying their own slot in working memory, and I'm tapped out.
The key observation here is that the mind is very, very flexible and adaptable to assimilating new information and working with abstractions. So when you feel like you're at the edge of your working memory when solving a problem, then maybe it's time to take a step back and find ways to simplify or abstract those pieces into a larger concept that can fit more easily into one "slot". Instead of remembering 6 pieces of information, it might be easier to learn a particular pattern, load that into "Slot 1", and use "Slot 2" to keep track of the particular ways the code you're looking at deviates from the standard pattern.
It's also interesting to note that these "slots" aren't really fixed in size, nor are they even comparable between people. Some people have way better abilities to cram a huge amount of mathematical information per slot, while others are very good at people interactions and assimilating all their observations. Finally, all of this can be trained - just because you're bad at one skill, doesn't mean you will always remain bad (yes, even outside the "critical learning period")