Published on

The ambiguity of nouns: absolutisms, transformations and nominalisations

Authors
Attention!

This tale assumes you've read Time, angle and depth: dimensions in software design - we're going to lean heavily on the idea that "absolute" concepts like User or Product are a composition of multiple perspectives, at a certain point in time.

Going out to find some nouns

You might recall Derek and Diego from The ambiguity of naming - two developers working for a company selling local, guided tours.

Multi-city tours shipped. Customers were happy. Paul, their product owner, was happy too, for a while.

Then the Tour class started growing. And growing. Pricing rules bumped into scheduling rules, which bumped into navigation state, which bumped into guide availability.

Sounds familiar? (if it doesn't, dear Reader, go check what happened to poor Tom's tourism platform)

Now senior enough to know better, Diego had enough.

Discussion
Diego, Senior Developer: We keep adding fields and methods to Tour and calling it "modeling the domain". I want to actually go and find out what a tour is, from the people who run them.
Derek, Senior Developer: Fine by me. Let's go talk to the guides, do the collaborative modelling with back-office people, maybe shadow a booking or two.

So they did. Out into the wild.

Everyone hands a noun

Guides talked about "the tour".

Back-office people talked about "tour seats" and "the schedule of a tour".

Marketing talked about "tours catalogue".

Participants talked about "my tour's itinerary" and "my tour booking".

Derek was taking notes furiously, circling anything that sounded like a concept.

Discussion
Derek, Senior Developer: Ok, I've got it. Everyone keeps saying "tour". That's clearly the thing. Name, description, price, seats, guide, status - we put it all there and we're done.
Diego, Senior Developer: That's... exactly what we did last time.

Why does this keep happening, even to senior people who (hopefully) know it's a trap?

A noun the brain grabs first

Daniel Kahneman described two ways our brain operates (it's a reductionistic perspective, but as with all models - still it's useful).

System 1 and System 2

System 1: fast, automatic, cheap, effort-optimizing - it recognizes patterns instantly.

System 2: slow, deliberate, expensive, effortful - it checks, verifies and reasons.

When you're standing in a guide's office and someone says "the tour", System 1 does what it's best at - it matches the sound "tour" to a ready-made mental box and hands it to you, instantly, no assembly required.

It basically boils down to "what I see/there, there it is".

Asking questions requires effort, answering them requires even more of it too.

And effort is exactly what System 1 is built to avoid.

Conclusion 🔍

We don't pick the currently fitting noun.

We pick the cheapest one.

That's the urge to "find things" out in the wild - we go looking, we collect words, and the loudest, earliest, most concrete-sounding word wins the naming contest, well before we've asked what it actually represents.

Whatever we find "out there" still needs the software dimensions applied to it - time, angle (perspective) and depth aren't optional decoration, they're what turns a word into a model.

Slow down, on purpose

Diego wasn't satisfied.

Discussion
Diego, Senior Developer: Let's slow down before we write a single line of code. When does someone even say "tour"?
Derek, Senior Developer: Ha. Funny, that's literally what Kahneman calls thinking slow.
Diego, Senior Developer: Coincidence. Or not. Anyway - focus.

That's the switch from System 1 to System 2 - and it's exactly what analysis is for: taking something whole and decomposing it into its elements, so it can actually be understood, before it gets put back together.

They went through all of the material, one by one:

  • Someone browsing options, before ever paying anything - marketing wants this searchable, filterable, fast.
  • Someone picking a date and a headcount, holding a spot, paying for it.
  • Back-office people checking how many spots are left, right now.
  • A participant, mid-tour, checking what happens next and where.

Different moments in time.

Different perspectives.

Different needs.

It all requires an aware, trained mind to notice all of that.

And it's effort requiring.

It consumes time.

Eventually, four concepts emerged in the field of operator awareness: Catalogue, Reservation, Seats, Itinerary.

Derek looked relieved.

Discussion
Derek, Senior Developer: Great, four concepts instead of one. Progress!
Diego, Senior Developer: Slow down. We just did the analysis part. We haven't understood any of them yet.

Are all nouns equal?

Here's the ambiguity, dear Reader - grammatically, all four words are nouns. Same part of speech, same shape, same "box with fields" instinct that System 1 wants to apply to every single one of them.

But are they the same kind of thing?

In Modeling Maturity Levels, we already established a small, useful correspondence:

Conclusion 🔍

Being level corresponds to nouns.

Behaving level corresponds to verbs.

Becoming level corrensponds to adjective-noun collocations.

So, naively, a noun should mean "Being" - what something has, what it is.

A verb should mean "Behaving" or more deeply "Becoming" - what something does, what it turns into.

Except language cheats.

Verbs in a noun's clothing

It might be that not every noun is equal.

Even if we use our analytical skills and correctly segregate an absolute noun into a set of contextual ones, still we might fail with designing a model around those concepts.

In linguistics and cognitive sciences, there's an interesting concept behind a phenomenon called nominalisation.

a nominalisation

A nominalisation is a noun formed out of a verb (or an adjective)

A verb gets frozen, packaged and handed to you as "a thing".

to reserve becomes a reservation.

to decide becomes a decision.

to arrive becomes an arrival.

So instead of "looking at the motion", our focus gets placed on "the thing that results from the motion".

Reservation is exactly that - underneath its noun-shaped costume hides a verb, a whole sequence of them: request a spot, hold the seats, wait for payment, confirm, or expire, or get cancelled.

type Reservation =
    | { status: "Requested"; participants: ParticipantCount }
    | { status: "SeatsHeld"; holdExpiresAt: Date }
    | { status: "AwaitingPayment"; amountDue: Money }
    | { status: "Confirmed"; confirmedAt: Date }
    | { status: "Expired" }
    | { status: "Cancelled"; reason: CancellationReason }

On the surface it might be seen (and then understood) as a noun, yet again as an absolute "thing".

So even though we successfully identified a particular aspect that "a Tour" might be looked at, we might fall into the trap again.

This is a "Becoming" level, wearing "Being" clothes - a state machine, disguised as a data bag.

It might be that we are dealing with a business workflow - going through various states, integrates a bunch of other concepts in order to deliver value, based on the needs of the consumer.

So something that "flows" rather than "is".

Model it as a flat class with a status: string field, and you've thrown away exactly the information that matters - which transitions are even legal, and when.

Seats, on the other hand, isn't hiding anything - it might be regarded as a countable resource with an invariant (you can't hold more than what's available) that must be protected, consistently (if you are looking into the challenge for designing a solution for such a problem dear Reader, please feel free to explore this blogpost).

class Seats {
    constructor(private readonly total: number, private held: number) {}

    canHold(count: number): boolean {
        return this.held + count <= this.total;
    }

    hold(count: number): void {
        if (!this.canHold(count)) {
            throw new Error("Not enough seats available");
        }
        this.held += count;
    }
}

And yet again, we might undersee important and subtle details, if we treat it as an absolute "thing".

It truly requires a disciplined, mindful and skilled approach so that we continously challenge designer's (which mean, ours) assumptions so that we verify we are designing a model, not the model.

Catalogue is yet another substance entirely - a perspective, composed for a completely different moment in time (browsing, before any commitment exists), for a completely different audience and needs (a curious visitor, not yet a paying participant).

Denormalized, read-heavy, low on rules.

Naive conceptual check?

Analysis had done its job - it segregated Tour.

It would be good to have some heuristics so that we can "shake" the model candidate, to see if any hidden workflows reveal themselves through our perception.

Diego had a shortcut for exactly that.

Discussion
Diego, Senior Developer: Here's a cheap trick I run before committing to a whole modeling session. Take a noun, add "-ing" to it. Does it read as something happening, an activity?
Derek, Senior Developer: Sounds silly. Give me one.
Diego, Senior Developer: User becomes "User-ing". Doesn't fit, right? Product becomes "Product-ing". Doesn't fit either. But Tour becomes "Tour-ing" - and that one does.
Derek, Senior Developer: Huh. And if it fits?
Diego, Senior Developer: Then there's probably a workflow hiding in there, and I go looking for it, instead of reaching for a class.

The mental tool is fairly simple - try adding "-ing" to a noun and see if it reads as an ongoing activity.

If not, you might want to go to deeper levels and try to check "what is hidden" behind this "absolute" thing.

There might be something hidden, which is more workflow-based, around.

Another approach of the same kind is to prefix an absolute noun with "ongoing" - "ongoing User", "ongoing Product", "ongoing Tour".

The main idea is to "see it in motion", not "laying down on the shelf".

We, designers, want to interact with the concept to see how does it behaves.

Imagine that heroes of our tiny tale ran it against Catalogue next - "Cataloguing" fits too.

Discussion
Derek, Senior Developer: Wait, so Catalogue is a workflow too, now?
Diego, Senior Developer: Not the one we're looking at, no. "Cataloguing" is real, but it's someone else's workflow - whoever curates and publishes the thing we browse. The challenge to the concept just told us a workflow exists somewhere nearby. It didn't tell us which noun it belongs to. That part's still on us.

This is the whole point of these "tricks", dear Reader - they are not a golden hammer.

Say a word to a noun, watch it wobble (or not), and decide what to do with what you just "saw" - what information it reveals.

Hammer blindly - "if '-ing' fits, it's a workflow, full stop" - and it might hurt you, dear Reader.

Conclusion 🔍

The power isn't in the "-ing". It's in interacting with a concept, inducing a small change, and paying attention to what comes back.

What about Itinerary?

Derek wasn't ready to let this go.

Discussion
Derek, Senior Developer: Ok, "reservation" hides "to reserve". What does "itinerary" hide? "To itinerary"? That's not even a verb.
Diego, Senior Developer: Ha, good catch. It doesn't come from a verb at all - it's just Latin for "of a journey".
Derek, Senior Developer: So it's a "Being" noun then? Just an ordered list of stops?
Diego, Senior Developer: Once it's confirmed - sure, it's a plan, a value to be read while the guide is walking people around. But it came from somewhere. Someone, or something, sequenced those stops, checked opening hours, checked the guide's route. That's a workflow too - we just don't have a tidy nominalisation for it in English.

That's the twist, dear Reader - checking whether a noun is a nominalisation isn't a spelling exercise, it's not about etymology at all.

The question is never "does this word grammatically descend from a verb?" - it's:

Question 🤔

Is there a hidden verb - a process, a sequence of steps, a set of legal transitions - underneath this noun, regardless of how it happens to be spelled?

Itinerary-the-plan is a "Being" noun.

"Itinerary planning" is a "Becoming" process.

Language just doesn't give us a single clean word for the second one, so we default to naming the output / the result, and quietly forget the workflow that produced it ever existed.

Analysis, then synthesis

Decomposing Tour into those four was the analysis - taking the whole apart into elements we could actually reason about, one perspective and one moment in time, at a time.

But analysis alone isn't design. Diego and Derek still needed to put it back together, with the understanding they just gained - synthesis.

Reservation, once confirmed, is what makes Seats.hold(...) lasting forever, and eventually what causes an Itinerary to be produced for that specific booking. Catalogue doesn't participate in any of this - it just gets refreshed, later, from whatever changed.

None of the four nouns disappeared.

There's no single Tour class anywhere holding them together - there's a TourId, threading through all four, at runtime (you might recognize this from where is "Tour" entity?).

Conclusion 🔍

Analysis decomposes, synthesis recomposes - but only when the effort was put in building the understanding.

The ambiguity of nouns

We can't design, or even talk, without nouns - they're how we carve "the wild", the undifferentiated reality out there, into things we can point at and reason about.

Not every noun refers to the same kind of thing, though - some are resources, some are views, some are plans, and some are verbs that learned to dress up as nouns to sneak past our attention.

System 1 can't tell them apart - they're grammatically identical, so it treats them identically, reaching for whichever one was loudest, earliest, or easiest - the one requiring the least effort to accept.

System 2 is what asks the second question - not "what is this called?" but "what does it hide?".

We've seen how a single concept ("a Tour") go transformed into a set of interacting concepts - seats availability, reservations, itineraries, and catalogues.

Each of newly organized terms could be further transformed - either "going up" (generalizing) or going down (specializing), when it comes to a business area.

But it all takes the effort, especially when a designer (an LLM operator) is not trained enough.

If we don't put enough attention and skills, we are going to base on "the reflexes" - which naturally tend to seeing whatever we already know.

Nouns are not inherently evil - it is always an operator's "fault" (ekhm, or responsibility).

Watch for absolute-sounding ones, dear Reader.

Slice them using time, perspectives, and then look for the depth.

So next time, dear Reader, when the world presents you a bunch of "things", slow down and ask yourself:

Question 🤔

What absolutism am I looking at?

What perspectives are hidden from my sight?

Where is the time component hidden in this absolutism?