I was recently asked to describe why we had decided to profile user characteristics via the cognitive dimensions framework and not task characteristics, as had been done by the originators of the framework.

The main reason is fairly straightforward. Over the last couple of years, the Visual Studio Usability Group has carried out a large number of usability studies and field visits with the objective of understanding the ways that developers work. We encompassed the data from these studies into descriptions of three personas, the systematic, pragmatic and opportunistic programmers. These personas began to be used by feature teams to describe who their target customer was. When we started looking at using the cognitive dimensions framework, we wanted to make sure that we could introduce the framework in such a way that it could be used in conjunction with the existing user data we had already collected so defining user profiles in terms of the framework made sense.

It also helped crystallize some of the observations that we had seen regarding the different ways that different developers tackle different tasks. It became clear to us that any particular individual might exhibit characteristics of different personas depending on the task that they are working on. For example, a developer who works like a systematic programmer when working on some maintenance activity might behave more like an opportunistic programmer when working on some prototyping activity. But another developer working on some prototyping activity might behave more like a pragmatic programmer if they believe that there is a chance that the prototype they are working on might evolve into a shipping product at some point in the future.

Given this, we felt it was better to describe developer characteristics in terms of the framework irrespective of the particular tasks, since we had observed different developers attempting the same task in different ways.