This week we commemorate the National Initiative for Cybersecurity Education’s (NICE) Cybersecurity Career Awareness theme of “Explore – Experience – Share” with a post from SynSaber’s Chief Architect, Michael Quigley. Michael is passionate about being a lifelong learner and shares his thoughts on the role of self-education in technology development, and the importance of developing a “mapper” mindset.
Modern computer technology is an amazingly powerful tool. It is composed of a set of “abstractions”, each layered on top of the previous. These tools exist in a unique intersection between physical machines and creations of pure mind. We commonly refer to these layers of abstractions as “stacks”. We cannot directly observe the workings of these tools (through our senses) without creating additional abstractions. This means in order to work with computers, we need to develop skill at maintaining mental imagery and intuitions for the workings of these systems inside our minds.
Regardless of your involvement with computers; whether you’re building software, securing systems, operating large deployments, or another kind of role, it is important to develop your inner approach around your understanding of how these tools work. Developing this kind of intuitive understanding is something you can bootstrap through learning from others, but ultimately you’re going to have to develop your own practice for yourself.
It is my experience that a strong foundation in self-education, and building these kinds of intuitive understandings is one of the best ways to set yourself up for success in a career working in a computer-related discipline. Even though most people don’t think about these kinds of skills in this way, the foundation and discipline required to develop these skills absolutely can be learned.
A side effect of developing this inner skillset is that it translates to lots of other disciplines you might choose to pursue. This isn’t just a career pursuit; developing this part of your inner practice becomes a next-level life hack.
There was a paper published in the late 1990’s that presents a useful way of looking at the process of thinking, especially as it relates to computer programming. The Programmer’s Stone (http://programmersstone.com/) contains a bunch of useful ideas for people interested in computer programming. Whether you are interested in programming computers or not, there are a number of important insights in this paper that can help you with developing your own “inner game” approach.
The Programmer’s Stone presents a model with two different styles of thinking. The styles are referred to as “packers” and “mappers”.
To loosely summarize the paper, “packers” are people who approach the world as if learning is a memorization problem; as if memorization and recall of memorized facts represents an understanding of a subject. “Mappers” on the other hand, build “mental maps” of the world. Each new piece of information is attached to relevant points in our internal network of understanding, such that we have an intuition about the subject, making it useful in our work. It’s less about memorization, and more about “mapping” new ideas and information onto our existing understanding.
“To understand what programmers really do, an alternative strategy of thinking (called mapping) is necessary, because programming is essentially a process of internalizing the capabilities of the system, the nature of the problem, and the desire, and capturing the insight in a programming language. It is all about exploring the details of our desires, and understanding them in such a way that we can keep track of all the complexity. Mapper problem collapse can produce beautiful, tiny, elegant programs with no room for bugs in them. Mapping can do programming, but how it does it cannot be explained in packer, action-based language.”
The paper uses metaphors that computer programmers directly understand, but the concepts are appropriate to most of the thinking disciplines involving computers and technology. Many of the concepts and ideas in the paper are abstract, and will probably bring up more questions than answers. Fortunately, if you end up having more questions than answers, it probably means you’re on the right track. Deeply thinking about these subjects is a great way to begin developing your inner mapper.
Becoming a good mapper is an experiential activity. You have to experiment and “play” with the topic you’re trying to understand. Mapping works best when you have a genuine interest in a subject. When done well, mapping produces a durable, flexible understanding of a subject that gives a solid foundation for adapting to new situations (and new technologies).
“After a great deal of physical work, you can attempt to lift something, but no movement occurs. The sensation of feebleness where you expected to be able to exert force is surprising and unmistakable. The mental equivalent feels very similar. There is absolutely no point pushing harder, but switching to rest mode instead of carrying on bashing away with your puny little neurons is not easy. This stuff runs on autopilot. You must obtain physical sensory stimulation. A shower, a noisy bar, a band. Get out of your surroundings. You can recover mental energy in a few hours if you stop when you know you can get no further.”
This can seem like a very abstract concept to a lot of people. The Programmer’s Stone contains a great deal of insight about “meta-thinking” and how we develop understanding. The advice above is useful for developing a sense for when you’ve become mentally exhausted, and knowing that it’s an important time to back off. The solution will come in time. Intuitions like this may seem obvious when stated this way, but when you’re your own coach, it’s important to keep some of these fundamentals in mind.
And that’s an important component of the discipline; you’re becoming your own coach. You need to begin to watch your work from a “meta” level, and begin to attempt to steer your efforts based on your coaching. Again, this sounds simple. But the devil is in the details. If you have not pursued this style of self-directed learning, consider trying it.
“When one adopts the strategy of forming one’s own mental map of a problem domain and attempting to simplify it, one faces the problem of when to stop working on the map. This applies at every level of design. The extraordinary thing is that there almost always is a deep solution, that is significantly simpler than anything else, and manifestly minimal. (There may be more than one way of expressing it, but then the relationship will be manifest.) Although homilies like `You’ll know it when you see it!’ are undoubtedly true, they don’t tell one where to look. As the only honest argument we can offer here is the promise that this really happens.”
Again, this comes down to self-coaching.
🧭 In order to be an effective mapper, it’s important to work on developing your own internal compass. That compass will help guide you in knowing when to dig deeper, when you’re on to an important lead, and when you’ve reached your goal. Having a mentor is a useful tool in developing your own internal guidance. But the single most important thing you can do is to try.
If you’re unfamiliar with learning a new discipline in a self-directed way, the process of “trying” can feel quite awkward in the beginning. But stick with it… keep at it, even if you’re not at all sure you’re “doing it right.” Eventually, as you start putting pieces together, that awkwardness will slowly turn into a richer and more nuanced mental map of your domain.
I believe that the mapper and packer divide is actually a spectrum, and we all fit on that spectrum in different places. But no matter where you find yourself today, making an investment in trying to learn something experientially, is always a good investment in rounding out your intuitive understanding. Continuing to try in the face of any awkwardness and discomfort is almost always a sure fire way to get some momentum going.
Just start somewhere, and keep working at it!