My team is going to be using Visual Studio Team Services for an upcoming project. The Agile tools let me organize User Stories and Tasks hierarchically like this:
Epic > Feature > User Story > Task/Bug
Let's say that I am designing a Student Org (club) management system for high school students and advisers. Students and Advisers can join clubs, be officers, organize events, send announcements, etc.
Let's take the Announcements feature as an example:
- As a Student, I want to read Announcements for the clubs I am a part of so that I am aware of schedule changes.
- As an Adviser, I want to read Announcements for the clubs I am a part of so that I am aware of schedule changes.
- As an Adviser, I want to send Announcements for the clubs I am a part of so that my Students will be aware of schedule changes
- As an Administrator, I want to send Announcements to ALL school clubs so that I can make them aware of scheduling conflicts.
If we assume these are well-written User Stories (which they might not be), I get confused when my development team and I sit down to split these items into development Tasks. We can cover parts of several User Stories with single development Tasks. For example, we have a tool that generates CRUD actions for all of the layers from UI to DB simply by defining the properties of an Announcement. So, the parts of several "send" and "read" User Stories are completed in a single development step.
From what I've read, each User Story should be independent of the others and that makes sense. But each of our User Stories shares the "Generate UI and DB" Task because this is how we create our base-level UI (before we customize it). I shouldn't write a "Generate UI and DB" Task for each User Story. That's too much redundancy. But I don't know how to write a "Generate UI and DB" task that must be completed before any of the User Stories can be started.
I have similar confusion with our permission system. We have different account types like Student, Adviser, and Admin that all have access to the Announcements page, but have different functionality within the page (I captured this idea with the User Stories above). We can write the permission system to be modular so that it can be used for other Features, but I don't know where to write the Task to create a "modular permission system".
I guess this whole User Story thing has me confused. Yes, it's great for capturing functionality of a system, but when it comes to thinking through development Tasks, I can't seem to wrap my head around it. Any advice would be great.
TL;DR: Some of the programming I do for one User Story can be used elsewhere in our project for other User Stories (permission system, etc). How do I write/organize Tasks for User Stories to illustrate this possibility?