As I’ve stated previously, I’m a big proponent for learning to code. Coding and programming helps you think logically, it increases your productivity and it is actually quite fun. But how do you get started? Which language should you learn?
The answer depends on what you ultimately want do. Do you want to generate and manipulate geometry? Do you want to save time and automate tasks? Create web applications or apps? Or do you want to design your own stand-alone software? Each of these objectives calls for a different kind of programming and a different computer language.
Here’s a list of four common languages and their application to design and architecture:
If you’re interested in creating and manipulating forms computationally, I recommend learning Python. Python is fairly easy to learn and is well documented on the Internet. You can use Python inside both Rhino and Grasshopper. You can create your own Python nodes in Dynamo as well.
If you want to automate tasks in Revit or AutoCAD, I suggest learning VB.Net. Like Python, it’s also beginner friendly and easy to learn. VB.Net is more verbose or “wordy” than some of the other options. This results in more typing for you, however, the code is very easy to read and follow. As a bonus, you can also use VB.Net to automate Microsoft Office applications like Excel and Word. I’m a big fan of VB.Net. I write all of my Revit macros using this language.
Now if you’re thinking you’d like to create stand-alone software, I’d look into C#. It’s more powerful than the other options but somewhat more difficult to learn. C# and VB.Net are both built on Microsoft’s .NET framework so there are a lot of similarities under the hood. You can also use C# to write Revit macros and add-ins.
Ruby is a versatile language that you can use to create web applications (using Ruby on Rails) as well as stand-alone applications. In fact, you can even write SketchUp plug-ins using Ruby. Like Python, there’s a large community of Ruby users on the Internet.
Where Can I Find Help?
There are a whole bunch of online courses available. Seriously, throw a rock on the Internet and you’ll hit a code school, they are that prolific. In addition to the start-ups, major academic institutions like MIT are putting their course material online. Below is a list of some of the major players in online learning:
If you’re interested in learning how to automate Revit, I compiled a detailed list of resources.
The Learning Process
Learning to code takes time and patience. It’s like learning to speak a new language. When I started, it was really frustrating. I got error after error and I couldn’t understand what I was doing wrong. I kept at it despite making some really clunky programs. I started with tasks that really annoyed me. Could I make them easier with a little programming?
After a while, it started to get easier. The concepts started to sink in. Things that left me scratching my head months prior (like namespaces and recursion) finally started to make sense. I don’t consider myself a professional programmer by any means but I’m competent and I keep learning more every day.
Learning to code has been a really useful skill for me as an architect. I’m no longer bound by the limits of my tools out-of-the-box. I can make them work the way I need them to. Yes, it’s taken time to learn but it’s been time well spent.
How about you? Do you know how to program? If not, do you plan to start learning? How are you going to approach it?