In my post “Thoughts on IxD process” I outlined the following as a good base for creating interaction design deliverables:
- Understand the client — products, goals, market as well as the problem they want solved
- Understand the client’s customers and users
- Clearly articulate the client’s central process(-es) from a user perspective
- Create concepts
- Prototype and create reusable deliverables – material and immaterial – together with the client
The wonderful world of design patterns
I have recently finished C. Alexander’s seminal book “Thoughts on the synthesis of form” in which he outlines the base of what was to later become “design patterns”. (I also have Alexander’s book “A Pattern Language” but have not started it yet.)
A quick note: Alexander speaks of the design of a new tea kettle as being a “design problem”. I will use “design task” from time to time to refer to the assignment itself.
In the book Alexander highlights that creating a form based on a design task is actually the same thing as and understanding the context of the design task. Only when we start to understand the context can we create a form that fit the context. Also, when designing we gain new knowledge of the context – questions that arise during the design work will need to be answered and thus make us understand the problem’s context better.
Alexander discuss misfits as being more appropriate to use in the design process then requirements. Misfits between a form and it’s context are often easy to spot, easy to articulate and often even part of the initial design task: “Our web site does not sell enough gadgets”, i.e. there is a misfit between the form (the site) and it’s context (what customers want and act).
The start of the process for Alexander is to find all possible misfits that can occur between the form and it’s context (including the ones already solved by existing products). Misfits should be analyzed to see if they actually are a unit of several smaller misfits. For example “Can not find items in the shop” can be divided into “Items lack meta data”, “Search facility is missing”, “Navigation items are not labeled according to the user’s mental picture of the domain” etc, many of them then subdivided themselves. The misfits that are found often interact. In a sales site the possible misfits A: “Check out takes a long time” and B: “We can not ship without knowing the address of the customer” interact in a negative way – making one better can negatively influence the other. However, other misfits, such as C: “Available color options for items are not displayed” does not interact with A and B.
The misfits can be divided into groups based on which ones interact. The groups can be paced in a hierarchy – a tree – with the full design task (“Our web site does not sell enough gadgets”) on the top and branching from that are the different groups of misfits all the way down to the misfits that can not be divided further. Only actual problems that can occur are included in the tree – if intuition tells us that a problem would not really occur, then it shouldn’t be in the tree.
Starting from the bottom of the tree one then create a design pattern that, as far as possible, neutralize all the misfits in a specific group. The pattern can often be illustrated as a functional diagram – an illustration that includes both basic form and interaction. The lowest patterns are combined to create the upwards patterns all the way up to the full design diagram which solve the full design problem.
By modularizing design like this:
- the interaction between the created form and it’s context is made clear during the process
- thus, it becomes easy to share ones reasons for design decisions (since there really are reasons for the decisions — not so common in web design)
- each design task becomes small enough to be grasped fully by the designer
- future upgrades to the form becomes easy as new problems can be introduced and only the patterns that interact with that problem should be changed
- creating a better version of a design pattern does not influence other parts of the system
- created design patterns can be reused if the same (or a very similar) combination of problems occur in an other project
When incorporating C. Alexander’s wonderful work into my process, the following new process appear:
- Understand the misfits that can occur in the design task. Tactics: discuss with client about their market, position, products etc, discuss with the client’s customers about which misfits they find between their needs and the client’s and the client’s competitors products, have the designer and the development team think about possible misfits. (Step 1 & 2 in my previous process.)
- Subdivide the misfits, find their relations and create the hierarchy. (Step 3 in my previous process.)
- Create or reuse design patterns / diagrams that solve all misfits in each group, to create the final solution to the design task. (Step 4 & 5 in my previous process.)