« A Type Driven Approach to Functional Design | Main | Scalars as Implicit Collections - Removing an Edge »

February 25, 2013



This is an interesting framework for thinking about interaction with people, but surely there is *some* objective meaning, or at least a meaning that a disinterested third party confirms.

A C# compiler, for instance, doesn't really care what meaning I assign in my mind to a word like 'using', it will only interpret that keyword in a certain way. So, in relation to me and anyone who writes code in C#, a C# compiler represents an objective meaning.

Michael Feathers

mgroves: I've always considered the word 'meaning' problematic because we tend to hype it up. For the C# compiler, another way of putting it would be "when I use 'using' this happens." To me, meaning implies intentionality that may not be there. Think of language quirks. Surely no one "meant that", yet there it is.. it happens.

Jason Young

You are a unicorn. I am right, because to me, a unicorn is a Michael Feathers. My definition is as good as yours, so don't tell me I'm wrong, unless your wrong is my right, in which case I'll accept your different, equally good opinion on truth and reality.

Seriously, I don't think you said what you really meant. There is some objectivity to meaning, even to definitions, even though definitions are agreed-upon: It is _true_ that a majority of developers agree that the C# compiler is a compiler, and is not an interpreter, for example (unless there's some subtlety here I don't know about just to ruin my example). Certain words have been defined by people, and we can objectively look those definitions up, and objectively determine what a majority agree on regarding definitions.

What is tricky is that some may have encountered different information from others, or may remember things differently from others, or have thought through things differently from others--all so that some arrive at a different conclusion regarding a meaning than others. But that does not mean definitions are subjective or a matter of opinion.

Michael Feathers

Jason Young: I think you are mixing two things - statements and interpretations of intention and valuation (a.k.a. 'meanings'). Notice that you didn't say "Michael Feathers means unicorn."

Re your last example, I think that it means precisely that (or at least it does to me :-) ). When you talk about 'su' you get to decide what you mean, and it does not have to be the 'received' meaning.


Jason: I think your definition of objective meaning boils down to 'what a majority agrees on', and I think there's some truth in there, but I don't think meaning is purely democratic. There's an emergent component too.

For instance, a century ago, the default meaning of 'gay' is much different than it is now. We could poll every 10 years from 1900 to 2000 to see what the majority thinks, but something affected that shift. What if I decided today that 'gay' also means 'a shade of orange'? A majority would not agree with me, but in 100 years they might.

Michael Feathers

mgrove: Good point. At the risk of getting more controversial, I think that it is odd when we take particular symbols, decide that what was meant by them in the past is what they must forever mean, and then ban them or ostracize people for using them. Maybe the better course is to attach better meanings to them, drowning out the old meaning. It's doable.

John Lockwood

My two cents is that just as Michael defined legacy code as code not under unit test -- itself a bit of a meaning sleight of hand even though I agree with it -- I'd be inclined to assign words that don't have an agreed upon meaning at a given point in time to either of the following realms: controversial, perhaps politically ("marriage" as defined by the left and the right), nonsense ("Michael Feathers is a unicorn"), or theological or metaphysical mumbo-jumbo.

Words mean things. If we can't agree on what at a given point in time, either we're being sloppy (perhaps equivocating on two well known meanings), we disagree about what something SHOULD mean, or using words in a non-standard way to pull the wool over someone else's eyes (religious uses of language are famous for this).

Ian Rae

The meaning of 'su' is what happens on the computer on which it is executed. On my Windows machine the meaning is: 'su' is not recognized as an internal or external command.

Meaning is slightly different than purpose. For words the two are very entangled because a word has no other purpose than having a meaning. Computer commands are different. Whatever meaning you attach to rm -r, the computer has its own. Guess who wins!

Jason Young

@mgroves, I agree that definitions are not purely democratic; when available, original definitions, or definitions given by authoritative sources (e.g. dictionaries), are at least favored over common usage, if not used exclusively to define words. Also, individuals generally try to understand meaning as it is meant or understood by others so that all are on the same page and communication is possible. OTOH, I understand that dictionary writers try to look at example usage as well as past dictionary definitions to modify their own definitions, further helping everyone stay on the same page. Usefulness seems to drive evolution of meaning all the while. But I better stop talking because I'm rambling about something I'm not an expert on. :)

(Good comments by all, btw.)

Jorge Aranda

Jason, all: if you want to read from people that are experts about this, I'd recommend to start with Berger and Luckmann's "The Social Construction of Reality". Meaning (and therefore knowledge) emerges from experience and from socialization and institutionalization processes. That book was an eye opener for me.


Hi Michael,

Great you've challenged the implicit assumption behind the article !

I think DDD's Bounded Contect can be use very effectively here :
A context is "the setting in which a word or statement appears that determine its meaning".
A context can be a team, a company, a department, a particular software.

While very simple it's a very powerful tool to distinguish the different context where the same word but with different meanings will be used.
Just think about the "Customer" word that has completely different meaning and concerns about whether you're in a marketing, accounting, logistics company's department.
All the strategic design patterns from the DDD's book are also of great use to analyse the interactions between different contexts.

The comments to this entry are closed.