31st July 2023

Should you learn to program/code ?

Should you learn to program/code ?

Most of us in the computational design (CoDe) space, myself included, aren't formally trained in computer science or software development. Yet the work that we do is the hybrid of these fields with many others – bio-medical engineering and architecture being the most common examples. While we are not programmers by training, programming as a skill can dramatically transform how we work and what we create.

Tools like Grasshopper and Dynamo can take you quite far in CoDe, but these tools still have their limitations. In fact, as we become more proficient with these tools, the more their limitations become apparent. Which means makes the call of programming more enticing.

This begs the question: Should we learn to program?

I say yes, but with a caveat. While programming can be a game-changer in the CoDe field, it's not always the best use of our time. In this article, I'll be your guide through the reasons to learn programming, as well as the reasons not to.

The Case Against Learning Programming

Like any new skill, programming requires a significant investment in your time and effort. Even though I preach the benefits of learning programming, it’s important to consider other competing skills that you want to learn first. Trying to learn programming without committing the right time will leave you feeling unfulfilled and frustration.

Learning how to program is like studying math in high school, which many people didn’t enjoy. In the beginning, you have to learn the building blocks of programming like variables, functions, loops, etc. Normally, you do this by making basic console applications which are dry and boring
especially if you know you can do the same in a quicker and nicer fashion in Grasshopper. It’s hard to appreciate the bigger picture but you can’t rush through the basics. When you start learning, you need to invest the time in understanding the basics.

So, If you're happy with your current skill level or if you have other more pressing skills to learn, I would leave learning how to program until you have more spare time. I like to see programming as a “core” tool in my arsenal as I wrote in my skill-tree article about learning. Even though I call it a “core” tool, the quotation marks mean it isn’t the most important tool to have. You are better off learning what’s immediately useful to you.

The Case for Learning Programming

Many people don't need convincing about why they should learn programming. It's a skill often touted by influencers and industry professionals. However, if you're deciding between two skills to learn, such as sketching or programming, understanding the benefits of programming might sway your decision.

Programming is a natural next step after using a tool like Grasshopper or Dynamo. Technically speaking, you’re “programming” when you create a script. But, instead of writing lines, you're using components that others have already built for you. This convenience enables you to solve problems quickly and easily without worrying about the computer's memory or mathematical calculations behind the components.

But, this also means you're at the mercy of the tool. If, for any reason, Grasshopper decides to remove a component that you were using, you're powerless to prevent it. You have to follow what the creator’s of the tools want to do. Take a look at the big changes coming for Grasshopper 2 as a good example of this. By learning how to program, you can avoid some of these issues by getting more control over how your data is being processed. The greater the control, the less dependent you are on external tools.

Also, because you're already using a tool like Grasshopper, you're likely familiar with some basics of programming. Concepts like data types, data structures, or algorithmic thinking should be somewhat familiar, which means you aren’t starting from zero. This makes learning how to program a lot faster and easier.

And, even though you become less dependent on external programs, it doesn't mean you have to abandon these tools. In fact, programming means makes you more effective in 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 options and control over your data.

One final point about learning programming is that you will get a better understanding of how computers work and how the tools that you use are processing your data. This understanding translates into being able to use these tools more effectively. By knowing how they work, you can play to their strengths and avoid their weaknesses. An example of this is, if you know how computers treat different data types in memory, you can be more intentional with your geometry types in Grasshopper, to make you scripts more performant.

How to Start Programming

There are plenty of online guides about how to learn programming and I don’t want this article to be added to that list. Instead, what I hope to give in this section is some direction and suggestions based on my own experience with learning how to program on my own.

So, when I learn anything new, the most important factor I consider is context. Or rather do I connect what I already know to what 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. Unlike the math we learned in high school, which seemed abstract and disconnected from the real world, it's important 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 that you currently use. This approach makes learning active because you can apply what you learn directly to your work, fostering curiosity.

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

Python is simpler to learn than C#, but C# will give you a deeper understanding of how computer works. It will also help you get oriented with data types and building desktop applications. I would still prefer 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, pick the language that best fits with your current working condition.

Final Thoughts

Programming is an invaluable tool. But not everyone needs to know how to program – especially if you don’t have the time or the interest. It’s a significant investment in time and effort to learn the skill well. As I mentioned in my skill-tree article, it’s a core skill that enables you to do more, but you can achieve quite a lot with the existing no-code tools. But if you do decide to learn programming, it will be a lifelong skill that will serve you very well.

Thank you for reading,