Learning how to program teaches you how to think logically the same way that practicing architecture teaches you how to think spatially. It teaches how to approach large problems and break them down into small manageable pieces which is a skill that any profession can benefit from.
Programming parallels architecture in the sense that simplicity is best, less is more & creativity is key.
There are many reasons one should learn to program as an architect, including:
- enhanced use of computational design programs like Grasshopper, Rhino, and Dynamo through the use of scripting
- creation of plug-ins & macros for Revit and other BIM / Modeling programs
- writing animation and other scripts for virtual reality in programs like unity
- learning data visualization in order to visually explain metrics that back up the design
I have been passively learning to program for about 2 years now and although I am still not comfortably able to do most of the items above, I am getting better with each exercise and I find that often I can translate knowledge from one program to the next.
Below is a quick look at the progression of steps I’ve taken on my journey:
Learning to use parameters (Revit, Grasshopper)
I wouldn’t really call this programming but it gave me exposure to the concept of providing the computer with instructions and seeing a malleable result. This completely revolutionized the way I work. All of a sudden I’m able to create something that’s computationally precise, specifically what the client needs, and flexible for experimentation and design. This is the power of BIM (Building Information Modeling). I still remember the first parametric model I made, a parametric louver family in Revit. I was captivated by the idea the computer would automatically update the changes based on variables I had set up in real time. I could experiment with the size of the louvers, the spacing, the quantity, the material, and the shape in a non-destructive manner, meaning I could go back and forth between options just by typing in different numbers. My mind was truly blown.
Codeacademy – HTML & CSS
I went through a few other ‘start to code’ websites but this was the most effective and it kept my attention long enough for me to finish it. Again, I wouldn’t call HTML or CSS programming but it explained the way that you talk to the computer in order to get output. For example, creating a reusable template of text styles like size, bold headings, italicized quotes that I could apply holistically to a document without having to select each one and change its properties individually anytime I wanted to make a change. Additionally, I learned about text editors and what writing code is in general.
Although the markup language was a good stepping stone to learn, I was more interested in learning about functions and variables so I could start to program inside of the modeling software. Python was recommended to me as a simple language to learn and one that worked with Rhino. I found a fantastic online course through edx.com that taught the fundamentals of the language and programming in general. By the end of the class, I was able to program simple games and tools with ease.
In addition to the beginner class, I also took a course on Python for Data Science which really opened my eyes to how the computer actually translates code into vectors and shapes. This made grasshopper much easier to comprehend.
Once I learned python it was much easier to make sense of C#. By no means am I an expert at either of them; frankly, I’m still very much a beginner, but I can confidently say that I know how to program. I began to learn C# while taking an online class about Virtual Reality Development using Unity from Udacity. I have primarily used the language to program animations in unity but am excited about learning to use c# with Grasshopper and other software.
Scripting in Grasshopper
The Designalyze blog has a quick and easy intro to C# scripting tutorial set that gave me the basics of how to write simple scripts in grasshopper. If you have exposure to programming and C# this will be a breeze; if not, it may seem a bit confusing but immediate visuals help to clearly show what the code is doing. The nice thing about scripting in grasshopper is that there is a text editor directly into the C# component so if you’re new to programming you don’t have to mess around with figuring out which text editor is best and how to run that code.
At this point, I have the basic tools and knowledge to embark on those ambitious goals I mentioned previously. It’s just a matter of starting.