lisa-marie mueller

lisa-marie mueller

bullet pont

steps to learn to code [for architects & designers] part 1 link

August 19, 2019

Since as architects and designers we have already spent many years at university or in architectural practice (or both), it is unlikely that we want to go earn a computer science degree. We need solutions that are flexible and can be implemented while continuing our career growth. The good news is that there are countless resources and the number of self-taught professionals has long been on the rise [1].

As I discussed in my series exploring Dynamo (Part 1 and Part 2) and custom Plug-Ins (Part 3 and Part 4), coding is a life skill. It can apply to many different areas of your life and work. Here are a few examples of some of the things you can do:

  • Search through or find-and-replace text in multiple word documents even within multiple levels of folders using Powershell (handy for specs)
  • Quickly mass download all resources after a conference
  • Explore the power of VBA in Microsoft Office
  • Create your custom website

Desk with computer, mouse, and books After I began scripting in Grasshopper in 2013, I realized that I loved it. At one of the internships I had while in university in 2016, I worked for a larger architecture firm that had a well established digital practice. While working with the urban design group, I was able to utilize and further develop my skills in Grasshopper for the projects they were working on. One week, I was faced with a problem that Grasshopper nodes couldn’t solve very smoothly and I decided to jump into Python. Soon after, I began looking at resources to continue to learn to code. I consider myself an amateur coder. I love coding to assist with repetitive tasks in my professional life, but I’m not writing software every day or even every week. I also recognize that there are so many areas that I can still grow and learn. I actively pursue becoming a better programmer. There are a few items to consider as you begin or continue your journey of learning to code.

establish your goals

I’m a huge fan of setting goals when you want to start something new. Based on conversations with other industry professionals, I have most frequently come across the following interests in programming:

  • Create custom nodes for Dynamo or Grasshopper graphs
  • Create new tools using resources like PyRevit
  • Research new technologies and dive into AI
  • Develop custom plug-ins
  • Become a software engineer

choosing a language

One aspect that I appreciate about learning to code is that once you grasp the overarching concepts, you can apply it to any language. There are many different paths you can take and many resources I love (and I’m sure just as many I haven’t yet discovered). The two most common languages used in our industry are Python and C#.

python

Main uses for our industry: custom nodes in Grasshopper and Dynamo, diving into AI, creating tools in resources like PyRevit. If you want to get into the weeds, the language you are using in Grasshopper and Dynamo is a version of IronPython 2.7 which basically is the same as Python but does have some limitations. (Caution, it does not support dictionaries or other Python 3.x features). The exact version of IronPython depends on your version of Dynamo. The Dynamo forum has lots of great discussions on the topic.

c#

Main uses for our industry: writing custom plug-ins, creating interactive environments in Unity, developing programs. C# is the standard used in many industries and is feature-rich. You won’t run into the same limitations as you will with Iron Python in Dynamo and Grasshopper.

Which language to start with depends on your goals, so once you’ve identified those, you can better outline your path. Evaluate the tools you are using now and where you want to progress to. As I mentioned, once you have learned one language, transitioning to another is easier as many concepts carry over. Check back next week for more informaton about where to look and how to get started. I will also discuss resources that allow you to learn to code while maintaining your current responsibilities.

[1] The Rise of the Self-Taught Programmer by Cory Althoff