The survival of the simplest
[Note: This post has been a draft for about a week now. I give up now: I'll complete my thoughts in a follow-up post]
There’s a myth in the sciences, I feel. At least in computer science.
I think people working in CS have a general love of complexity. They like complex algorithms that do something “clever” (e.g. Personally, I love the way NTP syncs clocks even across computers connected with networks with unknown delays). There’s also a sense of triumph on discovering subtle issues (like finding out a Heisenbug that some compiler-optimization caused).
Unfortunately, this love of complexity also overflows into the kinds of problems that people want to solve. I’ve seen people taking special pride in solving a complex problem (a general template is improving an algorithm so it works for all cases, not just 99.999997% of them).
My recent visit to Seattle (Redmond, actually) where we demo-ed a project at TechFest has convinced me that the world in general cares about something very different. TechFest is an internal Microsoft conference that enables researchers (ie. Microsoft Research) reach the Rest of Microsoft (i.e. product groups like Office or Windows).
Given its scope, TechFest usually has demos and research ideas that product groups are most likely to want to use in their own products, and so is a good case for understanding what people actually care about (the reasoning being that product groups, with their limited resources, will attack problems important to their customers).
Now, here’s the thing that strikes me about the TechFest demos– in (nearly) every case, research seemed to attack a simple problem. Actually, an obvious problem. It might propose a really complex solution, but the problem was always obvious.
I can’t give any real examples (confidentiality– I never know what’s ok), but an automobile-equivalent would be finding your car in a huge, crowded parking lot. The solution may be complex (my fantasy solution to the parking problem involves the keychain going hot-or-cold depending on how far you are from the car– somewhat like this), and may involve a lot of effort from different domains (wireless devices, UI, location…). However, the problem is pretty obvious–someone’s lost their way in the parking lot–and it has obvious value.
I think the obviousness-of-problems has implications both for how to pick problems (looking for interesting solutions seems to be more valuable than seeking out interesting problems) and how to sell your solution (if your solution has several parts, expect the part that solves the most obvious problems to be adopted earliest).
It helps that we are so surrounded by obvious problems– on the Web, for instance, remembering which sites you’ve visited (I consider bookmarks a broken solution). I’m sure there are many more.
In hindsight, it all sounds obvious; I wonder what took me so long to figure this out.