Fri, 10 Oct 2003
Factories: current office applications are structured a lot like "factories" (except, perhaps, the spreadsheet). Ideas and Information come in one side, and communication artifacts come out the other side. Perhaps the perfect example of this is the word processor, but presentation applications are pretty strong in the factory model too. The problem is that people rarely come to a word processor / presentation knowing exactly what they want to say. I mean, it happens (esp. to you paper-outlining types, you rare breed you), but its not the norm. Its not that both of these products don't have some features related to brainstorming, organization etc (notably their outline modes)... its just that the overall structure of the app does not promote this.
So in the real world we have some great brainstorming tools. Whiteboards are my favorite, but cheap tablets of paper, giant sheets of poster paper, and groups of gathered people are all fantastic for different purposes (and different people). The basic limitation of the computer interface (relative to these other tools) is a deficiency in physical interface. Well, in the case of groups of people we're also deficient in intelligence, but that's the odd man out. So fine, desktop computers suck because of their generic interface and lack of physical display space (21" screens are still tiny).
But to our advantage we have plasticity: nothing in the computer is set in stone. With paper and whiteboards you always end up running out of space and erasing things (actually, this can be a good brainstorming practice in its own right, but you don't always want to impose selection so early). Ideas can't be connected together in all possible ways. You are limited in terms of media, etc. I think there's a lot of potential for really good idea development and refinement systems on the computer (brainstorming is only one piece of the puzzle of course)...
Refineries: so this got me thinking about how we would conceive of applications as refineries instead. You figure the norm is to come to an office application with some ideas. You then work the ideas through with the application, exanding, contracting, shaping them into a more intelligable form, etc. As you are working with the ideas you should be slowly moving toward a more finished document. This could maybe take the form of an outliner in part. I dunno. But the idea is that the idea refinement (and development) process ends up producing an artifact that can be transformed into a reasonably communicable form.
Tools: so as an aside, refineries and factories are both big monolithic things. They are good for mass production: good for doing a specialized task really well, really fast, etc. But we don't really use factories in our daily lives unless we work at one (well, fine, factories are extant behind the artifacts we work with, but we don't work with the factories ourselves typically). Instead we have a variety of tools. Tools operate on aspects of objects. Knives operate on any object that has a "cuttable aspect", or maybe more appropriately "is soft". Hammers operate on things that can be hit (everything), but make sense operating on things where high impulse is needed.
In the real world objects exhibit multiple-inheritance (of interfaces at least, though perhaps we're stretching the metaphor too far)... they have lots of different aspects that make different tools and techniques apply (or not). Sometimes designers don't make an "interface" visible: the object doesn't afford a technique which it does in fact support. But in any case, we have lots of small tools that work together to do interesting things. We also have sets of tools grouped together in physical space to make certain operations convenient (kitchen, work bench, office desk). We can even buy pre-packaged sets of tools that some specialist has assembled to help us with a certain task (bike tune-up kit). But all these things are comprised of individual tools: I used the tools from one of my bike toolsets to fix my rollerblades last night.
So in the long run are we going to have factories (what we have today, monolithic applications) or tools? Tools are an unsolved problem in graphical interfaces (at least, to my knowledge... I've never seen a good solution). The Unix tool set has demonstrated the many aspects of the problem very well in a much simpler situation:
- Tools can be much more flexible than factories. Infinite combination, etc.
- Tools pose the danger of requiring much greater problem solving skills to wield effectively
- Tools typically require a greater level of knowledge to accomplish basic tasks
- Tools need a few simple techniques (in the case of Unix, text streams) for working together with objects or people won't be able to manage them
Tools offer great potential. Can we find a way to manage and present them usefully? I would say the first step is figuring out some concrete LAWS by which tools must interact. Tools in the physical world are typically controlled and interact by basic laws of physics, laws people learn intuitively at a very early age. Unix tools also have an important set of laws in the form of pipes and streams and text. What are the atoms in a graphical tools environment? (we're not talking technology here necessarily, e.g. "components" or "bonobo" are not an answer to the problem... the problem is less technical communication between components and more providing a simple uniform conceptual space for people to problem solve within)