I had a contact from an old friend today asking for advice on where to start advancing his software development skills. Specifically surrounding coding languages.
This was my path so I can say that it works!
Technical BIM software user, Skilled with Rhino.
To create scripts for Grasshopper/Rhino and to increase skills around APIs.
Visual programming - This is a great place to start. Lower barrier to entry than writing code which means that you can get productive faster. In platforms like Dynamo and Grasshopper, most of the methods available to the UI is available as abstract "nodes" that you can drag onto a canvas and wire up. This piggy backs the design canvas and you can see your 3D/BIM geometry generated right there in the design space. This is pretty cool and will enable you to automate most things. This will get you far but you will likely run into bottlenecks with this process down the line. Plus there is a huge community and resources to get you started. Have a google and jump right in.
Beyond this, I think python is a really solid place to start. Both Dynamo and Grasshopper have
nodes where you can write your Python so you can start to put your skills into effect straight away. I would take a structured learning path and if you need help, don’t dwell, look to a platform called codementor.io for skilled developers looking to help (I'v spent $1,000's over the years). Join the forums of Dynamo and Grasshopper and read the Python questions and articles in your spare time.
Next piece of advice, if your like me, I learn by doing - Pick a small project (preferably one you can use in work - so that you can justify having a code environment open when managers walk by ;)) and implement it from ground zero using this as the north star for where you want to be.
Once you start getting into the realms of talking with web based APIs like Forge, you want to use a visual programming environment called
NodeRED. It takes a little learning at first to get the development environment stood up but a lot less than server side code dev environments, plus there is lots of hosted NodeRed environments coming online so this step will likely become redundant eventually. The project is open source and there are 1,000's of nodes available to talk to most systems you can imagine from the web apps that you know and use every day to IoT devices and cloud provider systems. Autodesk Forge even has NodeRED nodes available to be wired up - The world is your oyster here and you will be able to integrate your web services with your design environment if you so wish - How cool! Plus, they also have a Python node available where you can apply the Python you learned in the step before to web development.
By the time you become a Python ninja. The world will be a very different place. The AEC industries will have a wealth of APIs to integrate and your workflow automations will be only a few wired up nodes away.
I hope this helps someone out there. The main thing is to be persistent and realise that it will take years for it to become an effective skill but when it does, you will reap the benefits! ;) Enjoy the journey.