Toby and the user stories

With the end of his first week rapidly approaching, Toby resolves to come up with some sort of schedule for his boss. He also doesn't really want to look at the 'Repository' code from yesterday and is still wondering what possessed him to write it. Grabbing his trusty copy of User Stories Applied from the bookshelf for reference, he begins the list.

  • A user can find a project by project number.
  • A user can add a drawing to the system.
  • A user can enter (or modify) the date when their department received a drawing. They cannot modify other department's information.
  • A user can view the list of drawings for a project and filter it.
  • The administrator can edit all the details for a drawing.

Thinking the feature set seems a bit short, he goes off to talk to some of the other people who use the current system and comes up with some more stories. Sometimes being judge, jury, and executioner designer, developer, and one of the users can be fun—Toby does some tweaking and re-prioritizes the list to his liking.

  • The administrator can login to the system.
  • The administrator can create a project.
  • Non-administrative users can login to the system.
  • A user can find a project by number.
  • A user can find a project by name.
  • A user can add a drawing to the system.
  • A user can view the list of drawings for a project and filter it.
  • A user can enter (or modify) the date when their department received a drawing. They cannot modify other department's information.
  • The administrator can edit all the details for a drawing.
  • A user can add drawings to the system sequentially without having to re-enter all the data each time.
  • A user can up-rev a drawing (create a new revision by only changing the revision number and dates)
  • A user can edit the dates for a group of drawings for their department.
  • The administrator can archive a project.
  • The administrator can un-archive a project.

After lunch at the local pub with his colleagues, Toby returns to this desk feeling a bit more relaxed (the Guinness may have helped.) He really wants to have a draft schedule ready for his boss by mid-morning the next day so he starts estimating.

The administrator can login to the system
"What system?", Toby asks himself. On an earlier project, his team used CAB and WPF with great success. After perhaps a month of getting over the initial learning curve, he and another developer used the framework and Micro-Pairing to implement quite a few features in a relatively short amount of time. Since he wasn't previously familiar with either framework or the methodology, Toby was fairly amazed at (a) how few bugs were produced and (b) the extremely low level of coupling between highly-tested objects. He decides there's no reason not to use the same framework and library in the current project.

Now that he's decided what 'the system' will be, the next step is to determine what 'logging on' mean. To keep things simple, he decides it just means setting the current user in the application.

Estimate:  2 points

The administrator can create a project
Creating a project naturally leads to storing the project somewhere but Toby still hasn't talked to his boss about the database. In his repository classes he had played around with some of the new LINQ features but just used an in-memory List as a store. Figuring that he understands the problem well enough to start designing entities, he decides to include creating a SQL Sever Express database.

Estimate: 2 points

Non-administrative users can login to the system
Once the administrator login is done, adding other types of users should be fairly straightforward.

Estimate: .5 points

A user can find a project by number
In the simplest form just entering the project number into a textbox would work, but Toby knows the users (including himself) will probably want alternate ways later on. It's becoming obvious fairly quickly that some of these stories will be split into more than work item.

Estimate: 1 point

A user can find a project by name
This will definitely require some type of auto-complete functionality. No one should be expected to type in names perfectly from memory.

Estimate: 1 point

A user can add a drawing to the system
Since the basic database already exists at this point, this will mostly be a lot of UI work. Toby hasn't used WPF in a little while and isn't too sure how quickly he will ramp up again and takes that into account

Estimate: 2 points

A user can view the list of drawings for a project and filter it
This strikes Toby as being far too encompassing a single user story so he replaces it with six separates ones that are more suitable. He also realizes he's forgotten a property for drawings, status.

A user can view the list of drawings for a project
Again, more UI work and retrieving data from the database.

Estimate: 1.5 points

A user can filter the list of drawings by job number (drawing office)
Toby cannot for the life of him remember what sort of filtering he might get for free, but figures he can just come with a generic way and then use it for all filtering.

Estimate: 1.5 points

A user can filter the list of drawings by a date range

Estimate: .5 points

A user can filter the list of drawings by a date range for a particular department

Estimate: .25 points

A user can filter the list of drawings by words found in the drawing name

Estimate: .5 points

A user can filter the list of drawings by status

Estimate: .25 points

A user can enter the date their department received a drawing
Without being sure exactly what the UI will look like at this point, this is a bit hard to estimate. In the simplest case a popup dialog with an edit box would suffice. Otherwise possibly editing directly in the list of drawings might work too..either way this is going to involve some account-based restrictions.

Estimate:  1 point

The administrator can edit all the details of a drawing
Again, this could be in-place or in a dialog.

Estimate: 1 point

A user can add drawings to the system sequentially without having to re-enter all the data each time.
This should just involve a few changes to the existing 'add drawing' dialog.

Estimate: 1 point

A user can up-rev a drawing (create a new revision by only changing the revision number and dates)
An even simpler use of the 'add drawing' dialog.

Estimate: .5 points

A user can edit the dates for a group of drawings for their department.  
A single date picker should take care of this after enabling multi-select for the list of drawings.

Estimate: .5 points

The administrator can archive a project.

Estimate: .25 points

The administrator can un-archive a project.

Estimate: .25 points

Toby does a quick tally and comes up with 18 story points. Assuming four ideal hours per working day, it should take him 36 days to complete the project. Of course Toby knows that nothing goes quite as planned and he's got some vacation already planned so decides to go with 3 months as a starting estimate.

Tomorrow, Toby will have to explain to his boss how the project will proceed. The initial estimate is 3 months, but it'll be re-evaluated each week as Toby starts to track how much work he can accomplish and how long it really takes him to finish one story point. Feeling that he's gotten enough accomplished for one day, Toby heads home to relax.