I admire people who can speak a bunch of different languages. That’s why I envy those who grow up in multilingual homes. But if you had asked me a year ago if I was interested in pair programming in Ruby, I would have said no. And if you think that’s contradictory to my admiration of polyglots, then you’re quite correct. But at that time, I didn’t consider programming languages to be akin to spoken ones, which I’ve come to reconsider lately.

All about that data

Spoken languages are a set of rules and tools that allow us to handle the information around us. They grant us a way to provide others with information in a way they can handle as well. But data needs to flow seamlessly through the set of rules in our mind, obtaining bits and pieces of meaning as it goes. It’s no wonder we’re only really fluent in a language when we don’t need to translate it anymore. Translation is transformation, not understanding.

I used to think that Javascript was all about handling user interaction, the kind that happens when we click on a button in a website. And when I thought like this, all the code I wrote looked like orders of the kind “when this happens, do this”. It wasn’t until I saw this magical series of videos that I realized user interaction is just information. And I wasn’t using my language of choice as a set of rules to handle that information. I was translating it into an order for the computer to follow. I wasn’t really fluent, I was still translating.

The past few months I’ve pair programmed in multiple different languages that I have no knowledge of. The list includes Ruby, Kotlin and C#. If you want to translate, not knowing the words for bossing the computer around is immediately problematic. But if we think about code as a set of rules that allow the computer to handle what we give it, then suddenly specific words stop mattering. We stop defining actions and start creating behaviours. And those transcend language, making the world a beautiful place. It also makes our code resemble a conversation in spoken language, which is a marvellous side effect of the whole thing.

We’re wired to fear what we don’t know. It’s only natural to feel rejection towards the idea of programming in a language we have no knowledge of. But if we allow ourselves to know nothing, we are in the perfect position to learn everything.

P.S: It took me about 2 hours to write this post. Now I know what people talk about when they talk about writer’s block.