• CodedShapes
  • Posts
  • Do You Need to Learn Programming in Computational Design?

Do You Need to Learn Programming in Computational Design?

Hey there,

Most of us in the computational design (CoDe) space, myself included, aren't formally trained in computer science or software development. Yet, our work often merges these fields with others — bio-medical engineering and architecture being prime examples.

Tools like Grasshopper and Dynamo can take you quite far, but they don’t give you the same granular control as traditional programming. In fact, as we get better with these tools, the more their limitations become apparent. Making the allure of programming stronger.

So the question is: Should we learn to program?

My answer is yes. But with a caveat. Although programming can be a game-changer in CoDe, it's not always the most efficient use of our time. In this article, I'll walk you through the reasons to learn programming, as well as reasons why you might choose not to

The Case Against Learning Programming

Like any new skill, programming requires a big investment in your time and effort. Even though I preach the benefits of learning programming, it’s essential to consider other competing skills that you want to learn first. Trying to learn how to program half-heartedly will only leave you feeling unfulfilled and frustrated.

This frustration is particularly acute for those of us accustomed to tools like Grasshopper and Dynamo, which make programming a visual and interactive experience. As you learn the basics of programming — variables, loops, and the like — the exercises you'll encounter can seem dry and dull compared to the work you're used to with other CoDe tools.

So, if you're satisfied with your current skill level or if there are more pressing skills you need to master, I would postpone learning how to program until you have more time. I don’t think programming as a skill is as urgent as some people might think. It’s okay to take your time with it.

The Case for Learning Programming

I don’t need to convince you why you should learn programming, there are plenty of people on the internet that will do that for me. It's a skill often touted by influencers and industry professionals. However, if you're deciding between two skills to learn, like sketching or programming, this section might sway your decision.

Programming is a natural next step after using a tool like Grasshopper or Dynamo. Because you are already “programming” when you use those tools. But, instead of writing lines, you're using components that others have built for you. This convenience lets you solve problems quickly and easily without worrying about the computer's memory or the logic behind the components.

By using these tools, you are trading control for ease of use. By using components, you don’t have access to granular control over your data. Your ability is limited by what the components can do. Learning how to program gives you back that control by letting you tell the tool exactly what you want it to do.

Also, because you're already using a tool like Grasshopper, you're likely familiar with some basics of programming. Concepts like data structures or algorithmic thinking will be somewhat familiar. So, you aren’t starting from zero and it becomes an extension of what you already know.

And, even though you become less dependent on external programs, it doesn't mean you have to abandon these tools. In fact, programming makes you more effective at using these tools. In both Grasshopper and Dynamo, you can write code within the tool and even build your own components. All of this just gives you more control over your data.

One final point is that by learning how to program, you will get a better understanding of how computers and the tools that you are using work. This insight helps you optimize these tools by playing to their strengths and avoiding their weaknesses.

How to Start Programming

There are plenty of online guides about how to learn programming, so I don’t want to add to that list. Instead, what I hope to give is some direction and suggestions based on my own self-taught programming experience.

When I learn anything new, the most important factor I consider is context. It’s about connecting what I already know to what I want to learn. I got this concept from Barbara Oakley’s Learning How to Learn a few years ago and has stuck with me ever since. The main idea is to build upon what we already know.

For most of us, this means learning programming in the context of Grasshopper, Dynamo or any other tool. As you learn, you can start applying it to your work by writing scripts in the tool. It makes the learning experience more dynamic and practical, fueling curiosity.

To get more specific, I would start learning C# as your first programming language because it’s used in Grasshopper components and the Dynamo API. However, Python is also worth considering, as both tools are compatible with it.

Python is easier to learn than C#, but C# will give you a deeper understanding of how computers work. I would start with C#, as I find it more relevant to the tools that I use in my work. But the point here is to just build on top of what you already know. So, pick the language that is the most useful for you. Once, you know, you can start researching the best guides on the internet to learn.

Final Thoughts

Programming is an invaluable tool, and I believe that everyone should eventually learn to program. I do see it more as a platform than a skill because programming extends beyond enhancing your current workflow — I wrote more about that here.

That being said, it’s a significant investment in time and effort to learn the skill well. So, if you don’t have the time to pick it up now, I would postpone it until you do. There's no rush to learn this skill but it will be one that will serve you very well in the years to come.

Thanks for reading,

Braden