So you’ve made the transition to Agile and have a laundry list of user stories. Congratulations! If you’re getting the hang of it the user stories are probably in smaller chunks than you’re used to seeing. As time goes on you might start to lose track of what you’ve already put in as user stories, particularly for a large or mature application. This can lead to confusion, duplicate user stories, missing functionality, and missed dependencies. How do you keep it all together without a big functional spec that has all the hoped-for functionality defined in one place?

The answer is pretty easy – use Parent and Child user stories. These are exactly as they sound – the parent user story is a container for a set of related functionality. For example, you might have a parent user story called Customer Profile Maintenance. Under that parent could be child user stories for Customer Menu, Add Customer, Edit Customer, Delete Customer, and Print Customer Report. In this way you can take a look at Customer Profile Maintenance in most tracking applications and see all the pieces that go into it, where each is prioritized, and where in the cycle each is.

One big rule for easy and consistent handling – never track specific work on the Parent/Container user story. If you need to add a parent user story because you’ve found other associated tasks for an existing user story, that’s fine. You can usually nest the user stories, although that becomes unmanageable pretty quickly so I don’t recommend it. If you keep the parent user story as just a container there will never be any confusion about whether work on the child user stories is complete. When all the child user stories are complete the parent user story completes.

 If you use parent/child user stories for grouping of complex associated functions you’ll be able to prioritize them separately, still be able to note dependencies amongst the child user stories, and record interdependencies with other user stories – all without losing track of what you’ve recorded, completed, and prioritized.