Tuesday, August 22, 2006

Take a look at this trivial web application. It's just sort -fgu -t, -k2. I do something like that manually when I'm transcribing our shopping list, so I don't have to hunt through the list for the next item every 30 seconds. It's just a lot more efficient to go down a list. Even numbering the list is a big improvement.

I take two lessons from this. First of all, I've already had this idea. I've had the idea to make it a web-based application as well. In fact, I've had ideas built on this basic concept that would be enough to keep me working on it for years. I've elaborated the base concept so much as to make the end product fundamentally different. I've also made it big enough that there's no way I'll even start it, because what I'd be able to do in any short amount of time would fall so far short that I'd consider it useless. The above may be a trivial effort, but I have no doubt it will be useful to a number of people. It forms a nucleus for growing something more.

The other lesson is how obvious this idea would be in a slightly different context. Imagine you were programming a robot to do your grocery shopping for you. Any solution that didn't involve the robot fetching items in a similarly sequential order would announce your incompetence as a programmer. It's so obviously the right thing to do that any halfway decent programmer would do it. That to me suggests a business opportunity, or, more precisely, a whole category of them. Computing has lots of useful algorithms for efficiently sorting, searching, collecting, packing, etc. that can apply well to the real world. Most people, however, are not programmers, and even those that are can be distressingly narrow-minded about applying their knowledge to optimize their daily activities.

Now, you could easily say that I'm a software guy and so I see everything as a software problem. When all you have is a hammer, everything looks like a nail, right 1 ? You would be quite right, but you'd also be missing the point. What matters is that computing concepts can effectively solve problems people have in the real world. There's something special about computing in its broad, nearly universal applicability to just about any problem that can be coherently described. Besides, having a perspective that differs is a benefit rather than a handicap when trying to come up with novel businesses.

There's an example of this that you've probably already heard of: Getting Things Done by David Allen. Now, he's not a computing guy. That's not really relevant. A key part of GTD, as I understand it 2 , is keeping track of the status of all of your tasks. Every task is either:

  1. In process right now
  2. Waiting for you to advance it
  3. Waiting for some condition to happen (time, other input, etc.)
  4. Done
  5. Future
Those aren't quite the categories Allen uses, but it's pretty close. Along with this, you need some method for prioritizing what task to work on and how to handle the appearance of a task more important than the one you're currently working on. This sounds a lot like the process model that operating systems use to multi-task. There are a number of programs running at once with a single CPU 3 . Only one can be running at any given time. The rest are either waiting for input from the user, or sleeping in the background pending some event, like 3pm or the completion of a download. The solutions are similar because the problems are similar.

There are a million examples that I could come up with 4 . The principles are universal. That's obviously not the entire formula, else I'd be typing my letter of resignation instead of a weblog post, but it's certainly a start. What remains to be determined is which real world problems map well to which computing concepts; some of them are obvious, but I'm sure there are many surprising and subtle ones. Furthermore, though an algorithm may map well conceptually to a real world problem, turning that into a useful product or service is hardly obvious. There's a lot to mine there, and I'm certainly going to be keeping these ideas in the back of my mind.

1 Or, when all you have is a gun, everyone looks like a criminal, but that's a tangent too far even for me.
2 Caveat: I've only read the first couple of chapters. Jessica, who has read more, assures me that it's not all obvious from there (unlike many "life method" books).
3 In the general, personal computer case, though this is rapidly becoming obsolete. The general principles are the same, however.
4 Or, more accurately, discover.

( ideas | longshot )