7 Sep 2005 apenwarr   » (Master)

Logical Inconsistency

I'm learning a lot of things in the last little while. Here's a fun set of facts:

1. The more customers you have, the more problems they'll find. Feature request lists grow boundlessly, and you'll never finish them all. Accept imperfection, and aim to solve the most important problems first.

2. Nobody will use your product unless you eliminate 100% of their reasons not to use it. Since solving 90% of problems is not the same as solving 100% of the problems for 90% of people, a partial solution isn't acceptable. Aim for perfection.

(Doesn't this sound like the two sides of the argument in Worse is Better?)

Think of those two points by themselves; you can probably agree with each one. Each one suggests a course of action to respond to the problem. But put together, no solution seems to make sense: nobody will use your product until you finish going through the entire requirements list, but the list of things people ask for will expand endlessly. The only sensible course of action suggested by each one is nullified by the problem suggested by the other.

I realize it's generally social suicide to quote Ayn Rand, lest you be labeled a crackpot, but sometimes she said smart things:

Contradictions do not exist. Whenever you think you are facing a contradiction, check your premises. You will find that one of them is wrong.
-- Ayn Rand, Atlas Shrugged

The wrong premise in this case? Maybe it's obvious to you now, but it wasn't obvious to me. To solve the problem, you need to redefine the problem itself. One way is to find an important subset of people, then solve all their problems. In other words, you have to find a way to solve both #1 and #2 at once.

Contradictions do not exist. It's good advice. When you have a contradiction, you can't possibly succeed until you figure out what it is, because the real solution is neither of the obvious ones.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!