Question About Coding and Generative Design

gicoga's Avatar


12 Apr, 2017 05:02 PM


I have a question for people with experience in generative design;

Do you guys feel that it is necessary to know computer programming in order to do generative design (the specific field/application isn't important)?

I'm thinking precisely of tools like nodebox or grasshopper which could potentially be used without having computer programming experience, however I wonder how important do you think that having computer programming experience is necessary/helpful (I guess another way to ask this question would be: do you feel that having developed 'computational thinking skills' is necessary to do generative design?).

Thanks a lot for your input, it will be much appreciated, this is for my school dissertation in CAD.


  1. Support Staff 1 Posted by john on 13 Apr, 2017 10:25 AM

    john's Avatar

    This is a fascinating question. You could view NodeBox as a long-term experiment meant to answer that question. As its creator, Frederik De Bleser has a unique perspective; I hope he will find the time to attempt an answer.

    My own take is that data and algorithms are to a generative artist what paint and brushwork are to a painter. Just as a good painter needs to know a lot about paint (where to get it, how much it costs, how to mix it, which hues you need to create different effects), a generative artist needs to know a lot about data (where to get it, how to make it yourself with random number generators, how to clean it, how different types of data behave under various transformations).

    Similarly, a generative artist must somehow develop a facility and comfort level with algorithms, with understanding other people's algorithms, with creating her own, with developing a toolbox of techniques to accomplish various effects, etc.

    So does a generative artist need a CS degree? No. But does she need "computational thinking skills"? At least with the tools we currently have, my feeling is: Yes.

    I base this on my own experience in the workplace, first as a developer, then as a user experience designer. Over the years I have seen many elaborate efforts to develop new tools to empower "ordinary" workers so that they don't have to go to a developer or IT department in order to create a report or process or visualization. So far these efforts have all failed.

    The reason seems to be that a certain basic set of computational thinking skills is essential to these tasks. There seems to be no way around it. No clever or magical UI will eliminate the need to decompose a problem into smaller parts, to debug, and to think abstractly in a way that seems foreign to anyone bewildered or traumatized by basic algebra.

    Yet I still wonder if this need always be so. My wife is a knitter, an art form that has much in common with coding. Although she is highly intelligent and did take a programming class in college, she is not terribly mathematical and I think she would struggle with generative art as it is currently done.

    Yet she is a skilled and artistic knitter. Perhaps the difference is that knitting, like painting, is entirely tangible. You touch the wool and work it with your hands. Knitting charts do require a certain level of abstraction, but in general most of the experience is direct and immediate.

    NodeBox takes a big step in this direction by using reactive programming (each action has an immediate reaction) and a visual interface with scrubbable controls that engage a more visuospatial style of thinking. This creates an experience less like solving a Rubik's cube and more like shaping a pot. You can read my essay on this here:

    So far, though, I have been unable to lure my more fully right-brained designer colleagues into trying NodeBox; it still seems intimidating to them. So we're not there yet. But perhaps when virtual reality is perfected we can make coding fully tangible. Or perhaps machine learning will enable tools so intuitive that we can create art by conversing or dancing instead of coding.

    So, ultimately, your question remains open.

  2. Support Staff 2 Posted by Frederik De Ble... on 14 Apr, 2017 07:45 AM

    Frederik De Bleser's Avatar

    Adding to John's excellent answer, I think it depends on which level you'd like to work.

    Taking the painter's metaphor, you can work with NodeBox just by opening the application and doing something fun. Perhaps playing around with an existing example, changing some parameters and adding a node here and there. That's how beginners learn to paint: by playing around and being fearless.

    At some point however, you'd want to understand a few more things about the system. When painting, you want to understand the materials, but you also want to understand how you'd like to transfer the subject matter onto canvas: for example, how does perspective work?

    The same applies with generative design. You want to have an understanding of the different nodes and what they do, and the underlying system of list matching. In addition, you also want to develop a more intuitive understanding of how you can transfer the idea in your head into a concrete visual program. That requires being able to break down your problem in small pieces, and matching your metaphors with the ones the program provides. This mostly requires experience.

    Just as learning foreign languages helps you see patterns in the usage of language in general, learning different programming languages (preferably from very different families) help you understand how solutions to problems can be expressed in many different ways. (For programming there's the excellent seven languages in seven weeks, which provides exactly that)

    In short, just getting started is the most important part. Learning the fundamentals first is not required to create generative design. I think that at some point, you will automatically want to understand the fundamentals behind it and widen your scope.

  3. 3 Posted by gicoga on 14 Apr, 2017 06:25 PM

    gicoga's Avatar

    Dear John and Frederik,

    Thanks for the excellent replies, I appreciate it.

    The central aspect of my thesis is the notion that (at least) industrial design schools have not moved beyond fostering a set of 'traditional' computer skills, along the lines of what is typically understood by 'CAD' in the field, and that those skills although valuable rest upon the 'domestication' of the computer into the design process. However, (and thus my question) in order to enable (industrial) designers to do things like Generative Design, it is necessary that the approach towards computer skills in schools shifts or expands from that traditional view of CAD (based on learning 3D modelling packages) and more towards a view aiming to develop computational thinking skills/computer science skills.

  4. Support Staff 4 Posted by john on 14 Apr, 2017 06:41 PM

    john's Avatar

    This is something I talked about in the link I provided. My view is that designers have two big challenges: imagining things and conveying what they imagine to others.

    Until recently they could usually get by with fairly static diagrams (including 3-D CAD diagrams) for both the ideation process and for communication.

    Increasingly, though, designers are asked to imagine more dynamic things with many moving parts and second-by-second variations that cannot be drawn by hand. Even to imagine designs and try things out they need to create and manipulate data-driven prototypes. This is where generative design skills are needed.

  5. 5 Posted by gicoga on 18 Apr, 2017 05:13 PM

    gicoga's Avatar

    Dear John,

    Thanks, I think you've articulated it exactly as it is. The complexity of the models with which designers (in all fields really) need to work with, is increasingly higher.

    A last thought/question; what would be your suggestion in terms of good resources and/or languages that you think would be good for novice designers to learn in order to do Generative Design?

  6. Support Staff 6 Posted by john on 19 Apr, 2017 08:38 AM

    john's Avatar


    The classic work in this area was John Maeda's Design by Numbers:

    DBN gave rise to Processing and its derivatives, like P5.js:

    That is still probably the best place to start for designers. Designers who are specifically interested in data visualization and who are already comfortable with HTML and CSS, might benefit from D3.js:

    Here is a link from Autodesk that you may already be familiar with - looks like it's right down your alley:

    CAD Is a Lie: Generative Design to the Rescue

    Of course, my personal choice would be NodeBox.

    Good luck with your dissertation!


  7. 7 Posted by gicoga on 20 Apr, 2017 06:09 PM

    gicoga's Avatar

    Dear John,

    Fantastic, thanks a lot for your input, it's of much help.



Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:


Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

19 Apr, 2024 04:41 AM
16 Apr, 2024 06:18 PM
16 Apr, 2024 04:23 AM
08 Apr, 2024 01:28 AM
07 Apr, 2024 11:50 PM


05 Apr, 2024 11:47 PM
05 Apr, 2024 12:30 AM
25 Mar, 2024 08:48 PM
14 Mar, 2024 07:40 PM
14 Mar, 2024 07:38 PM
12 Mar, 2024 06:14 AM