Today I visited TNO Information and Communication Technology to socialize and share some ideas, which was really inspiring. We covered almost everything, from Scrum to buying cars to the paradox of choice and much more. Agile minds wander along random paths, I guess…
Anyhow, Erik talked about the discussion of combining user centered design/interaction design and extreme programming. Here is a small analysis of both and some pointers for anyone taking interest in the discussion.
Basically, the discussion boils down to this: Alan Cooper says you should do interaction design before doing anything else. Kent Beck disagrees as he wants to integrate interaction design in the iterations of XP. What is your opinion?
What is Interaction Design?
Interaction Design deals with user related issues and tries to build products starting from the users point of view and not from the implementation or technological side. This “user-centered design“ approach is proposed by Alan Cooper, a very well known author in the usability community. He positions the task of interaction design as the first phase prior to the other phases of the waterfall model. It is important for him that no line is coded before interaction design is done in order not to influence or narrow interaction issues by pieces of the product that are already present. (source)
What is Extreme Programming?
The Extreme Programming software development methodology was conceived by Kent Beck. It presents an alternative to the waterfall model of software engineering by encouraging practices that invite early feedback and iteration based development.
Kent and Alan discussing
It seems the link to the original discussion is not working. Fortunately, archive.org has it.
Alan Cooper says at the end of the discussion:
The interaction designers would begin a field study of the businesspeople and what they’re trying to accomplish, and of the staff in the organization and what problems they’re trying to solve. Then I would do a lot of field work talking to users, trying to understand what their goals are and trying to get an understanding of how would you differentiate the user community. Then, we would apply our goal-directed method to this to develop a set of user personas that we use as our creation and testing tools. Then, we would begin our transformal process of sketching out a solution of how the product would behave and what problems it would solve.
Next, we go through a period of back-and-forth, communicating what we’re proposing and why, so that they can have buy-in. When they consent, we create a detailed set of blueprints for the behavior of that product.
As we get more and more detailed in the description of the behavior, we’re talking to the developers to make sure they understand it and can tell us their point of view.
At a certain point, the detailed blueprints would be complete and they would be known by both sides. Then there would be a semiformal passing of the baton to the development team where they would begin construction. At this point, all the tenets of XP would go into play, with a couple of exceptions. First, while requirements always shift, the interaction design gives you a high-level solution that’s of a much better quality than you would get by talking directly to customers. Second, the amount of shifting that goes on should be reduced by three or four orders of magnitude.
Kent tries to prevent the ‘phases’ in developing software with XP. He responds:
I’ll divide what Alan is talking about into two things: a set of techniques, and the larger process into which they fit. While I’m 100 percent with the techniques themselves, I’m 100 percent against the process that he described for using them. The techniques are optimized for being thoughtful in a cognitively difficult, complicated area where you’re breaking new ground, and the thinking that’s embedded in the practices is absolutely essential to doing effective software development.
[..]
To me, the shining city on the hill is to create a process that uses XP engineering and the story writing out of interaction design. This could create something that’s really far more effective than either of those two things in isolation.
It would be great if interaction design and extreme programming or other agile techniques can be combined. I have been in projects without the input of an interaction designer. After some time, you see where the user interface should be improved, but you have no time or knowledge to solve the issues. In my opinion, an interaction designer definitely has it’s place after starting a project.
But… I have no idea if it would work to start a project from the interaction design phase, as Alan proposes. I think a ‘proof of concept’ at the start of a project is very helpful, but when reading the discussion, Alan prohibits doing technical stuff when doing interaction design up-front…
Interesting discussion! What’s your opinion on this? Can interaction design and extreme programming be combined?