<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Adventures of an aspiring agile developer in a not-quite agile world : User stories</title><link>http://blogs.msdn.com/agilemonkey/archive/tags/User+stories/default.aspx</link><description>Tags: User stories</description><dc:language>en-CA</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Toby and the user stories</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/06/06/toby-and-the-user-stories.aspx</link><pubDate>Wed, 06 Jun 2007 11:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3097651</guid><dc:creator>casper</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/3097651.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=3097651</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=3097651</wfw:comment><description>
&lt;p&gt;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 &lt;a href="http://amazon.com/o/ASIN/0321205685/ref=s9_asin_image_3/102-9265866-2296118?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=1RA7PZD8VEW4D1S7XCTF&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=288448401&amp;amp;pf_rd_i=507846" mce_href="http://amazon.com/o/ASIN/0321205685/ref=s9_asin_image_3/102-9265866-2296118?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=1RA7PZD8VEW4D1S7XCTF&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=288448401&amp;amp;pf_rd_i=507846"&gt;User Stories Applied&lt;/a&gt; from the bookshelf for reference, he begins the list. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A user can find a project by project number. 
&lt;/li&gt;
&lt;li&gt;A user can add a drawing to the system. 
&lt;/li&gt;
&lt;li&gt;A user can enter (or modify) the date when their department received a drawing. They cannot modify other department's information. 
&lt;/li&gt;
&lt;li&gt;A user can view the list of drawings for a project and filter it. 
&lt;/li&gt;
&lt;li&gt;The administrator can edit all the details for a drawing. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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 &lt;strike&gt;judge, jury, and executioner&lt;/strike&gt; designer, developer, and one of the&amp;nbsp;users can be fun—Toby does some tweaking and re-prioritizes the list to his liking. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The administrator can login to the system. 
&lt;/li&gt;
&lt;li&gt;The administrator can create a project. 
&lt;/li&gt;
&lt;li&gt;Non-administrative users can login to the system. 
&lt;/li&gt;
&lt;li&gt;A user can find a project by number. 
&lt;/li&gt;
&lt;li&gt;A user can find a project by name. 
&lt;/li&gt;
&lt;li&gt;A user can add a drawing to the system. 
&lt;/li&gt;
&lt;li&gt;A user can view the list of drawings for a project and filter it. 
&lt;/li&gt;
&lt;li&gt;A user can enter (or modify) the date when their department received a drawing. They cannot modify other department's information. 
&lt;/li&gt;
&lt;li&gt;The administrator can edit all the details for a drawing. 
&lt;/li&gt;
&lt;li&gt;A user can add drawings to the system sequentially without having to re-enter all the data each time. 
&lt;/li&gt;
&lt;li&gt;A user can up-rev a drawing (create a new revision by only changing the revision number and dates) 
&lt;/li&gt;
&lt;li&gt;A user can edit the dates for a group of drawings for their department. 
&lt;/li&gt;
&lt;li&gt;The administrator can archive a project. 
&lt;/li&gt;
&lt;li&gt;The administrator can un-archive a project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The administrator can login to the system&lt;br&gt;&lt;/b&gt;"What system?", Toby asks himself. &lt;a class="" title="CAB" name="CAB"&gt;&lt;/a&gt;On an earlier project, his team used &lt;a href="http://www.codeplex.com/smartclient/Wiki/View.aspx?title=Composite%20UI%20Application%20Block&amp;amp;referringTitle=Home" mce_href="http://www.codeplex.com/smartclient/Wiki/View.aspx?title=Composite%20UI%20Application%20Block&amp;amp;referringTitle=Home"&gt;CAB&lt;/a&gt; and &lt;a href="http://wpf.netfx3.com/" mce_href="http://wpf.netfx3.com/"&gt;WPF&lt;/a&gt; with great success. After perhaps a month of getting over the initial learning curve, he and another developer used the framework and &lt;a href="http://www.peterprovost.org/archive/2005/08/29/7377.aspx" mce_href="http://www.peterprovost.org/archive/2005/08/29/7377.aspx"&gt;Micro-Pairing&lt;/a&gt;&amp;nbsp;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&amp;nbsp;(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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt;&amp;nbsp;2 points&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The administrator can create a project&lt;/b&gt;&lt;br&gt;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. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 2 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Non-administrative users can login to the system&lt;/b&gt;&lt;br&gt;Once the administrator login is done, adding other types of users should be fairly straightforward. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .5 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can find a project by number&lt;/b&gt;&lt;br&gt;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. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1 point 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can find a project by name&lt;/b&gt;&lt;br&gt;This will definitely require some type of auto-complete functionality. No one should be expected to type in names perfectly from memory. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1 point 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can add a drawing to the system&lt;/b&gt;&lt;br&gt;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 
&lt;/p&gt;
&lt;p&gt;Estimate: 2 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;strike&gt;A user can view the list of drawings for a project and filter it&lt;/strike&gt;&lt;br&gt;&lt;/b&gt;This strikes Toby as being far too encompassing a single user story so he replaces it with&amp;nbsp;six separates ones that&amp;nbsp;are more suitable. He also realizes he's forgotten a property for drawings, status. 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can view the list of drawings for a project&lt;/b&gt;&lt;br&gt;Again, more UI work and retrieving data from the database. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1.5 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can filter the list of drawings by job number (drawing office)&lt;/b&gt;&lt;br&gt;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. 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1.5 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can filter the list of drawings by a date range&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .5 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can filter the list of drawings by a date range for a particular department&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .25 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can filter the list of drawings by words found in the drawing name&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .5 points 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A user can filter the list of drawings by status&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .25 points&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A user can enter the date their department received a drawing&lt;/b&gt;&lt;br&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt;&amp;nbsp;1 point&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The administrator can edit all the details of a drawing&lt;br&gt;&lt;/b&gt;Again, this could be in-place or in a dialog.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1 point&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A user can add drawings to the system sequentially without having to re-enter all the data each time.&lt;br&gt;&lt;/b&gt;This should just involve a few changes to the existing 'add drawing' dialog.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; 1 point&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A user can up-rev a drawing (create a new revision by only changing the revision number and dates) &lt;br&gt;&lt;/b&gt;An even simpler use of the 'add drawing' dialog.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .5 points&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A user can edit the dates for a group of drawings for their department.&amp;nbsp;&lt;br&gt;&lt;/b&gt;A single date picker should take care of this after enabling multi-select for the list of drawings.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .5 points&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The administrator can archive a project.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate:&lt;/i&gt; .25 points&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The administrator can un-archive a project.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Estimate: &lt;/i&gt;.25 points&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3097651" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/The+adventures+of+Toby/default.aspx">The adventures of Toby</category><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/User+stories/default.aspx">User stories</category></item></channel></rss>