This text is an interview that was published in the book, Becoming a Graphic and Digital Designer written by Steven Heller and Veronique Vienne. I discuss some ideas about my practice and teaching with regards to the relationships bewteen graphic design and the implementation of code and programming. The interview took place April, 2014.
For the last ten years, my principal line of work has been in the field of graphic design. But my main activities over the past five years have been focused on how programming can enrich the practice of graphic design. In line with this, I created in 2011 the non-profit organisation FAB, Free Art Bureau. Our mission is to promote programming practices in the arts and in an open and sharing manner. Through a variety of activities, events and lectures, we want to empower and build creative communities that are free from the restraints of closed systems.
Creativity is manifest in many fields of work I practice; writing, designing, teaching, musical composition and thinking! Essentially I am passionate about how we create and finding ways to distill new practices with other disciplines. Code and programming has become a major part of my thinking and understanding as one plausible approach to creativity. I have no specific job title per se. I prefer to describe what I do and often answer that I teach designers to program computers to do things that will help them in their everyday practice. I help designers define the rules that generate possibilities.
The very act of designing can be viewed as a form of programming. Designing implies a logical and systematic approach to creation. When we design, we are often undertaking what one could call, essentially, the making of a program. Where graphic design and programming find a common ground is in their process. Both can follow what I have come to call over the years a “systematic approach” — often referred to as computational or algorithmic thinking. Whether you use a ruler and pen or write code to draw up a grid system, the process is inherently similar on a purely conceptual and mental level.
There are a lot of overlaps between the designer and the coder. What is important to realize is that a system — a grid or a program — helps establish a coherent process from which is born a vast possibility of creative applications. A grid is a tool set that enables the designer to position elements in space and establish a formal coherence as a whole for the final composition. Likewise, a program is a set of instructions based on a number of rules and a set of parameters. When we follow these rules, we produce an outcome. In both the grid and the program there is scope for possibility built on an underlying logical system. It is the unique interaction of these rules, the tweaking of parameters and the media used that will give forth to a wide variety of results.
Beyond the technicalities of teaching designers to code, my task is much greater in ambition. Learning to program is more than just learning a technique for making things. It is not simply a tool as such, nor is it just another means for creating dynamic websites, interactive tools or data visualizations. Learning to program is learning an essential set of skills that opens up to a new way of thinking – “algorithmic thinking”. I believe this knowledge can help the graphic designer reinforce his or her conceptual approach in the designing process as well as open up new and exciting possibilities in their practice.
The two are obviously interlinked although there is a subtle difference. Algorithmic thinking refers to computational problem solving. Generative design is what algorithmic thinking produces: an infinite number of design solutions. However, I don’t like the expression “design solutions” very much. I’d rather think in terms of possibilities than solutions. Instead of solutions for problems, generative design proposes “programs for possibilities”. This idea extends Karl Gerstner's seminal work described in 'Designing Programs' written in 1964. Another way of thinking about generative design is as a means of designing through iterative processes. These processes are based on strict rules. The rules are “algorithms”.
Iteration is a powerful means for prototyping ideas quickly and generating a myriad of possibilities. The creative process is always one of exploration and experimentation. There are no fixed, strictly defined solutions as there are no absolute ideas. Code is a flexible medium that enables one to express and implement many possibilities. Generative design is the outcome of working with iteration and algorithms.
There are a lot of resources on the internet about programming and there are increasingly more scripting languages and tools. It can be quite overwhelming at first to delve into this subject without some clear and concise references. I would highly recommend reading Processing for Visual Artists, by Casey Reas & Ben Fry to learn the fundamentals of coding practice. If you want to get an idea of code as a tool in its various applications then Code & Form in Design, Art and Architecture, by Casey Reas, Chandler McWilliams, LUST is an informative introduction. At this time in writing there is no book that explains this new approach specifically aimed for graphic designers. I am currently working on that.
Processing was conceived specifically with visual artists in mind. That is to say that it uses keywords in its language that are easier to relate to for these people. It also simplifies a number of more complex concepts that are more laborious to implement in other languages such as C++ for example. Processing is a simplified version of the more complex language, Java, which is still a highly influential and powerful programming language. In terms of a tool for 'algorithmic thinking', Processing introduces and uses the major concepts of programming that are found in so many other languages. It is these concepts that are at the basis of beginning to think with code. There is an international community of people working with Processing and from many fields of work; interaction design, animation, art, architecture. It is widely used in research and as a pedagogical tool in art and design schools around the world. So, Processing is the perfect language in my opinion to start to learn about programming and code for creative practices. It is equally a great foundation for those who may want to move on to learning other languages at a later stage.
First published in Becoming a Graphic and Digital Designer. 2016
The official website for Processing: https://processing.org