Learning Dynamo can be a challenging experience, but there are some common mistakes which often contribute towards this. These 10 mistakes have, can and will detriment the learning journey of many new Dynamo users and should be avoided wherever possible.
I remember when I first began learning Dynamo, my first few steps into programming were both exciting and intimidating! During my learning journey, I made a few mistakes that probably made the process a lot harder than it needed to be, and I've seen many other mistakes hinder the learning of other users. By sharing these, I hope to raise mindfulness of them and help other new users' journeys into Dynamo that little bit smoother.
Mistake 1: Skipping the Fundamentals
Of all the mistakes I'll list, this is by the far the most common reason I see people both struggle and give up with learning any new program. Most people find a need for programming because they have a complex problem they need to apply it towards solving, but that doesn't mean this is where the learning should begin.
The Dynamo Primer is the perfect place to begin learning.
Such fundamentals of Dynamo that should be learnt first are:
Data flow and computational logic
Data/object types and conversion methods
List management and levels/lacing
Warnings, errors and what they mean
Master these first, and I guarantee you the rest will fall into place much more easily.
Mistake 2: Copying nodes vs. Managing lists
I see a lot of scripts shared to social media (mainly LinkedIn) that from afar look impressive; hundreds of nodes and a myriad of spaghetti holding it all together. However, if you take the time to look at these script layouts you'll often spot sections of code which have been copied and pasted many times - this is a sign of bad (or no) list management.
An example of repeated, parallel sections of code in a script. Whilst it may sometimes be necessary, more often than not well managed lists may suit better.
The beauty of lists (and sub-lists) is that they allow us to store our data together. This allows us to process pieces of that list in parallel rather than copy segments of code multiple times, and split our lists apart. Whilst copying and pasting code can achieve the same outcomes as well managed lists, it is highly inefficient and will usually become someone's problem later when it inevitably has to be debugged.
Mistake 3: Rushing
We live in a fast-paced world, but that does not mean beginners should conduct their learning at a matching pace. New users often rush their learning from the very start which leads to all of the other mistakes occurring - scripts weren't built in a day!
It's a marathon, not a sprint!
As well as avoiding rushing, never expect other people to 'fast-track' your learning journey for you. I have received countless requests that I mentor beginners (for free) so that they can learn Dynamo 'as quickly as possible'. Remember that your learning journey is ultimately your responsibility, as is its quality.
If you do not have the time to effectively learn Dynamo, then you likely won't have the time to effectively use it.
Mistake 4: Not learning to debug
When you encounter a Dynamo warning or error, your first response must not be to go to someone else to explain or solve it for you - the program is trying to tell you something! Debugging (checking for potential errors) is a critical part of learning to program and will unfortunately be what you spend most of your time doing in Dynamo as well.
Take the time to learn what the errors are trying to tell you.
You may just find your solution by doing so!
Unless I see considerable evidence that a new user has attempted to interpret and address a warning they present to me, I will simply explain to them that they must learn the hard way. There are many resources and forum posts that have probably already solved each warning before, or at the very least explained what the program is trying to tell you.
Mistake 5: Only using 'follow me' tutorials
Whenever someone asks me what the most important aspect of learning Dynamo is, I reply with a single word - context. There is no better motivator to drive learning than a personally relevant problem, and whilst 'follow me' video tutorials can be valuable, they lack such context.
Whilst I produce 'follow me' videos, there are other effective ways to learn too.
When I began learning Dynamo, I found my own challenge I needed to solve; numbering all doors in a building by room/direction. Here and there I used 'follow me' videos to guide these steps, but ultimately I built a script that was my own. When I finally got this script to work after 1 month of steep learning difficulty, I was provided with a satisfying moment of personal triumph.
Mistake 6: Solving unique problems only
Probably the most time saving script I've ever built is actually quite simple - it just adds and sets the values of some shared parameters in Revit families. The reason why this has been such a useful script is I could run it in any family file - it's flexibility means I haven't had to adjust it very much over the years.
Unique objects are not necessarily useful!
Whilst you may sometimes tackle 'one-off' challenges using Dynamo (usually in relation to geometry), these are not always good exercises by which to learn to become a flexible programmer. I always encourage learners to develop scripts which they can make use of in multiple scenarios as this will help them become stronger thought leaders in their companies - working for the collective vs the individual.
Mistake 7: Learning alone
Take it from me - don't learn on your own. My journey would have been so much easier if I'd taken it with at least one other colleague. At the time of my learning it, Dynamo was only really just becoming popular so it was hard to find people interested that I knew, but luckily for upcoming beginners these days it is a highly sought after skill by many AEC firms.
Many hands make light work.
When you learn with a collective, your knowledge growth becomes collective also. Whilst you might explore list management, maybe your friend can explore data types - then at the end of the week you can meet and trade your insights. Learning with others can both compound as well as reinforce what is learnt and it offers a great means of motivation to continue the learning journey (via both encouragement and competition).
Mistake 8: Using too many custom packages
Dynamo has a wide range of custom packages available for both new and seasoned users, whether it be Clockwork, Data Shapes, Rhythm, Genius Loci - the list goes on. Whilst the nodes in these packages typically aim to make you a more efficient user, they do not typically teach you about how to use Dynamo - if anything they mainly introduce you to the challenge of version management!
More than 1000 ways to distract your learning.
The nodes that come with Dynamo out of the box are more than capable of achieving workflows suited to a beginner, and should be explored as deeply as possible before custom packages are introduced to provide 'shortcuts' or enable more advanced workflows. By restricting custom package use, the learning journey becomes more about exploring what Dynamo offers and less about taking shortcuts without an understanding of the advanced techniques implemented by these packages to achieve them.
Mistake 9: Using an old build of Dynamo
Let's quickly clarify the correct versions of Dynamo to use by version:
Earlier: Consider upgrading!
Revit 2016: 1.3.2
Revit 2017: 2.0.3
Revit 2018: 2.0.3
Revit 2019: 2.0.3
Revit 2020: With Revit build (currently 2.3)
Revit 2021: With Revit build (currently 2.5)
You should always learn Dynamo using the highest relevant build of Revit/Dynamo to your needs. The program is constantly being updated, so old builds of Dynamo become unsupported fairly quickly (especially if before version 2). Custom packages are also typically more error prone in older builds as most package managers focus their efforts on the newest builds - don't get left behind.
If you attempt to learn using an outdated build of Dynamo, expect to encounter frustration.
Mistake 10: Focusing on preview geometry
Whilst Dynamo is capable of generating and processing geometry, it is not a particularly strong aspect vs. alternatives like Grasshopper for Rhino3d. Dynamo is best used when dealing with data and Revit elements themselves, so focusing your learning towards these is usually best as well.
It looks neat, but what do you learn from it?
I see many learning courses out there using geometric examples which implement advanced mathematical concepts such as sine/cosine waves which typically bear little relevance to what most people actually use Dynamo for in the real world. Having said that, one benefit of learning with geometry is that users can 'see' the impact of their changes, but will ultimately have to relearn Dynamo once they need to use it for non-geometric purposes.
I always encourage users seeking geometry processing and advanced associated workflows (like generative design and solvers) to explore Grasshopper and Rhino Inside instead.
Conclusion: Always be aware
Everyone's learning journey is unique, however these mistakes are more often than not distracting or derailing the average users' learning journeys. I hope this help new users learn and master the wonderful tool that is Dynamo, as well as be aware of its various learning pitfalls.
- Gavin Crump @BIM Guru