Lessons Learned from a Successful Collaboration Between Software Engineers and Human Interface Engineers

Most software applications are difficult to use because the development process emphasizes the quality of the architecture and not the usability of the application. Programs can be both well engineered and usable if software engineers work with human interface engineers who not only design the user interface but advocate architectural decisions that help make tasks more natural for users. Our group used a process that reduced the workload of the software engineers and yet produced a particularly usable and well-engineered application. This process included designing the UI before coding, developing the application's user interface in a UI builder, and regularly testing the application with users under realistic conditions. This latter point was an important achievement because it is critical and yet particularly difficult to test collaborative applications. Carrying out these activities enabled the software engineers and human interface engineers to work closely together as a cooperative team because everyone was able to contribute valued components to the effort.