Tom MacWright

The silliness of claiming rejected universal values

A few days ago, I introduced a simple language with a reference compiler in Clojure. This week, there’s been a big dustup around a talk from RubyConf, in which a company switched to Clojure from Ruby, and went back.

I have little to contribute on the language side: I like both languages, and think it’s nice that at the end of the talk, Phill discusses how writing Clojure made him a better, different Rubyist. Sharing ideas is the best.

That said, there’s one framing that is all-too-common: I’d like to call it

“rejected universal values”

David Mitchell said it best, so I’ll begin with him.

See, there are certain values that pretty much everyone agrees with:

  • Government should be efficient and avoid waste
  • Programming should be simple, joyful, and productive

Notably there aren’t any politicians running on a platform of more waste. There aren’t any languages that loudly advertise their complexity and frustration. Except for brainfuck maybe.

You see, people who build things are usually trying to build good things and do a good job. But this bad style of criticism seems to imply the opposite:

  • Why would you make it this complicated?
  • They don’t care about happiness.
  • Why would they make it this hard?

Much like vague bug reports, these are a road to nowhere. They express frustration in a way that prejudges the intentions of creators, which are almost never malevolent. And they do so with such a low level of detail that they suggest no way out. The point of critique is progress: accusing others of lacking universal values gets us nowhere.