Technology

Principle of Genius: Thinking of Words vs. Thinking of Concepts

I once read about an interesting and invented word – “obsolete”.

Obsolete means “obsolete knowledge”. I mean, information that USED to be true… But due to our rapidly changing world, it’s no longer true. And when we don’t realize that, then we have problems: making decisions based on assumptions that WERE valid once, but NOW aren’t.

Now, obsolete is an interesting word. But it is even more interesting when we look at the “meta” level.

Because once upon a time, that word didn’t exist. Someone coined it, because it’s a useful idea.

I once wrote about “deprecation” in my email newsletter and received this annoying email from a user who unsubscribed:

“When I saw ‘confirm your subscription to learn the secret word’ I was worried that this site was fake. I checked and found that they seemed trustworthy so I decided to continue. I found that the ‘word’ was ‘Obsoledge’ (not a word) It was pretty disappointing.”

This expresses a vision of reality:

That the words in a language are already defined. That new words are rarely, if ever, added to a language.

Someone can have a successful life with that way of thinking. Works. More than 90% of all human beings think this way in their daily lives.

However, I have noticed that some of the best programmers have a different mental model:

“Words are labels for concepts. New concepts can be created. And we can create new words for our mind to handle better.”

Which is more “correct”?

Who knows. A much better question:

“Which way of thinking is more USEFUL?”

Well, that depends on the context of the person’s life: what is their career and what are they doing.

But for those of us who code for a living, whether you’re a data scientist or a web developer or something else…

The “words are labels” framework is MUCH more powerful.

What are some “made up” words in Python?

From the reserved keywords alone, we have await, def, elif, nonlocal, lambda.

What about invented CONCEPTS? For example, when I train people on a “deep dive” to truly understand Python generators, I make a big deal out of the distinction between “generator functions” and “generator objects”. I do this for several hugely important reasons. But the important point here is that there are two labels for two related but distinct concepts:

  1. generator function
  2. generator object

No other language has something exactly like a Python “generator function”, nor exactly like a Python “generator object”. So we give them these novel names. LABELS. Which allows you to drive the concept in your mind, while reasoning about them in your code.

(These tags are sentences, not single words… but I hope it’s clear that doesn’t matter at all.)

While you think about all this… one question you should ask yourself:

How have you “invented” words for concepts while writing code or while LEARNING to write code?

And: how has doing that benefited you?

Leave a Reply

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