Types of Thinking
We each have a unique perspective or way of viewing information and situations. While no two people think the exact same way the differences can be summarized in different styles or types of thinking. There are many different styles of thinking and most people are a combination of several of them.
The types of thinking can be viewed on several spectrums such as concrete to abstract thinking. Rarely will you see adults who are completely concrete or completely abstract thinkers. It’s most likely that a person will have a natural tendency toward one way of thinking or the other.
While you may favor one style over the other that does not mean you cannot use that other style of thinking when the situation necessitates it’s use. For example, when you are writing SQL queries you’ll want to use more of a sequential thinking approach that will work best with a procedural language even if you are not really a sequential thinker naturally.
While each of us tend to naturally gravitate toward one or the other on each of these spectrums we are able to learn and use the skills of the other one as needed. This is far from a comprehensive list of all the ways that you may think, but it’s a good starting point to better understanding how you problem solve. Use this information to see not only how you think through a problems but to also see how others may solve problems and learn to work with different approaches.
Concrete Thinking vs. Abstract Thinking
Facts are the only thing that matters in concrete thinking. It sees ideas as specific objects instead of a representation of that object. Children start to develop concrete thinking when they begin to have object permanence.
Concepts are used in abstract thinking to create generalizations that relate to actual objects, events, and experiences. Children start to develop abstract thinking abilities around the end of elementary school.
Abstract thinkers see the world through representations with a world view that everything relates to a generalized concept. Concrete thinkers, on the other hand, approach the world with data and facts. Concrete thinkers are drawn to detail oriented work where there is little room for interpretation, whereas abstract thinkers tend toward work that involves understanding the broader ideas.
From a coding standpoint an abstract thinker may overuse generics, interfaces, and factories while a concrete thinker will tend to repeat the same code each time it is needed.
Creative Thinking vs. Analytical Thinking
Creative thinking breaks the established rules and way things are currently done in order to come up with new and innovative ideas. It is about discovering solutions that aren’t obvious.
Analytical thinking breaks down bigger concepts into their individual parts. It looks closely at the established process in a logical, step-by-step manner.
Analytical thinkers look at the work at hand to see what needs to be done within the parameters set, whereas creative thinkers seek solutions outside of the confines of the set parameters. You’ll likely see more analytical thinkers in areas where security and stability are important. Creative thinkings have a tendency to gravitate toward newer areas or places where they can explore.
Sequential Thinking vs. Holistic Thinking
The path to sequential thinking is a step-by-step process that does not deviate from the prescribed path. It requires that the step be completed and have a response before continuing on to the next step.
Seeing the big picture is key in holistic thinking, the word holistic is defined as taking into account all aspects or the whole of a thing or person.
Sequential thinkers process information in a specific and orderly fashion. Whereas, holistic thinkers process systems of information and see the connections between clusters of thoughts and ideas. More procedural languages draw in the sequential thinkers as the structure of those languages better maps to the way they see the world. Asynchronous languages such as the object oriented languages will be more in line with the way the holistic thinkers process information.
Convergent Thinking vs. Divergent Thinking
Convergent thinking takes many disparate pieces of information, perspectives, or topics and finds the commonality in them to be able to solve a problem. It’s all about connecting the dots of data scattered in what may seem to be incomprehensible fashion.
Divergent thinking goes down all possible roads before choosing the best one for the solution. It’s about not ruling out any possibility until thought out thoroughly.
Convergent thinkers see patterns where others do not. Divergent thinkers entertain and explore solutions that no one else would have even thought about. You want your divergent thinkings in brainstorming sessions because they can quickly come up with ideas and explore their possibilities, whereas your convergent thinkers are best utilized when seeking out a bug or trying to figure out why something is working the way it does.
In the extreme, convergent thinkers discover design patterns in code while divergent thinkers write their own languages to solve a problem.
Bonus: Critical Thinking
While the previous eight types of thinking have to do with the way you process information or how you see the world, critical thinking is a skill set that you can develop. It is your ability to rationally examine information and make decisions based on that examination.
Gaining and improving on the skill of critical thinking will help you to make better decisions as you will have better information on which to base your decisions. It also enables you to move from passive learning to active learning. Just like any other skill, there will be people who have a natural talent for critical thinking. Don’t let their natural ability dissuade you from improving your skills.
Critical thinking is a process that includes several steps. These steps include:
1. Identifying the problem that needs to be solved.
2. Collecting information: data, opinions, etc.
3. Evaluation and analysis of the data.
4. Determining which pieces of information are relevant and accurate.
5. Reaching a decision or solution to the problem.
Tricks of the Trade
Garbage in / Garbage out. When you make a bad decision based on bad data, you need to fix data problems, not the algorithm you used to make a decision. This also means you need to be capable of doing so. As developers, we often have a bias towards writing a perfect way to process and respond to data, while not focusing enough on how that data is obtained.