User Tools

Site Tools


what_should_i_do_if_different_users_have_different_mental_models

What should I do if different users have different mental models, or one of the stakeholders has a different mental model than an end user?

This question arises out of a confusion about the DCI design process. The mental model on which a DCI program is based is not merely discovered, but is also formed and refined during the design process, based on input from all the stakeholders, as well as the programmers. The following quote from Trygve describes this principle, which is rooted in the Lean Architecture philosophy:

I don't see DCI as a method for realizing any odd domain model that initially may be in the user's mind. The lean principle “everybody, all together, all the time” says that user and programmer together shall collaborate to construct a new mental model that extends the initial domain model with an explanation of how the new system works. The user is an active member of the development team and the programmer creates a system that will feel like an extension of the user's mind - no surprises.

As mentioned in the above quote, the emphasis is placed first and foremost on the end users because they are the ones who will be using the system, and one of the primary foundations of DCI is that software should be intuitive to use, i.e. it should feel like an extension of the user's mind. It is important to keep this emphasis in mind, because the consequences of putting the programmer's mental model first can be quite unfortunate for both the end user, and ultimately the programmer as well.

However, it's also important to ensure that the mental model on which the DCI code is based reflects salient aspects of the mental models of all the stakeholders. For example, in the Money Transfer example, the Account context includes the perspective of both the account holder (the end user) and the accountant (one of the stakeholders), since the Account context is implemented as a cache over a collection of Ledger entries. This mental model also makes sense to the programmer thanks to the fact that it integrates both perspectives. This is a good example of the goal to strive for; a mental model that is intelligible to everyone: the end users, other stakeholders, and the programmers. The goal is not to include every bit of variation in the mental models of all of these people, but rather to reflect a gestalt / collective mental model that makes the system work optimally for everyone involved.

what_should_i_do_if_different_users_have_different_mental_models.txt · Last modified: 2014/02/10 05:21 by mbrowne