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:
Python
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.
VB.Net
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.
C#
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
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:
In addition to online courses, there are thousands and thousands of books available. I like anything from O’Reilly. I also find the For Dummies books to be really good when you’re starting out.
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?
Hats off to you sir, for teaching yourself to program. I have tried classes, as well as online self-paced stuff, to absolutely no avail whatsoever. I feel like some folks just aren’t born with that particular lobe of gray matter, and effectively ‘cannot’ learn programming … it just makes no sense at all. I am hoping that my middle-schooler can learn some, so she will not have this handicap.
Thanks and best of luck to you.
I want to automate tasks in Archicad, What kind of programming recommend to learn
Hello,
Thanks for your excelent article.
best regards
(sorry for my bad English)
I really enjoyed your article and especially appreciate you giving links to learning sources. When learning to code should I treat it like an additional college course and try to learn something new every week? I think the only other option is to only research how to code when a problem arises while working with software. Which do you think would make it easiest to retain the information? Which method are you using to learn to code?
Nice list Michael. You might consider adding https://edabit.com to your resources under a new JavaScript heading (although I’m adding python and java next week).
Almost everything in the “learn to code” space is geared toward only teaching basic syntax (because that’s where all the money is). Edabit goes beyond syntax and teaches its users to think like real programmers in a fun and interactive way.
Enjoy!
I feel really inspired by this article…i am a student of architecture but secretly I have always admired programming but felt I should stick to my field until I see a need to… All thanks to u sir because you just gave me every reason to become an architectural programmer( Dnt know if this is grammatically correct) …
Glad to help. Good luck on your architectural programming journey!