David Anderson recently blogged about Genchi Gembutsu and software design. He tells a personal story of how looking only at current work practice for system requirements would have been a mistake. The point he makes is that it's often not enough to know only what today's work practice is, and that those practices sometimes preserve system inefficiencies. System design requires looking at the work and the work system; we need local knowledge to know how the end-to-end system will work in practice.
It's gratifying to see an appreciation of the value of looking closely at users and their work practices in software design. This hasn't been new to agile approaches, but the agile practice is usually to bring the user to the programmers. As I understand it, the Japanese "Genchi Gembutsu" approach is about bringing the programmers to the users. This is not a new approach in computer system design and development. Working with users, and bringing users into computer system design and development activities (early and often) has been a staple of Participatory Design a sociotechnical systems approach with roots in Scandanavian work with trade unions in the 1960's. The application of PD to software engineering is described by Christiane Floyd in this article (subcription req'd).
Going to the users is more effective than bringing users to the programmers for a couple of reasons. First, there's no way to fully understand a user's work practice and culture away from their workplace. There's just too much going on, in the office, on the desk, and on the desktop, that can affect usefulness and usability. Much of this information is tacit or unspoken, and is unlikely to be written down or even mentioned. Second, when users sit with the programmers eventually they adapt to the programmer's work place and culture. When that happens the software starts to fit the programmer's work practice more than the work practice of the user. This is the danger of not going to the user, since we know that it's the details of the workplace, work practice, and culture, that will make or break a successful deployment.
Technorati Tags: Agile, participatory+design, Genchi+Gembutsu, software+engineering, systems+engineering