Continuation of Learn to Code! PART-1 (Children)
…but that is not really the point that I was trying to make – teaching children programming is a no-brainer (I hope so!). But what about us – the professionals that are already part of active workforce? Some obvious questions come to mind:
1) Could we use a little bit of programming skills at work / in everyday life?
2) Or has that ship sailed for us because we studied “something else” and now it is “too late” to study that strange thing called programming?
The answer to #1 is – Definitely Yes! I cannot talk for any profession or industry out there but if you get your work done on a computer most likely than not you could use some programming to make your life easier and your operations more efficient! If we take architects and CAD/BIM applications (Revit, ArchiCad etc) as an example many of them expose API (Application Programming Interface) for their users to be able to write custom tools on top of the main application in order to be able to customize their work-flow in case certain tools are not available “out-of-the-box”. Lets face it – the software that we use is general purpose and has sometimes tens of thousands users. Chances are that most of these users do things a little bit different and each package won’t have every single functionality to make everyone happy. So if there is no tool available to you – then learn to code and create it yourself with API! A great use for API for example are “time-saver” automation tools (you can download some addins for Revit from here).
Again taking AEC as an example there are some tasks that require a lot of repetition and are super time consuming; everyone hates those, I know I do! Well, you shouldn’t really be doing those – machines are designed for repetition. “Assembly line” tasks will kill your brain cells! Learn how to program and next time you run into something time-consuming, repetitive and boring – invest some time into it and write a tool that will do that for you. Sure, you will have to spend some time up-front and actually write and test a script or a full blown plug-in, but in the end of the day you are going to have a tool for most of your repetitive and boring tasks. Also the time you put into creating it had been spent better than clicking same combination of buttons a hundred times.
Now, regarding the question #2 whether it is too late to learn a new thing (writing code). That is of course a personal choice. Programming is not something that would be “cool to know” – you will only succeed in becoming decent in it if you do it for a reason! I mentioned a couple of them above such as being able to eliminate repetitiveness, increase process efficiency, automate standard checking – the list can go on forever. But one thing is for sure – you need to accept that there are deficiencies in your process and you need to write custom code to solve it. Then the learning process will get easier. Don’t get me wrong – programming is not for everyone but I think if you have a good sense of logic and solid problem-solving skills then it is never to late to start learning coding.
Finally a few things need to be said about learning resources – the truth is that you don’t necessarily need to go to school and pay tuition to teach yourself how to write code. Nowadays all the information you need is online. First of all – Google is you best friend here. It is very unlikely that you will run into a truly unique problem – most of the times many people have already ran into it as well, posted it online and the solution is just one Google search query away. Also there are several online learning platforms where you can take tech classes from the most prestigious universities absolutely free of charge! Check out Coursera and Udacity – there are plenty of programming classes out there that you can enroll into. If you are in AEC and looking to extend Revit – IronPython Shell is a good efficient alternative to writing Revit API addins. In any case there are quite a few great resources on Revit API out there such as Jeremy Tammik’s blog and Spidernet (I use both of them a lot!).