What does “simple” mean when applied to our artifacts?
I had a thought at the Simple Design and Test conference.
“Simple” is an adjective, but there are different kinds of adjectives. For example, one might point at a can and say that the adjective “blue” applies to it. That use of the adjective is objectively true, at least in Richard Rorty’s sense: we use the adjective “objective” to describe those statements it’s pretty easy to get people to agree about. The harder it is to get people to agree, the more subjective the statement.
However, suppose the can contains iced coffee. I claim that the adjective “tasty” does not apply, but other people would disagree. Here’s an adjective that quite clearly depends not just on the object it labels but also on the person doing the labeling.
Finally, consider a bed labeled “comfortable”. To be more specific, suppose it’s a waterbed. A waterbed might be extremely comfortable for sleeping, but someone I trust tells me it wouldn’t be comfortable when making love, and I’m quite sure that no waterbed would be a comfortable platform for doing deadlifts. Here we have a case where the suitability of the adjective is bound up with both the person applying it and the activity they’re thinking about.
I claim that “simple”, when it comes to “design and test”, is most like the third category. In a way, when we say “that’s a simple design”, what we should be saying is “that design lets me do actions X, Y, and Z without friction and with ease.”
So: when we talk about what properties make, say, a design “simple,” we’re using shorthand: “I’ve noticed that property X is usually associated with designs that make activities A, B, and C easy.” The fact that we have a hard time getting people to recognize or desire simple designs suggests that we maybe ought to focus on understanding and explaining the activities over capturing the properties.
December 4th, 2007 at 3:21 am
Simple, easy, comfortable, and tasty aren’t attributes of a thing; they’re relationships between the thing and the person describing it. I think the explanation is useful, but note that it define “simple” in terms of “easy”. If I understand neither the simple thing nor how to perform the easy activity, it’s still turtles all the way down.
Still, there might be hope. For me, an example of the way out of the trap came from my participation in Jerry Weinberg’s PSL. One group got stuck in an exercise, and they said “The complexity of the problem is what screwed us up.” Jerry reframed: “Your reaction to the complexity of the problem screwed you up.”
—Michael B.
December 5th, 2007 at 8:42 am
It’s a matter of leverage. When you make everything a relationship between people and things, what do you do next? Change the people? (Easier said than done.) When it’s a three-way relationship - among people, things, and actions - you have more and simpler ways to question and change: how important is that action? is there a similar action that would work with that thing? what change to the thing would make the action easier? how can the action be varied?
It’s also a matter of focus. When talking about adjectives (”simple”, “good”, “true”), we’re trained to go toward the universal, the definitional, the all-encompassing, the boolean-valued. Things are either true or they’re not.
When talking about actions, we’re much less monolithic. It’s much easier to talk about steps, sub-actions. You can say things like “… and this step here, you gotta agree it’s awkward. See how much time it just took me?”
December 5th, 2007 at 5:34 pm
I didn’t make everything a relationship between people and things; that’s just the way it is. Things are either true or they’re not–maybe.
I agree that demonstrating, providing examples, and stating assumptions are helpful ways of mitigating this.
I’d change the people this way, and this way only: remind them every now and then that there’s a risk of misunderstanding. I’d try to remind myself, privately, a little more often than that–keep it going as a kind of mental background process. I’ve found it useful to set an example by displaying my own vulnerability to misunderstanding–and asking for an example. Doing that gracefully is a still-evolving skill for me.
—Michael B.
December 6th, 2007 at 8:26 am
(From William James’s Pragmatism, Bruce Kuklick, as quoted in a so-so Wikipedia article on James.)
Using the relationship between people and things in a definitional way has flaws. It makes it difficult to resolve disputes, since introspection is the ultimate authority. It tends to route discussion of term X into similarly intractable discussions of Y and Z. It’s difficult to disagree with a person’s definition without implying she’s a disagreeable person. By the mere fact of discussing, rather than observing, it downplays the tacit (embodied, acting-without-thinking) dimension of knowledge.
Observing actions can cut through all that, or defer it, and it doesn’t preclude any of it. It gives you more information, more choices.
I’m put in mind of one of Beck’s rules: that no design discussion should last more than 15 minutes before someone turns to a computer and tries an experiment.
December 6th, 2007 at 8:15 pm
I guess I misunderstood. You said, In a way, when we say “that’s a simple design”, what we should be saying is “that design lets me do actions X, Y, and Z without friction and with ease.” That’s different from showing that the design lets you do actions X, Y, and Z.
It’s difficult to disagree with a person’s definition without implying she’s a disagreeable person.
I think it’s harder to disagree with a person without someone inferring that I’m a disagreeable person.
—Michael B.
July 24th, 2008 at 4:35 pm
When I say that a design is “simple”, I don’t mean that it makes something easy. I mean that it doesn’t contain a lot of parts. I usually assess the simplicity of “finished” source code with `wc -l` or `sort -u | wc -l`.