Skip to content

Creative coding

Creative coding can be described as a programming style that seeks to express values, feelings, meanings, and ideas through software code. For example, I designed the Coralizando book cover with a Processing script to express the plurality of the book contributors in a way I wouldn’t be able with a regular drawing.

This style is increasingly being adopted by software studios programs as a motivating approach to learning computer programming. I have experimented teaching with creative coding in Faber-Ludens Interaction Design Institute and Apple Developer Academy.

The results are always encouraging once you see students with no programming background creating something they feel proud of in a short timespan. My colleagues from computer science say that students do not learn to program properly in this way. I agree, but I think this is a necessary initial step to develop the motivation for studying the topic in-depth.

Based on multiple observations I conducted in Apple Developer Academy software studio, I found seven coding practices that are common in creative coding and that diverge from functional programming:

  1. Writing code like sketching is the main practice that distinguishes creative coding from other programming styles. It is often expressed through an analogy with painting, drafting, and composing.
  2. Code bricolage helps with starting when there is no idea to sketch. Instead of starting from his own sketch, the creator borrows an idea from someone else.
  3. Expressing feelings and ideas is a motivating practice behind creative coding. The new possibilities opened by the digital medium unfolds as one starts to compute his own code. 
  4. Designing emergent performances is the practice of designing conditions for unexpected phenomena to happen. Instead of carrying an underlying message from the artist, the digital work is more often than not a system crafted for multiple equally-valid interpretations, an “open work”.
  5. Happy coding mistakes is the discovery of an interesting performance through a non-fatal software bug. These bugs break the expected performance, but they do not crash the software execution.
  6. Deploying randomness is another practice that tries to escape medium determinations. Randomness remedies the bias towards precision, creating the illusion of organic behaviors and shapes that are not precisely drawn.
  7. Appreciating code aesthetics is the foundational practice of creative coding. It means that creators appreciate their code for qualities beyond (or in opposition to) the classics of clarity, efficiency, and correctness of functional programming styles.

This is not an exhaustive list and I’m still searching for characteristic creative coding practices. Below there is a playlist with some creative coding apps from my former student at Apple Developer Academy.

Categories: Methods & Tools.

Tags: , , ,