Learning a new programming language is hard. But learning about learning a new language probably makes it easier.
I’m going to admit that my coder upbringing was a little bit unusual, perhaps because of timing. It might also have something to do with the fact that when I was an undergraduate, I was doing units in engineering, maths, physics, computer science, and software engineering all at once and I had a strong idea that I would never be employed as a programmer.
I was probably first aware that I was actually programming when I was taught Logo in primary school, as part of an academic extension program, playing with graphics and Lego robots. But I started programming well before that, when I realised that I could access and read files from the DOS prompt of my home PC in the early 90s. The language, QBASIC, was intuitive and by cutting and pasting, and creating a few files riddled with GOTO statements, I built a graphic adventure game with sound effects and a randomised, seizure-inducing, flashing screen of death. And no one besides me ever played it.
When I started university, I learned Java, not nearly enough C, Prolog, this one, and what would become my staple diet: Matlab. And the commercial version of the language, not even Octave. I’ve since learnt enough Brahms to do some sort of agent-based modelling, and I might have toyed with R but I’ve never used it for anything other than a quick hack to avoid problems in other languages. I’m a fish out of water with real programmers, and physicists would probably laugh at me if they read this list.
To make up for it, here’s a picture from Gephi:
As I approach 30 revolutions of the sun, I struggle to even name the new generation of languages and their lineages (Who is this Ruby? And why is she on some sort of train with Pearl, speaking with a Lisp and making Smalltalk?). I worry about how quickly I can learn them or re-learn them if and when it might be required. Given that I can barely navigate my way around a terminal, how can I expect to go completely open source and learn Python (yes, I’ve never learned Python and I do numerical computation work) and the new language, Julia*?
So what’s the solution? Simple. Learn a new language every year. That way, one can develop the skills and probably develop the hard-wiring required to learn the next one faster and more easily. It’s win-win. And what’s the best way to learn any new language? Jump in at the deep end and immerse yourself in the language and the people who speak it.
And why? Well, I’ve decided it’s time to move on from my current network visualisation software and include Gephi in the repertoire. And while it’s plenty easy enough to just build the required inputs and do the proper network science using Matlab, a proficient user probably needs to know Python in order to be a useful Gephiite visualisationiser.
If you’re reading this and you are not a coder, then you could probably read the post over and simply replace each of these programming languages with French, Mandarin, Malaysian, Portuguese, German and Arabic. And instead of trying out new software, you could imagine I’m travelling to the coolest place on the planet.** The premise is the same.
* Not yet, Julia. Not yet.
** I’m yet to decide if all the cool people are using Gephi and Python but they probably are.