Last week the world got to see what Office 12 might look like. Office 12? No Office 2003? Office XP 2? Office Vista?
God knows. I am in favor of everybody getting on a (major.minor.patchlevel) versioning scheme and being done with this version nonsense, but something tells me that will never happen.
Mini-rant aside, this article got me thinking about user interface. It doesn’t help that I had recently read Rich Schaut’s article on Mac Word 6.0 in Joel Spolsky’s excellent collection of essays on software.
I’ll be the first to admit that user interface is a hard problem. It’s a problem so hard that I do my best to avoid doing GUI development at work, and work on the “back end” and the “infrastructure.” The stuff that interacts directly with a user needs a certain type of artistic bent, in that it has to be:
That list could go on forever. To be honest, while I think I have the ability to solve some subtle problems, doing all of the above listed things at the same time is not trivial. This is made more difficult by the way that I, as a software engineer, want my user interface a certain way — barren, functional, keyboard-controllable, and fast. Being able to distance myself from my personal user interface desires, and what the archetypical user wants is a difficult thing to do. Hah! Archetypical user! Who said I couldn’t make up my own imaginary friends? More on that later.
A coworker pointed out (I have no facts to back this up) that many of the features on the Office wish list are already implemented, and have been for a while — they are just buried deep within menus or made unintuitive to use. Dear reader, I believe that assertion in the deepest part of my heart.
There has been a lot of discussion that Google is doing well because their
products are small, autonomous, and modular. Because of this, they can be
nimble, they can innovate, they don’t have to leave people behind. Microsoft
is stuck with these monolithic platforms that are killing them slowly, even as
they peel away features. They are stuck with huge products like Office that
are full of more features than any single person really understands or
appreciates. This is great, because they own the entire productivity market,
but this sucks, because their only need to improve or innovate these products
is to make them more appealing to the corporate users, so more of them have a
compelling push to upgrade.
In all honestly, I think this is going to be a problem in the very short term. I can’t make a justifiable argument of why any windows shop really needs to upgrade to Vista or Office 12, and I don’t think Microsoft is going to have an easy time selling it either. There are a lot of big companies that, in my opinion, probably don’t see the need to go from Windows 2000 to 2003 on the server side, except that Microsoft is forcing their hand. This all forces Microsoft into the subscription model of product pricing, if they want to stay afloat…
I’m getting way off track here, in terms of what I wanted to talk about. I want to talk about user interface. To twist what I was saying earlier, there is no such thing as an archetypical user. Because of this, there cannot be an archetypical user interface. A lot of products have figured this out, which is why we have toolbars, menu bars, floating widgets, and the ability to customize/reorder/resize these things to the wazoo. But, they still come with some default configuration, and most of the customization centers around removing stuff rather than adding in functionality or user interface elements.
This all got me to thinking, what if the next version of word came with a default user interface of nothing but a search bar? I have become convinced that search, metadata, and taxonomy interfaces to file systems make more sense than folders and files. Want to bold some text? Control-B will still do it, but there’s no icon there by default. Don’t know that? Search for “bold” in the search bar, which branches into options to add bold to menus, contextual menus, a floating bar, a sticky/non-sticky sidebar, a “quick list” of frequently performed tasks, a “smart bar” of context-sensitive buttons, or a traditional button bar. Based on what you need to do with your editor, you quickly build up the user interface that you need, rather than some inadequate pre-canned interface that you have to trim/hack/beat into your purpose.
At first, this user interface would throw people for a loop. Further, it requires a damn good natural language search and online documentation tool (as well as some sort of backup hierarchical functionality explorer). “I want to make text darker” needs to become “bold”, and that has to happen right away. But, what this allows users is a perfect blank canvas, and a novel way to interface with an application in the way that they want to interact. I don’t think it would be that hard in the end, because thanks to the Internet, everybody understands the search user interface.