Don’t learn a syntax, learn to change the way you think

Yan Cui

I help clients go faster for less using serverless technologies.

“A language that doesn’t affect the way you think about programming, is not worth knowing.”

– Alan Perlis

In my last post, I outlined the techniques to learning that I picked up from Josh Kaufman’s TEDx talk. I briefly mentioned that one should learn a new paradigm rather than a language with a slightly different syntax (e.g. C# <=> Java, ActionScript <=> Haxe) but didn’t stress nearly enough the importance of doing so.

As the mathematician Richard Hamming once said, that it’s possible for there to be thoughts that we cannot have:

“Just as there are odours that dogs can smell and we cannot, as well as sounds that dogs can hear and we cannot, so too there are wavelengths of light we cannot see and flavours we cannot taste. Why then, given our brains wired the way they are, does the remark “Perhaps there are thoughts we cannot think,” surprise you? Evolution, so far, may possibly have blocked us from being able to think in some directions; there could be unthinkable thoughts.”

– Richard Hamming

but what does this have to do with programming languages, or any languages for that matter?

What we cannot express, we cannot think

BBC went to a remote, unconnected tribe called the Himba, whose colour vocabulary is very different from us in that they only have 5 words for colour.

Image

What they found was intriguing.

The Himba is able to easily identify the square with a different shade of green in this picture:

Image

because they have different words for the two shades of green. For us, this feat is difficult because to us, they’re all green.

On the other hand, because we have two words for blue and green, it is easy for us to spot the blue square from the rest:

Image

For the Himba, who has only one word that describes both blue and green, they struggle to identify the square with a different colour.

The implication is profound, that not only do languages shape our thinking, they might prohibit it.

“The limits of my language mean the limits of my world.”

– Ludwig Wittgenstein

What if the same is true for programming languages?

“Programming languages have a devious influence: they shape our thinking habits.”

– Dijkstra

What if our creative powers are limited by the ideas that can be expressed by the programming language we use?

What if some solutions are out of our reach because they cannot be clearly expressed in those languages? How would we ever discover these unknown unknowns?

Without being aware of the outside possibilities, would we ever become aware of our unconscious incompetence?

I don’t know of any research into the impact programming paradigms have on creativity. From personal experience, my most creative solutions have come from my ventures into non-mainstream programming and database paradigms. These ventures have opened doors in my mind and allowed me to see solutions I couldn’t before.

By contrast, my other learning efforts such as Dart and Haxe has taught me a slightly different syntax for expressing the same ideas that I’m already familiar with. Whilst they can prove to be useful tools for specific tasks, they failed to have the same mind-expanding effect that is far more valuable to my long term career.

On Diversity

We can diversify our ways of thinking and approaches to problem solving by learning new programming paradigms, but that’s not the only way. In fact, some of the most notable people in the field of computer science has come from other disciplines.

For example, Alan Kay was a biologist, and it was the study of biology that inspired him to coin the term objects.

“I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages.”

– Alan Kay

(the fact that we have come to teach and think about OOP in a very different sense to what Alan Kay envisioned is another matter..)

Similarly, Joe Armstrong started out as a physicist.

And Adam Tornhill, a speaker whose work I thoroughly enjoy, has learnt much about programming from his studies in psychology.

 

We also need diversity in our communities.

There’s a famous Chinese proverb that goes like this,

“three humble shoemakers brainstorming make a great statesman.”

However, this only holds true if each of the shoemakers is able to offer a different perspective and ideas.

image

In reality, given that the shoemakers have the same profession and gender they probably have a much greater overlap in mindscape.

image

The result? The shoemakers’ numerical advantage amounts to little when it comes to finding creative solutions. Which is why, in a creative industry like ours,  we need to guard against monoculture.

Conclusion

To summarise, learning a new language within the same paradigm gives you implementation options and trade-offs for the set of approaches that is best afforded by the paradigm.

Learning a new paradigm gives you entire new approaches that you didn’t have access to before, and has a far longer-lasting benefit. Which is why, given the choice, you should learn a new paradigm rather than a new language.

dont-learn-lang-do-learn-paradigm

 

 

Links

Whenever you’re ready, here are 3 ways I can help you:

  1. Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
  2. I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
  3. Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.

4 thoughts on “Don’t learn a syntax, learn to change the way you think”

  1. Pingback: Learn to Learn | theburningmonk.com

  2. Pingback: CraftConf 15 experience report | theburningmonk.com

  3. Pingback: CraftConf 15–Takeaways from "Architecture Without an End State" | theburningmonk.com

  4. Pingback: Code or Language? – The Report

Leave a Comment

Your email address will not be published. Required fields are marked *