Two mindsets for designers in the computer era
Connecting #CompThink and #DesignThink
The occasion to start thinking about connecting computational and design thinking is a distinction within design John Maeda (Design Partner at Kleiner Perkins Caufield & Byers) made in his recent 2016 #DesignInTech report (see slide 47/49). Explaining various types of design has become necessary because it has turned into a suitcase concept you can put almost anything in it. To make things more clear, Maeda distinguishes classical design from design thinking and computational design. In his report, he outlines them as follows.
- Classical design (Design): There’s a right way to make what is perfect, crafted, and complete. Driver: the industrial revolution.
- Design thinking (Business): Because execution has outpaced innovation, and experience matters. Driver: the need to innovate in relation to individual customer needs requires empathy.
- Computational design (Technology): Designing for billions of individual people, in realtime, and at scale. Driver: the impact of Moore’s law, mobile computing, and the latest tech paradigms.
These three categories of design are co-dependent. You must embrace at least 2/3 categories in order to win in the 21st century, says Maeda. His introduction of computational design as a separate area in the design domain made me wonder how design thinking and computational thinking and design are related and how they can be connected.
Within design circles, the concept of design thinking is widely known. According to Gerd Waloszek (retired UX Design expert at SAP AG), design thinking is a methodology and approach to solve problems creatively and to bring design to the business world. Computational design on the other hand can be described as “the discipline for developing computational approaches to problems that originate in design, whether these relate to creation, presentation, analysis, evaluation, interaction, or aesthetic expression, albeit for real or imagined application, both perceived and conceived.” (Carnegie Mellon University) Both mindsets can be applied to solve problems, but in different ways.
So, when designers need to understand the theory and practice of computational design, they must embrace computational thinking first. It is obvious that machine learning, big data, and ubiquitous computing will have a significant impact on their (future) design work and will create a need for them to learn about computational thinking. To compare, ubiquitous computing is to today as computational thinking is to tomorrow. Ubiquitous computing was yesterday’s dream that became today’s reality; computational thinking is tomorrow’s reality.
What is computational thinking?
As a disclaimer, it is a misunderstanding that computational thinking is only about computers and that everybody needs to learn programming. The concept is much broader than that.
The best start to learn about it is reading the seminal short essay “Computational Thinking” (.pdf) by Jeannette Wing (2006). In this article, Jeannette (now VP of Research at Microsoft) provides various positioning statements on computational thinking. According to her, computational thinking is “taking an approach to solving problems, designing systems and understanding human behaviour that draws on concepts fundamental to computing.”
Furthermore, it represents an universally applicable attitude and skill set and builds on the power and limits of computing processes, whether they are executed by a human or by a machine. It is a fundamental skill for everyone (PB: designers included), not just for computer scientists.
Computational thinking is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation. It is using abstraction and decomposition when attacking a large complex task or designing a large complex system and it is using heuristic reasoning to discover a solution.
Abstraction as the core concept of computational thinking
In computational thinking, the most important and high-level thought process is the abstraction process. Computational thinking is a kind of analytical thinking of which essence is abstraction. Abstractions are the ‘mental’ tools of computing. The abstraction process introduces layers and computational thinking is thinking at multiple levels of abstraction. In computing, we work simultaneously with at least two, usually more, layers of abstraction. These abstraction layers are the layer of interest, the layer below, the layer above and the interfaces between these layers.
For example, an algorithm is an abstraction of a step-by-step procedure for taking input and producing some desired output. And a programming language to create these algorithms is an abstraction of a set of strings each of which when interpreted effects some computation.
And so the nuts and bolts in computational thinking are defining abstractions, working with multiple layers of abstraction and understanding the relationships among the different layers. It is using abstraction and decomposition when attacking a large complex task or designing a large complex system.
Other characteristics of computational thinking
Computational thinking has more characteristics than abstraction alone.
- Conceptualizing, not programming. Computer science is not computer programming.
- Fundamental, not rote skill. A fundamental skill is something every human being must know to function in modern society.
- A way that humans, not computers, think. Computational thinking is a way humans solve problems; it is not trying to get humans to think like computers.
- Complements and combines mathematical and engineering thinking. Computer science inherently draws on mathematical thinking, given that, like all sciences, its formal foundations rest on mathematics.
- Ideas, not artifacts. It’s not just the software and hardware artifacts we produce that will be physically present everywhere and touch our lives all the time, it will be the computational concepts we use to approach and solve problems, manage our daily lives, and communicate and interact with other people.
- For everyone, everywhere. Computational thinking will be a reality when it is so integral to human endeavors it disappears as an explicit philosophy.
What are the elemental concepts of computational thinking? In definitions of computational thinking, three concepts are essential: the concept of a thought process, the concept of abstraction and the concept of decomposition. Computational thinking is an activity, often product-oriented, associated with, but not limited to, problem solving. It is a cognitive or thought process that reflects
- the ability to think in abstractions
- the ability to think in terms of decomposition
- the ability to think algorithmically
- the ability to think in terms of evaluation
- the ability to think in generalizations.
Computational thinking is a focused approach to problem solving, incorporating thought processes that utilize abstraction, decomposition, algorithms, evaluation, and generalizations. It is closely associated with, but not defined by, the physical or applied skills of modeling, simulation, and visualization. It is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.
Computational thinking means:
- understand and solve problems more effectively;
- designing systems;
- understanding human behavior;
- creating and making use of different levels of abstraction;
- thinking algorithmically;
- with the ability to apply mathematical concepts such as induction to develop more efficient, fair, and secure solutions;
- understanding the consequences of scale.
These are just a few general notions on computational thinking making hopefully clear why I think this concept is relevant to the domain of design. Already, the concept has revolutionized science, engineering and finance. Now design can get the benefits from it too. Designers must learn about this way of thinking and problem solving and apply it to the (digital) design challenges at hand.
But one of the most important reasons to embrace computational thinking (besides design thinking) is that – as we all know – humanity faces some grand challenges (think global warming, wealth inequality and urbanization). Designers can be instrumental in many ways and the expectations of what design can do are sky-high. Or, to cite Kees Dorst (2015) in “Frame Innovation: Create new thinking by design”
Today’s problems are a new breed (complex, open, networked, and dynamic) and require a radically different response.
New mindsets, ways of thinking and framing through the synergy of computational and design thinking will support designers to create, prototype and implement these kinds of radical different responses. And in doing so add value for profit, people, and our planet.
Want to learn more on computational thinking
- Computational Thinking: The Developing Definition (Cynthia C. Selby, 2013)
- Computational Thinking with Jeannette Wing (video)
- Papers related to Computational Thinking (CMU)
- Centre for Computational Thinking (CMU)
About the author
Peter Bogaards (a.k.a. @BogieZero) is the editor-in-chief of our blog BiRDS. Peter also works as a curator and coach at Informaat experience design. He has been an online content curator avant-la-lettre in various UX-related fields for almost three decades, choosing what he thinks is interesting, relevant or remarkable to share.
Design thinking (16), Innovation (6)