6) Abstract Thinking
Abstract thinking is thinking done without the object of the thought present, or even physical. It’s a foundation of coding. Because the written code, and what it produces can never be observed and measured physically, successful coders have to develop an ability to think abstractly, in larger, more comparative ways than they may be used to. Abstract thinking is also the ability to think about a subject, object or project on many levels at once. Being able to balance different symbols, commands, and processes that are in place, running automatically, vs. those that you need to more directly oversee/renovate is an important, often overlooked part of coding. Abstract thinking is often improved through discussions with others. It involves a willingness to see things from a different angle, or to draw analytical conclusions from what might seem straightforward.
Let’s say for example that you told someone to go buy a pizza. That would work out great if the person automatically knows how to get to the pizza store, what money to bring, the pizza you’d like ordered, and even smaller, more minute calculations like how to drive, walk, or continue breathing. You might even bring back a pizza that I wouldn’t think I’d enjoy. But perhaps after eating it, I learn to love it. An abstract thinker could recognize something in my newfound reaction to a previously undesired pizza that speaks to the ability to change our feelings and desires even when we don’t think we will or want to. Being able to separate, create and visualize what a program knows, what it can know, what it’s compartmentalized already and how these factors interact are all essential to coding.