There’s no surprise that I’m big on Python, but there is something that I can’t get out of my mind:
Here’s a philosophical question: should I focus on getting better and better at Python development, or should I actually devote time to learn other languages such as Julia, R and maybe others? Which path will make me better at my job?
Should engineers should be (programming languages) polyglots?
My wife jokes that I talk too much about two heroes of mine: Cal Newport and Austin Kleon. In fact, my own style of working is an intersection of the two, which seem conflicting at first. The Newport approach should tell me to have “laser focus” on one skill, to be So Good They Can’t Ignore Me and become the best Python developer/Mechanical Engineer in the planet. The Kleon approach would be to Steal Like an Artist from all my influences and build my own work from them.
I do think it’s possible to combine these two modes of working. I am not as focused as Cal Newport and cannot drop projects and ideas serially as he claims to do – my brain simply refuses to do it. I like to explore ideas, and techniques, and programming languages too much to do that. However — while I’m exploring, I can indeed focus and dive deep into what I’m learning, and not just try to be superficial.
So yes, I think developers and engineers should build their programming languages toolbox, and avoid the “I can only do that in Python” mentality. You can’t learn every programming language in the world, but having a few in your pocket might help you solve problems (you are an engineer, right?) in a quasi-optimal way.
This way, you focus on getting increasingly better as a developer in general, and not as a Python developer:
My main point is this: the more languages you learn, the more you learn about programming in general.
What Julia can teach a Python developer
Julia is built to be fast:
In my experience, as someone who is not a computer scientist by training, and who work with people with a similar background but who still code all day, engineers tend to “hack” a Python script to do some sort of simulation or data processing, realize it takes forever to run, and then do nothing about it.
Quite frankly, I’m learning Julia because my co-workers work in Julia and I don’t want to be a bottleneck, everytime having to translate everything into Python back and forth. And in my initial explorations, I’m finding that the Julia language emphasizes vectorization, and making the code as generic as possible. Plus it is a semi-return to compiled languages (I actually learned to program in C, which sounds absurd today).
Julia also has some interesting new packages, being the “new kid in the block”: I love the workflow emphasized by DrWatson (this alone almost is a reason to try out Julia in the first place) and the “evolution of notebooks” prescribed by Pluto.
I know in the Instagram post above I referenced also the R language - we’ll leave that to another post.
You want to try out Julia too?
For a deep 4-hours long session on the “scientific computing” approach to coding in Julia, this video by George Datseris (one of the developers of DrWatson) is excelent.
For the specifics of working with Julia (tools, installing, main libraries), I recommend the free online book Julia Data Science.
Let’s discuss in the comments below what do you think Julia and Python (and R etc.)!