Jul 17, 2011

User Stories and Roles in Agile

The Agile approaches in system development rely very heavily on the concept of user stories.   A user story is a brief statement about how a specific user might use the system so that he achieves a specific outcome.  It is often stressed that this outcome must be expressed as something of value to the business.

An example user story might be: ‘As a system administrator, I can configure the access rights of users, so that I can restrict access to sensitive areas of the system.’

Identifying the users of the system to be developed is one of the first steps the development team should take (see for example Mike Cohn’s ‘User Stories Applied’).  To ‘identify’ users does not mean identify the actual persons, but rather to identify roles

A role is the capacity in which the user interacts with the system.  An example of a role might be the system administrator who is in charge of configuring and maintaining the system.  Another example is an assistant who is responsible for printing reports from the system. A third example is a data entry person who uses the system to input data. And so on.

In addition to the organisational position occupied by the user, it is also encouraged that the system designers further look at finer grains of the roles.   Rather than simply think of the system administrator as one role, think of possible types of system administrators because doing so can bring insights into what the role will need when using with the system. 

A highly experienced system administrator very familiar with the system will have different needs than an experienced system administrator new to the system, who will also have different needs from a system administrator by accident, and so on.

By further classifying the roles, we begin to realise that not all system administrators are the same.  They have different backgrounds.  They may have the same responsibilities, but they may have different capabilities and capacities.

Mike Cohn recommends the project team to hold a brainstorming session near the beginning of a system development project to identify the various roles that will be catered.  In this session, every team member writes down roles that they think about.  After everyone has written down the roles, the team collects the list and refines them, merging similar ones, and further splitting others.

A couple of observations can be made:

1.  The way some authors use the phrase ‘user’ they seem to be not very clear whether they refer only to those who will be actually using the system.  If that is the case, the definition excludes those stakeholders who do not use the system, and therefore some other exercies is needed to identify the larger set of stakeholders. 

For example, if the system is an immigration department front-end used by immigration officers (and never touched, or even viewed, by passengers), are passengers to be considered as users?  I would suggest they not be considered as users, but should be considered as some other kind of stakeholder (a very important class of stakeholder; not to be ignored), and a separate exercise to identify these kinds of stakeholders need to be performed. 

2.  I would also suggest that after identifying the users, and cleaning up the list, a second exercise be taken to note down the key interest of the user with regards to the system.  Why does this user have to interact with the system – what are their responsibilities to the organisation? 

Jun 11, 2011

Some Thoughts on Jobs

A resume is a marketing tool, nothing more, nothing less.  Everything in it must contribute to getting the reader think you might be the right person for the job.  However, it is a mistake to overstate things in your resume.  You will be correctly identified as a liar.  As with any marketing effort, make yourself appealing, but don’t overpromise.

If the resume is a marketing tool,  the interview is the selling forum.  This is where you close the deal (no resume ever closed the deal).  Try to find out the company’s problem (why are they willing to spend thousands of dollars a year on someone?).  Show them how you can relieve them of the problem.   An interviewer has a few concerns:

  • Is this the right person?  (Would I be in trouble if I select this person?)
  • Is there someone better?
  • If this is the best person for the job, what if I can’t get them?

Address these questions.

Do you worry about being overqualified?  If you have a leak in your house and you need a plumber, do you worry about whether the plumber you get is overqualified?  You certainly would not want to get a professor of plumbing who only knows the theory, but you shouldn’t worry about getting someone who has fixed 100,000 leaks in their lifetime. 

The Product Owner in Scrum

What is the role of the Product Owner in Scrum? 

The product owner’s responsibility is to ensure that the product is developed and delivered in a manner that maximises the paying owner’s return on investment.  In Scrum, what this means is that the product owner must identify for the Team those product features that deliver the highest business value for money amongs the outstanding product features not yet delirvered.

There is the assumption that there will never be enough money to build every desired feature.  Therefore, the features need to be prioritised.

The Product Owner does not dictate to the Team the specific set of features they need to build in a Sprint.  

Specifically, the Product Owner does not tell the Team how many features they ought to build during a certain Sprint – that decision belongs to the Team alone.  The Product Owner’s main role is to inform the Team of the priorities, so that they don’t proceed to deliver lower value features over high value ones.  There can be exceptions - for example a lower value feature may be included in the Sprint over a higher value one because the higher value one is too big to be added to the current Sprint, while the lower values one is small enough to be added.

It is possible that the product owner is the customer, but he or she must never be the Scrum Master.