Learn to Code with These Resources

automation programming Mar 27, 2015

As I've stated previously, I'm a big proponent of learning to code. Coding and programming help 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 to 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, consider 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.

 

C#

Now if you’re thinking you’d like to create Revit add-ins 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.

 

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:


ArchSmarter

Code.org
Code Academy
Code School
Udacity
Udemy


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?

Join ArchSmarter!

Sign up for ArchSmarter updates and get access to the ArchSmarter Toolbox, a collection of time-saving Revit macros, Dynamo scripts, and other resources. Plus you'll get weekly productivity tips, webinar invitations and more! Don't worry, your information will not be shared.

We hate SPAM. We will never sell your information, for any reason.