Synergies between Systemic and Computational Thinking


Tim: Martin, we have been working together on coding systems now for more than 3 years. The conversations with you broadened my perspective on design a lot, and I am very thankful for having you in my life as a sparring partner and friend. If you would ask me what I have learned on this journey, I would say that I understand now how powerful the idea of system thinking is, in design and beyond. I am often surprised how well our individual practices match together. Now we had the chance to work together on a huge project for an American university, helping them to develop a powerful visual language with custom tools and embedded applications for their learning platform. For me that was a really fluid and effective collaboration. I wonder how you experienced this project, compared to the projects at TwoPoints.Net1. What was different? Where do you see the power of our synergy?

Code turns nonlinear systems into linear language that instructs computers.

Martin: First of all thank you for your kind words! The gratitude is mutual. I am learning a lot through our conversations. It is so much more eye opening, being able to shed a light on something through different perspectives. The shadows of the unknown will always be present, but they become considerably smaller. About your questions. The project you are talking about, compared to the projects I have realized through TwoPoints.Net, isn’t one of the biggest. I have done bigger and more complex projects. The project for Spain as a Guest of the Frankfurt Book Fair or the Identity for the Burger Bar franchise Bacoa for example. Where it differs is the amount of designers participating in the project. This makes the internal coordination more complex. You have noticed that we had quite a lot of meetings. Systemic Design is especially helpful when working on complex projects, because it structures processes and defines rules which help bigger teams to align and coordinate. This is where I see the similarities between your thinking and my thinking or to be more precise, they are closely entangled. Code turns nonlinear systems into linear language that instructs computers. But in the process of doing that, one has to make design decisions that limit the amount of possibilities. Without limitation, there is no identity. An identity needs constants, as it does need variables. Once these constants are defined, and the identity is built, the visual language needs to be explored within these limitations to make an eloquent language possible. Working with code channels these processes. A code translates the system into commands and the code translated into a tool allows you to play with the system. 

Without boundaries, there is no identity.

Tim: What I have realized is that I have always been thinking as a system designer since I am writing code that generates visuals. I was not able to express this clearly, and was lacking the words. But the systematic is inherent in creative coding l, there is no way around.

Martin: That makes a lot of sense. All languages are codes that force us to think in systems. Languages are basically systems. Systems based on concepts. Which would mean as well that they frame our thinking in these concepts. Which concepts are at the core of the programming languages you are using? 

Tim: In my teaching, I use the metaphor of four pillars that support the complex structure of a program. These pillars are functions, conditional statements, loops and variables. This is generally abbreviated because most people also use other concepts and tools in creative coding, such as arrays, classes and objects. But at the beginning of the learning process in Creative Coding how I teach it, these four pillars are the fundamental ones.

What I find interesting is that these basic building blocks occur in every programming language and only the syntax changes. A loop looks different in Python than it does in Javascript, but it basically does the same thing. This often leads to a huge aha moment in the learning process: as soon as you realize that every language basically follows the same principles, it becomes clear that you basically understand almost all languages at their core if you know these principles.

Footnotes:

  1. TwoPoints.Net https://new.twopoints.net/
    https://en.wikipedia.org/wiki/Systems_thinking
    https://en.wikipedia.org/wiki/Computational_thinking ↩︎

Published on November 4, 2024

Last updated on November 6, 2024

This conversation is an invitation for collective sense-making. Did it spark any ideas or doubts? Do you have additional sources we should look into? Use the comment section to become part of the conversation.

Join the conversation