Mark Baker has posted some further thoughts on the related issues of addressability and interface uniformity. He writes:
The moment your interface includes a method which is not uniform to all things, then you lose something because some aspect of identification is removed from the identifier, and moved to the method. [ Mark Baker]
Elsewhere Mark illustrates using this progression:
An obvious next iteration would be;
getStockQuote( "SUNW", "realtime" );
getStockQuote( "IBM", "delayed" );
However, generalization doesn't have to stop there. We could do this;
getQuote( "Stock", "SUNW", "realtime" );
Eventually however, generalization has to end. I suggest that this is as far as one can go with it;
get( http://nasdaq.org/quotes/stock/realtime/sunw )
otherwise known as;
Web Service Architecture Working Group Mail Archives
OK, now let's switch the focus slightly. In the realm of desktop productivity apps, we have a pretty well-known set of primitive and universal verbs: SELECT, CUT, PASTE. No matter what the object -- a paragraph, a range of cells, a region of a photograph, a segment of audio or video -- we understand how to use these primitives. So life is good, right? No, life sucks, according to Bill Gates. When interviewed on Charlie Rose last night, he said that interface complexity is the most critical problem that the next generation of Windows ("Longhorn") is tackling. There are too many things for users to learn, he admitted, and as a result they are able to use only a fraction of the capability presented to them. He explicitly cited interface uniformity as the strategic objective.
As I perform the analysis and improvement, I see analogies to other application realms. Filters that remove noise and hiss from a voice recording, for example, are clearly analogous to filters that sharpen or color-correct an image. Making those analogies more explicit could help users more quickly get up to speed. But the knowledge brought to bear in these scenarios, and the skills that embody that knowledge, differ in exactly the ways that make the audio domain different from the raster-graphics domain.
This is my beef with the argument for a small set of verbs that apply uniformly to everything. Sure, you can achieve that effect, for some definition of "everything" -- but that doesn't make scenario-specific complexity go away, it just pushes it somewhere else.
The XML support in the next version of Office raises this same issue. If I suck an XML file into Word 11, it's a document. The ANALYZE and IMPROVE scenarios might include formatting, or table-of-contents generation. If I suck that same XML into Excel 11, it's data. Here the ANALYZE and IMPROVE scenarios could include sorting or the construction of pivot tables.
It's a great idea to push the abstraction of the core primitives above the level of SELECT/CUT/PASTE. But there's little to be gained by pretending that a table of contents is a pivot table.
Walking the line between the specific and the general always was, and always will be, a science and an art.
Former URL: http://weblog.infoworld.com/udell/2002/11/08.html#a504