Chapter 18
Geeks, Programmers, Developers, Tinkerers

Designers today do not have to be able to write strings of codes to thrive in the digital environment, but it helps. While programmers are seldom designers (their work is so engrossing, they tend to lose track of the big picture), designers who master the basic principles of computer language are at an advantage. They are the folks who think in terms of possibilities instead of mere solutions. They can navigate effortlessly between print, digital, dimensional, interactive, motion, and environmental media.

For this next generation of design thinkers, the breakthrough design process is generative design. It is a computational modeling system that generates three-dimensional patterns through a series of repetitions (iterations), replicating the way forms grow in nature. The main application of generative design is data visualization and the simulation of architectural structures, but its sci-fi aesthetics makes it the perfect visual language for special effects. A small number of graphic designers use it to create interactive installations in the context of special events or contemporary art shows.

In general, geeky graphic designers and programmers are in demand everywhere, in every design studio, ad agency, or brand consultancy. Not only can they “fix” computer bugs and restore the functionality of various peripherals; they also think in term of systems rather than short-term design solutions. Hired as the “IT” individual on the team, they are often offered a partnership in small organizations, so critical is their technical but also intellectual contribution.

Frieder Nake

Controlling Computers with Our Thoughts

c02f007

Random Polygon

Frieder Nake

1965

What is algorithmic thinking?

In algorithmic work, the most important parts of a design are done in thinking—in the mental domain. It's as if, before you do anything else, you stop and try to determine which specific features your design should have—even though you don't know yet how these features will interact with each other. You must anticipate all the options and possibilities but then leave it to the program to proceed with the actual execution. The excitement is right there: in the discovery of how, where, in what manner, and to what extent the predetermined features will appear.

Of course, nothing will happen if I only “think” about it. I must shape my thoughts, wishes, intentions, vague ideas, and half-baked decisions into a program—into algorithms. So I must make my aspirations explicit, but not so explicit that only one option is left. I must really think in terms of possibilities (in the philosophical sense of the word). The program becomes the description of things and events that may (or may not) happen. There is no certainty.

Also exciting is the fact that you must think in terms of entire classes or sets of design, not in terms of a single work. Algorithmic work can generate designs that are “art,” even though they contain elements that we do not control.

Can you clear up another thing: What is the difference between generative design and digital art? Are the two terms interchangeable?

No, they are not interchangeable—not in the sense that any piece of digital art is also an example of generative design.

If you use a rich—or not so rich—piece of software to generate design on your screen, it is, by definition, “digital” (and may even be considered “digital art”). However, it is not necessarily “generative.” In order to be “generative,” some parameters, procedures, and “decisions” must be left to the program.

Granted, it is a little confusing because, in some way, all design is necessarily “generated” or else it is not design. When we talk about generative design, the term “generative” is not used in its broadest sense but in a specific interpretation: when the preparation for the actual material production of the work involves, to a large extent, algorithmic thinking.

Graphic designers are applying analog thinking to “find the best design solution.” Instead, should they use algorithmic thinking to explore the possibility of infinite solutions?

That's a good formulation. The only difference I would see is this: I am not suggesting that graphic designers “should” explore all possible design solutions instead of trying to find the (almost) absolute best one. More modestly, I would say that since the “best” design solution is so unlikely to be found, the experimental and explorative attitude may be more promising.

What would be the best use of generative design in a contemporary design practice?

I am afraid, I do not know. It is a matter of attitude. As I mentioned earlier, the notion of “best” is ill defined. We kid ourselves when we believe that we know what's best. The space between better or best is so vast that we should be content with something good, agreeable, okay, nice, and so on.

c02f007

Fields of Random Cross-Hatchings with Vertical Random Lines

Frieder Nake

1965

Today, the majority of graphic designers are merely computer “users.” They don't question the choices that operating systems and software programs make for them. This situation saves time, but is it dangerous?

It seems, indeed, that it is as you say: that a great number of (young?) designers use all these incredibly powerful software packages, and accept the results. These packages are powerful—they deliver acceptable results day in and day out. Nothing in the experience of most graphic designers tells them not to trust their software.

I don't like to speak of such a situation (to the extent that it is true) as “dangerous.” But, in some way, the word is okay. The situation is particularly dangerous for experienced designers who have more to lose when they defer to software. Their expertise and experience seem less valuable, somehow. Young designers, on the other hand, have more to gain from trusting their software. Often, they come up with quite agreeable design solutions that they would not have imagined otherwise.

However, I am afraid to say, time constraints cannot be ignored when it comes to work that is assigned or commissioned. An automatically generated, pretty good (though not quite “best”) design solution will often suffice.

Generative design proposes a totally different approach, one not compatible with the realities that most graphic designers encounter. You cannot tell a client, “Let us define the outcome of this project only to some extent. Let us explore it algorithmically. Let us be content with what we get because we do not believe in best solutions any more.” That would not be comfortable!

The issue here is the collaboration of man and machine. What's human and what's mechanical? I call this question the “machinization of human work.” I use this un-English word on purpose to describe the transfer and transformation of human work into “machinic” form.

Do you mean to say that when human beings program machines to generate forms, the result is necessarily “human”—even though machines did the work?

Yes. A lot of design work that is now shifted over to the machine (the computer) is actually performed in the interactive mode. This means, indeed, that a great number of actions and decisions are left with the human designer. Insofar it is “more human.”

In some instances, designers set up the entire environment, with all the parameters and automatic procedures (algorithms) they want to control without necessarily intervening interactively. Then they can sit back and observe the results generated by the computer. Paradoxically, though designers are not touching anything, they are in more control than if they were actively intervening. A funny dialectic, isn't it?

c02f007

Random Walk Through Raster, Series 7.1–3

Frieder Nake

1966

As you were talking, one thought occurred to me: Should we reevaluate mathematics as a new art form?

A lovely question, allowing for only speculative answers. Indeed, there is a broad trend currently to bring together mathematics and art, or science and art—many projects of this kind, almost in a torturous way. I am hesitant, waiting, skeptical.

Mathematics has, of course, strong aesthetic components. For example, the expression “mathematical elegance” is used to describe simple and effective theorems. The aesthetics of math is in the actual carrying out of math. And that's not new. It has always been with us, but we have not noticed and have ignored it. If there is now some more attention, that's nice.

But the “artistic” part is not so much in the way computer can be made to visualize some mathematical processes. Algorithmic thinking should remain different from aesthetic thinking, and that's good and welcome. La différence is important for us to notice and preserve.

Mark Webster

Iterations and Algorithms

c02f007

Dessin via processing Code poster

Designer: student

Client: Mark Webster

2014

What do you say when people ask you what you do?

Creativity is manifest in many fields of work I practice—writing, designing, teaching, musical composition, and thinking! But 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.

In plain English, I would say that you teach designers programming skills. But I often wonder, what is the main difference between a graphic designer and a programmer?

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.

So, designing a program is not different from designing a grid?

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.

c02f007

“Art Design Code,”

Poster for a Conference

by Mark Webster

Designer: Mark Webster/ Free Art Bureau

2013

Will knowing how to code make your students better graphic designers?

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.

What is the difference between “algorithmic thinking” and “generative design”—another term that attempts to define this relatively new approach to graphic design?

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.”

c02f007

What do you mean by “iterative process”?

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.

c02f007

“Code”

Logo for a Conference on typography as generative design, Bordeaux

Designer: Mark Webster/Free Art Bureau

2012

How can graphic designers learn more about programming?

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 and 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 are 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.

Can you explain the main advantage of the Processing programming language as a tool for thinking?

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.

c02f007

“The Gerstnerizer”

Pattern Generator for Graphic Designers, the Silkscreened Version

Designer: Mark Webster/ Free Art Bureau

2011