Post

Heuri: On Naming Things

Heuri: On Naming Things

There are so many variations on the “there are only two hard problems in computer programming…” joke that I’m starting to suspect that programming isn’t actually very easy.

Nat Price

Miloslav III.

My first name is practically hereditary: I share it with my father and his father. The older I got, the more I realised how impractical that duplication was. Whenever someone called my (our?) name, more often than not I didn’t know who it referred to.

However, naming people does not have to be a complicated matter. This practice only reflects the taste of your parents, assuming you haven’t decided to visit the register office and go through the headache of renaming yourself everywhere.

Miloslav Miloslav Jebavý shares a first name with me, too! Image source: Picryl

What is much more difficult, at least for me, is naming things in software development I haven’t worked with before. In my experience as a developer, what I’ve struggled with the most wasn’t deciphering what the code did technically, but rather how it related to the business problem and domain.

Whenever you take over a codebase from previous colleagues who didn’t care much about DDD, you juggle two nomenclatures: the nomenclature used by the business—which often uses misnomers, to make matters even more interesting—and the nomenclature of the codebase. Especially when new features are added, naming new stuff under such a scenario becomes even more painful because you face a dilemma about which nomenclature to stick with.

When I started out with Heuri, I had the privilege to name things my own way. How naive I was to think that was a privilege.

Constructing Names

It is worth mentioning that constructivist pedagogy already lays out solid foundations and terminology. However, such terminology is—as one might expect—very general and technology-agnostic. So, I needed to come up with my own terminology even if I am the only person using it: the codebase has to bear names right from the start. Speaking from my experience, changing names in code is remarkably more difficult than it is to change a title somewhere in documentation or an app.

Heuri aims to show students how to create their own mathematics. Constructivist philosophy names this informal knowledge, i.e., knowledge that’s deeply embedded and activated within the student’s skillset. When a student has only formal knowledge of the Pythagorean theorem, for example, they know that it has something to do with triangles and that it’s c2 = a2 + b2. When they possess informal knowledge, they have what it takes to realise that whenever they see a right triangle and know any two of its sides, they can use the theorem.

Constructivism bases its philosophy on the notion that informal knowledge is what sticks and what’s transferable outside of class. Conversely, formal knowledge is what is useful for the exam next week but evaporates as soon as it’s not necessary. Unfortunately, that’s what many GenAI EdTech products get fundamentally and hopelessly wrong: printing out a summary or spitting out a podcast on any arbitrary topic doesn’t help students learn, it helps them delegate their thinking and understanding to a chatbot, which isn’t guaranteed to be correct unless approached exceptionally carefully, anyway.

Heuri terminology Anatomy of the learning process in Heuri. Image source: author

Cleaning Up

That’s why I came up with a rudimentary, yet promising idea: in Heuri, a student will be regularly prompted to name things, effects, and mathematical objects they encounter in their own words, without seeing formalisms first. Their description is what matters and what sticks because whenever they revisit the subject, they will see what they named it. Initially, I named these associations cognitive links, and I refer to them as such even in my previous articles. Recently, however, I realised how clunky (and pretentious, to be fair) such naming is. I needed one snappy, resonant word.

In the end, grip is the winner. I like it especially because of how versatile a word it is. I immediately associated it with a mountain climber looking for what to grab onto to climb higher. Every individual has their own preferred grips, but they all lead to the same summit. Also, you can imagine it as a trunk handle: on its own, a trunk is inconvenient to carry because you have nothing to grasp it with; with a grip, it’s much easier.

The same goes for learning mathematics: sometimes, all the terminology might seem daunting and unnecessarily overcomplicated at first, but if you have a great teacher or teaching resource, the fear usually dissolves. I remember my first time seeing the epsilon-delta limit definition and not knowing what to do with it:

limit

Once I saw a graphical representation, that became my grip; I immediately understood the concept and came to appreciate the rigorous definition in retrospect.

Grip is one of the many concepts that are present in Heuri. More about them in the next article.

Happy learning!

Music Fun Fact

Loading a fun music fact...