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.
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.
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.