Saturday, March 05, 2011

Fundamentally, we do not understand

A lot of what we do is simple in nature but complex in practice because our workload is huge. For example, preparing an invoice is simple but preparing 10^7 invoices requires computers.

Similarly, in computer programming, it's relatively simple to write a function such as printf(). But to use that function effectively is much more difficult because of the possible interactions with other pieces of software. Evaluating each possible interaction does not take much time. But in today's software world, in which nobody has the time and energy to read and understand every single specification involved, doing a perfect job of interaction evaluation becomes impossible. Even if you think you are done, how do you know you did not miss something?

With this in mind, check out this article: software is being used by law firms to analyze documents, precisely because of the above problems. Ah, how I would like some software to show me all the specification violations implied in a program.

But the real issue is not that I can't beat a computer at chess or at Jeopardy. The real issue is why we have engineered our existence so that, even when considering every day tasks, it is not possible to understand what's going on. Why do we need so much complexity? What is the ultimate goal attained by playing this game? We should also consider the consequences of our actions. Are we sure we like the outcome?

In the future, software will be able to do much more than merely "google" documents. What would happen if the only way to change your world was to get an extremely advanced software degree (or equivalent expertise), so that you can write some software that beats other software at behaving like a human? What does that even mean? For instance, in a lawsuit, is your success predicated on the software you can afford? Phrases such as "a lawyer will be appointed to represent you" fundamentally assume all lawyers are at least competent. What happens when "competent" is far removed from what you can buy if you have enough money? And what happens when you can buy an AI that will tirelessly prove you right irrespective of the circumstance?

To me, this situation seems like some optimization challenge. Perhaps the way to optimize is not to help us solve larger piles of relatively simple problems faster but to eliminate the simple problems altogether. After all, we do not determine 1000 mod 5 is zero by repeated subtraction.

No comments: