I do not have a formal background in programming, but my interest and curiosity in understanding how things work drove me to eventually learn ActionScript 2.0 for Adobe Flash
applications. This programming language made it easy for me to ‘see’ or visualize the results as I coded. Along the way, I discovered that coding is a worthwhile visual feedback tool to master for designers and creatives.
With a lot of cross-referencing from online resources, I developed my first simple flash game for a client. It felt like a Eureka moment when I got to see my digital artwork come to life with a few lines of code.
Ever since that moment, I have tried to convince fellow designers to learn to code as I feel it will enable them to provide a different perspective on their work. Not only can they create a small program or widget which can improve their work productivity (Photoshop Actions), but also they can use a graphic generator that can create random artwork, which helps them to see their artwork differently (later, I would find out this is known as Generative Design
). Back in 2007, the common question was “Should designers learn to code?”
However, it was a project (a coding card game for kids
) only a few years ago that prompted me to further explore the topic of coding and discover the relationship between programming and design. It was through this project that I began to better understand how programming can be applied to daily problem-solving, and not just for coding applications.
Computational thinking has become a buzz word in recent years due to the increase of STEM education for kids.
In a nutshell, what is computational thinking?
“In education, computational thinking (CT) is a set of problem-solving methods that involve expressing problems and their solutions in ways that a computer could also execute.” (Wikipedia)
However, the phrase “computer could also execute” does not mean it is only applicable to coding. Here is how I view the four stages of computational thinking — decomposition, pattern recognition, abstraction, and algorithms — which can each be applied by designers when solving design problems.