Maintaining Scope and Context To Reduce Cognitive Load
June 18, 2020
Developers need to have a wide arsenal of skills in their toolbox. From algorithm runtime analysis to proficiency in multiple tech stacks and everything in between, there is no question that we need to retain a lot of information in order to simulate ideas and scenarios in our head. Because of this, we need to be very careful about how we spend our mental energy.
It is crucial to be able to identify the context we are operating within. When we keep the context in mind, we create a focus that directs our efforts toward a singular goal. Most importantly, when we have a clearly defined context, we eliminate the cognitive load related to events and details outside of that context.
While context is important in reducing mental burden, we also need scope. We need to be able to rapidly zoom in on technical details and zoom out to see the big picture, sometimes very rapidly. Scope helps us with managing context by providing a framework with a discrete set of related concepts. For example, if we decide to focus on a database, we should understand everything in the domain of that database. We can identify the extents of the domain by asking questions and finding answers to those questions. Is it relational or non-relational? Where is it deployed? What is the worst-case access time for a tuple? We should know everything about our database and how it interacts with our system as a whole.
When we have a clearly defined scope and context, we optimize for cognitive load reduction. To use computing terminology, we maximize our available RAM so that we can hold more of the important things in our runtime environment. In layman’s terms, the less we have to think, the better. This is when the real magic happens, and when we produce our best work, because we can focus more deeply on the task at hand.
Musings on coding, UX/UI, and hacker culture