software = science + art + people
2012-06-20
User-centered design (UCD) is important. I hope I’ve been a good advocate for it during my career. Its basic tenet is that software should be constructed as much as possible according to how users think and work, not according to techie considerations. (A seminal book on this topic is The Design of Everyday Things, by Donald Norman.) At its best, UCD promotes an alignment between technology and customer pain points that keeps software’s value proposition compelling. Even on a bad day, UCD makes software a lot more pleasant to use.
However, UCD rarely yields all potential benefits, which is why I’d like to suggest a specialized form of UCD for many software teams. I’ll dub this idea “Role-Play Centered Design” (RPCD, prounounced /ˈrɪpˌsɪd/) because of the way the various parts of the system come to life. (This idea is similar to — though conceived independently from — the concepts in this article from the proceedings of HCI ‘07.)
Manifesto
RPCD is distinguished from ordinary UCD by three key tenets.
Let me justify each of these ideas, and then I’ll give an example of an RPCD process at work.
The “system” includes people.
Most architectural and UML diagrams focus on software and/or hardware entities. The user's role in the system is implicit. Even among users of activity diagrams, most workflow is computer rather than human.
This is wrong. software - people != software. Any thoughtful veteran of the industry can tell you stories about why this is so. Engineers who accept the flawed premise that only the computer side of software needs to be designed are already handicapping their UCD fatally. The system built by a software team includes people — individual users, a community, support personnel, sales folks, professional services, maintainers of docs on a web site, etc. If you let an engineer construct "the system" with no serious thought to the people, you often end up with misalignments that make it irritating to understand/use/configure/support, expensive to maintain, or even impossible to sell.
Specifics are non-negotiable.
The devil really is in the details, and ifu don't solve detailed problems, you won't solve problems at all. The design of a system is therefore best driven by specifics — even if the specifics are only postulated. Specifics are best exemplified by use cases, and role playing forces specifics into use cases.
The best way to understand is to “be” the system.
You should "be" the software in the system, and you should "be" the people as well.
When a hu being actually interviews someone in the same way an automated wizard eventually will, you learn things. The human reorders the questions or short-circuits part of the interview because she knows it's unnecessary. Or the human gets frustrated at how needlessly cumbersome a particular part of the process is. Or the human asks some intelligent questions that you never considered. When two humans interact to model what's eventually going to be a formal protocol, you confront asynchronicity and error handling in ways that UML or whiteboards don't.
Modeling the system in role plays also has some other profound long-term advantages that go far beyond just what you learn. I'll discuss these in a different post.
In my next post, I’ll give an example about how RPCD works.
Action Item
List all the people that interact with or help create your software. If your list has less than four or five unique roles, think some more. Hint: see this post.
Comments-
-
-
-
-
-
-
Example RPCD Interaction « Software, Wetware, Webware, 2012-06-21:
[...] my last post on RPCD, I explained its key tenets. In this one, I’ll imagine one way to put it into [...]
Long-Term Benefits of RPCD « Software, Wetware, Webware, 2012-06-21:
[...] a previous post, I wrote about a methodology for designing software that has role-playing at it’s heart. If [...]
What Role Are You Playing in RPCD? « Software, Wetware, Webware, 2012-06-25:
[...] you role play in RPCD, you could be standing in for either software, or a flesh-and-blood human being. As RPCD explicitly [...]
Evolving Software Politics « Codecraft, 2012-09-11:
[...] python and “convention over configuration“—both liberal favorites. My idea that teams should deploy evolving software by assigning humans to role play architectural components, and...—that’s about as ultra liberal as it [...]
Evolving Software Politics « Codecraft, 2012-09-13:
[...] python and “convention over configuration“—both liberal favorites. My idea that teams should deploy evolving software by assigning humans to role play architectural components, and...—that’s about as ultra liberal as it gets. Take Our [...]
Progressive Disclosure Everywhere « Codecraft, 2012-09-16:
[...] in programming languages, and in the software craft in general. I explored one in the series on role-play centered design. I’ll disclose some more ideas … progressively … in other posts. [...]
Baby Steps « Codecraft, 2012-10-24:
[...] If you worry that it would be too expensive to code up two alternate solutions, consider using role-play centered design to let humans substitute for key modules with almost zero [...]