Learning to Code as an Architect in 2021

Like my friend Grant says, now is always the best time to start coding. There's more and more learn to code content and ever more creative learning apps. Software engineers seem great at teaching each other and collaborating on best practices. As an architect learning to code, you get to enjoy these benefits.

My personal coding journey started in full force about three years ago. Like when we first learn to draw in an architectural way, learning to code is adopting a new way of thinking. I hope you’ll find that the architecture mind is a very good fit for this kind of problem-solving. More so, I hope that as you dive deeper, the coding mind will mix with the architecture mind. For me, insights from this mix are the most exciting thing about this learning experience.

DISCLAIMER: I AM NOT AN EXPERT I am still learning, so this is a map of my recommendations with my limited knowledge. Please double-check with a friend or colleague who has more experience.

The Map

Learning to Code as an Architect in 2021.png

Architecture gives us some special problems to play with. Starting with code or design software is not exclusive, you can do both at the same time (double the fun). My recommendation is to decide based on what you want to achieve with a small project.

Starting with Code

If you’re not natural with formulas, math, and data types or know them well, code may be the better place to start. Code starts with easy concepts and builds up from there. All programming starts with some fundamentals, like points and lines. These will haunt you later in the journey. Even though what you learn may not impact your design work in the beginning, you’ll soon find ways to blend the two.

Starting with Design

Architects are busy people, you may have to start on the software you work in because it’s all you have time for. Even if it's a steeper learning cliff, it’s easier to find small projects with big wins. Automating some of your clicking is a great place to start. With the time saved from less clicking, you'll have more time to code.

The Paths

There’s no best path for everyone. These four paths are what I “know best”. I’ve dabbled in each of them, some less than others. If you need specialist help, I’m likely not the guy, but I can point you in their direction.

JavaScript

JS is great because you can use it everywhere. Tools like codepen allow you to work in the browser and learn from the work of others. JS is well hated in the software community. There is a ton of different language-specific problems you have to deal with the deeper you go. It’s hard to argue with “any device with a browser” interoperability.

  • Why JS

    • available anywhere with a browser

    • great for data visualization

    • great for interactivity

  • Why not JS

    • confusing, code examples often in different styles and hard to decipher

    • frameworks can get out of hand

    • requires a lot of discipline to write clean code

Python

Python comes recommended as the starter language to learn. Good coding practices are a part of its DNA, and learners get readable examples. Python is versatile, packages exist for almost any task imaginable. Data analysis and machine learning workflows are often in Python. There's a plethora of domain-specific Python content across the web.

  • Why Python

    • a beginner-friendly language that's crazy powerful

    • great for data analysis

    • so much learning content!

  • Why not Python

    • versions and interpreters could be confusing

    • may have to match dev environment to each learning content

Revit

Revit is the name in BIM. If you are already using it, might as we as get more out of it. Revit is capable of some powerful things, even more so when enhanced with code. Learning about how Revit conceptualizes a building in data is a deep lesson in itself.

  • Why Revit?

    • It’s used in Architecture offices

    • There’s a lot of small tasks to automate

    • It teaches you a version of building as data

  • Why not Revit

    • You have to do everything “the Revit way”

    • Autodesk updates are somewhat unpredictable

Rhino

McNeel takes a different philosophy than Autodesk. As a result, this path is actually pretty different from the Revit one. Especially with the recent innovations in Rhino.Inside, there’s a broad world of opportunities for Rhino. Grasshopper is a fun program to play with, and personally, I like the packages better than what’s available on the Dynamo side.

  • Why Rhino?

    • It’s what everyone uses for form-making

    • Each new version brings some innovative features

    • It teaches geometric data fundamentals

  • Why not Rhino

    • You have to build a lot of structures to do “BIM”

    • Form-making is limited in its scope

Areas

No matter what path you take, there are some common areas we all pass in our journey. Like the languages or paths, there are way more beyond what’s listed here. Search and you will find more than you can consume.

Dev Environment

The development environment is the context for your code.

For JavaScript:

  • Node is the javascript runtime for the development

  • NPM is the package manager for Node (Node Package Manager)

For Python

  • The Python install comes with an interpreter

  • PIP is the package manager for Python

  • pipenv keeps your project environments clean

Scripting Notebooks

Coding notebooks are a fun way to work with code. Analyzing data and visualizing their results, or just taking notes and testing concepts, notebooks like an integrated development environment with a few extra bells and whistles. Jupyter is well established as a coding notebook, and the Jupyter/Python combination is very popular. Observable is relatively new, but it’s already amazing. It brings some new things into the mix in terms of collaboration and modularization that I’m excited to work more with.

Finding a code editor (IDE) you like

IDE stands for Integrated Development Environment. It’s basically a fancy text editor that gives you extra help when you’re coding. I use vscode, but there are great alternatives like atom, pyCharm, and many others. Test them out and see which one works for you.

Visual Programming

Visuals make intuitive sense to designers. Dynamo for Revit and Grasshopper for Rhino introduced many of us to the wonderful world of code. Scripts are quick to construct, and you can link them directly to what you are doing. Working with the data you know (what’s in your projects), helps tremendously in dealing with the data complexities of how computers understand buildings.

Custom Nodes

Visual programming will only take you so far (within GH and Dynamo anyway). We eventually run up against a wall where the solution seems easy logically but hard to implement given the tools we have. This is where custom nodes help us mix the power of code with the ease of visual scripting.

Python for Dynamo

Python for Grasshopper

C# for Dynamo

C# for Grasshopper

Visual Studio

C# will require Visual Studio. This is different from vscode (Visual Studio Code). Within Visual Studio, Visual Studio Community is free. Use that one if you are starting out.

pyRevit

pyRevit lives in a magical space. The ease of python with the power of Revit. Ehsan is a well-known contributor to the AEC community and continues to maintain the project. Gui, another big name in the AEC open source community, maintains revit-python-wrapper among other wonderful projects such as apidocs.co.

Packaged Solutions

There will come a point where you want to reuse your work, share your work with others, or package it for less technical users. Luckily the software world has already figured out most of that for us. I won’t go too deep here since I’m still very new at this, but a quick search should provide plenty of resources. Building APIs and Modules especially will be something that comes up in any language learning path.

This is not career advice

What’s covered here is only a small subset of all the awesome options available out there. Right now is definitely the best time to get into coding. I believe coding an essential skill for any architect and will become more so in the future. How we interact with our world is getting more digital and more complex, code is the language of expression in this new world. For future architects, coding will be just as natural as diagramming.

Comment below if you have any questions or suggestions!