Sunday, October 21, 2007

Legacy Terminology Considered Harmful (Debugger Flame War Aftermath)

Things we lost in the flame war:

My post
Avi Bryant response
Avi Bryant Reddit comment
James Robertson responses (1, 2, 3, 4, 5)
Patrick Collison response
Rob Teitelbaum (Weekly Squeak) response
Reddit hivemind responses (1, 2, 3, 4)

Fair warning, most of it is not actually worth reading. I got a lot of angry comments from programmers who apparently use debuggers in a lot of languages. I won't waste anyone's time going into detail. I'll just skip to the interesting part: every blog response came from a Smalltalker.

Here's the dumbed-down version of the Saphir-Whorf hypothesis: names matter. Smalltalkers don't like me any more because their "debugger" isn't really a debugger, any more than emacs is really a text editor. Similarly, the most obnoxious blog comment I got wasn't just rude - it was also completely ignorant of the purpose of [T|B]DD, and still misunderstood "testing" to imply checking completed work for errors.

In either case, the problem was legacy terminology.

Calling the Smalltalk "debugger" a debugger is legacy terminology. Calling emacs a text editor is also legacy terminology. Referring to automated specification verification as "testing" is, you guessed it, legacy terminology. Industry-specific jargon is, in a vernacular sense, code. Therefore, legacy terminology is legacy code for humans.

The flame war is probably over by now, but just in case, I'm closing comments on this entry. I know this makes some readers angry, but it saves me a lot of time. Flame wars don't involve a whole lot of learning, but this, at least, is a useful thing to extract. Legacy terminology probably causes as much trouble as legacy code.