Hartmut Obendorf, Matthias Finck, Axel Schmolitzky
Creating user experiences is a cooperative effort that no-one "owns," yet one that requires coordination between people with different professional skills and attitudes, and also strong communication between the users and the development team. Changing the attitudes of future interaction designers and software engineers, and eliminating some of the causes for harmful power struggles and needless communication failures, is a first step towards creating better user experiences.
We believe that for academic education only an integrative approach can prepare for professional cooperationa vital skill for our students as future software engineers who will be making inofficial, yet final, decisions about the implementation. A quick poll among the authors showed we all claim our focus to be on the development of interactive software. In the Hamburg tradition of software development (e.g. STEPS), we take a process view, emphasizing the importance of participatory design and intertwining development with use. We thus understand integration in the PD sense where users must be given a strong voice in the design discussion.
Despite the spatial and traditional closeness, in our daily work we have developed different standpoints towards the software-development process: Some of us have a deeper background in usability engineering and some of us emphasize constructional questions of the development process. Integration thus also denotes the need-shared by specialist teams in professional corporationsto develop a common perspective and negotiate between different traditions and concerns.
In our point of view, it is an important part of academic education to sensitize students for these different standpoints towards software development and to let them take part in the negotiation process. In addition to educational offers focusing on either usability engineering and participatory design or software construction, we try to establish courses that combine elements of both perspectives.
To this end, we are conducting a new project this semester called XPnUE, short for "Extreme Programming and Usability Engineering." In this project, we want to explore how easily agile development methods, such as XP, and usability engineering methods, such as Contextual Design and Scenario-Based Development, combine. We take techniques from both worlds and try to blend them in an integrated process model that we apply to a concrete project setting in which the students build a group calendar. This way, we have real users with concrete interests that have to be integrated into the process.
The experiences we have made tell us combining agile software development and usability engineering is an intensive and difficult learning process that takes place on different levels at once: Our students try to combine concrete techniques from both software and usability engineering that they before only encountered side by side in lectures. Through self-exploration they are bound to discover differences between perspectives of software development. They are forced to reflect about the strengths and weaknesses of the different perspectives and how methods can be brought to match. They also learn to respect the work and usefulness of other professional roles who participate in the development process.
The current format has proved to be very successful in mediating the value of time- and effort-saving design methods. Our students learned a great deal about the richness of contexts and the difficulties of mapping tasks to functionality; they also learned that many dangers lurk in innocently similar terms for different concepts: Without the immediate application to project work, we as instructors would never have learned where we failed to convey the role of techniques in the process, for example, the difference of scenarios and UML use cases. Only the immediately visible differences made by small twists of the employed techniques, which we induced in frequent interventions, were convincing arguments for a change of perspective.
Not restricting projects to a single discipline is, however, a great way of spending more time than planned on the project, as both our students and ourselves discovered quickly. Switching between the conceptual and the practical level demanded intensive attention. Though it did not immediately benefit the application developed, we were also frequently successful in locating limits of the existing, uncombined process models and finding difficulties with our approach; conflicts of method and application-introduced appropriation and improvisation as means to adopt pre-defined processes to your project. The students also repeatedly learned that keeping balance is a key skill in design processes, we touched upon the tradeoffs between up-front design and iterative implementation, had to balance the prototypicality of deliveries, and manage the interweaving activities of coding and designing.
Instead of creating battle-scarred, cost-effective programmers, armed with conventions to routinely fend off innovation, or educating imaginative, creative, yet utterly unrealistic designers, we would like to make the university a safe place to explore what is usually out of professional scopethe ways and accomplishments of the other discipline. By teaching software development as an integrated process, instead of "just" programming or UX design, our goal is to foster respect for different attitudes.
University of Hamburg
University of Hamburg
University of Hamburg
About the Authors:
Hartmut Obendorf is a PhD student at the group for applied and social informatics at the University of Hamburg, Germany. His main research focus is on the design of human-computer interaction and distributed systems, the implementation and teaching of software development processesand minimalism.
Matthias Finck is a PhD student at the group for applied and social informatics at the University of Hamburg, Germany. His main research interests are in the areas of human-computer interaction, computer-supported cooperation, open-source and cooperative-development processes. He has developed and taught courses on topics such as usability engineering and paper prototyping.
Axel Schmolitzky is a research assistant at the University of Hamburg. He received a bachelor's degree in Computer Science at the University of Bremen, Germany, and a PhD in Computer Science from the University of Ulm, Germany. He was a post-doc fellow of the German Academics Exchange Service at Monash University, Australia, where he contributed to the implementation of BlueJ. From 2001 to 2003 he worked for an Informatics department spin-off company in Hamburg collecting experiences in industry projects and training. He has been actively engaged in restructuring first-year programming education at Hamburg University.
©2005 ACM 1072-5220/05/0900 $5.00
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2005 ACM, Inc.