After a long absence, here's the next installment in a series on how to use the cognitive dimensions framework.
For each goal that the user will attempt to accomplish with the API, list the alternative ways that the API allows the user to accomplish that goal and describe the information that the user needs in order to be able to decide which alternative to choose. Then describe how obvious it is to the user that they have a choice to make and any issues that this might cause users.
For example, in the System.IO namespace, one goal might be to write code to append text to a file. The user has at least two different ways that they can accomplish this task.
It is not necessarily obvious to the user that they have a choice for this goal. For example, the documentation for the API provides many code samples that demonstrate the first alternative but fewer samples that demonstrate the second alternative. Exploring the classes exposed by System.IO doesn’t identify the existence of a choice either since the names of the classes, File and StreamWriter seem somewhat unrelated (if File had been called StreamCreator then the existence of a choice would perhaps have been more obvious).
However, it is not likely that users will experience significant problems, due to being unaware of the different ways to create a StreamWriter. Regardless of the method chosen, users will end up creating a StreamWriter that they can use to append text to a text file. There is no difference between either approach in terms of the final result.
Premature commitment can be defined in the following terms
Given the above definition of premature commitment, the System.IO namespace exhibits premature commitment close to minor and reversible.