There’s a new dimension that I’ve started judging computer tools and software on: how much control I have over what it does. There aren’t many things more frustrating than a program that you’re trying to use, that you know it should be able to do the right thing, but you can’t convince it to do it for you. I think a very good example of this is Wolfram Alpha — WA is an amazing tool that can do a lot of things, but my complaint (and many others’) is that it is very hard to know when it is going to do what you want. WA is great for typing in random queries and seeing what kinds of things it can do, but if I ever actually want something from it (which has happened on occasion) and WA doesn’t guess what I’m asking on the first try, it’s extremely frustrating to try to figure out what magic words I need to use to make it do that.
The problem is that WA tries to guess what I mean. That wouldn’t be a problem by itself, but combined with the fact that it doesn’t always get it right, makes the experience frustrating. What do I need to enter to make WA guess correctly? I really don’t know. I suppose that if you use WA enough, you can figure out its quirks and know exactly what you need to type to get what you want. But assuming you haven’t spent a lot of time with it, the fact that you can’t say things like “Please treat this as a Mathematica expression” makes it very hard to get what you want.
Contrast this with Google. Google does a lot of things to figure out what you’re trying to search for (shopping sites, images, news results, etc), but in general it is much easier to know what kinds of things Google is going to give you for a specific query. Perhaps this is due to my greater experience with Google, but to me Google is just more understandable. I might not know all of the guts of what it’s doing for search rankings or how exactly it’s deciding that I want to search for news articles, but I at least feel like I am in control. And that’s what’s lacking in WA.
To be in control of my tools, I feel like I need to have a good mental map of input->output. For Google, I have a fairly good idea of what kinds of results I’ll get for what kinds of queries; for WA, not really. This makes it very hard to find a good input that will map to the right output. Having this map isn’t the only way to be in control, I suppose: if the tool is good enough that it can always guess your desired output, then you don’t really need to know how it’s guessing. But the problem is that no program is at that point, and I think fundamentally, no tool ever will. That’s not a statement about the future of NLP, but rather the fact that the computer has to do an impossible task: create a unique mapping between what I say and what I mean. And I think people just have too many ways of saying the same thing, and more importantly the same thing can mean too many things, so the computer will never be perfect. So you need some amount of canonicalization, which by nature has to be dictated by the program. But if you have no idea what the program has decided the canonicalization is, the experience is frustrating.
I suppose there’s also the other alternative, that you don’t really care what the output of your programs are. There are plenty of tools that I use, that I’m sure have very advanced configuration options; I just don’t know about them, and I don’t really care. It wouldn’t be any different to me if my CD burner burned in a different format, as long as it’s readable; so in this case I don’t really need that control. Though if I burned a lot of CDs, I probably would.
Anyway, in summary, my point is that until computers are completely able to take over the driver’s seat from the people using them, there needs to be understandable consequences for every action that the user can take. Programs may get to the point that they can completely guess what we want (though I doubt it), but until then they need to remain as tools and nothing more.