Most of the Agile projects (perhaps all) that I have worked on over the years have started with an express understanding of scope AND a fixed date for the delivery. One of the common myths I think people have about Agile is that when you 'go' Agile this issue goes away, it doesn't. By ignoring the need for some level of planning prior to taking on an Agile project, teams start with a deficit of knowledge (ie well groomed story backlog).
I'm a huge proponent of having teams take on their project backlog with an initial Discovery workshop that includes the entire team and can take anywhere from 1-5 days depending upon the size and scope of the project being considered.
I've used this approach to plan out a 6 month release with tremendous success, typically delivering more value than the stakeholder asked for and with virtually no defects.
I think this planning effort is key for teams to realize high levels of iteration productivity. The time to build context in your stories and features is not after the iteration (or train) has left the station.
Many of you, especially Product Owners, will make the assumption that it's a waste of time for the team to perform a Discovery session that builds out stories and acceptance criteria at a lower level for more than an iteration out. The concern that everyone has is that if we don't start coding immediately we'll be behind and won't make our commitment. The truth? Having a user story backlog that is well formed and understood by the team allows the team to stay focused and productive over trying to design and address context while trying to actually code the feature.
What do I mean by Discovery?
Once a team receives a project from their stakeholders with a set date for delivery, the 'scope' of the project then becomes the key to meeting the delivery expectations.
If the team just starts coding with the first few stories that are available they are already in story deficit, they don't have enough work to keep the iteration engine going, meaning Backlog Grooming, Pre-Iteration Planning and Current Iteration planning. High functioning Agile teams understand that the iteration engine only works when you have a product backlog that is clearly prioritized, has sufficient context and can be worked on with no real impediments.
For example if a team has a six month project which consists of 12 two week iterations the team needs to identify the following:
- Story Themes - What are the functional slices of the features/product you are delivering. Themes form the basis for building your release plan. Themes will hold the high level user stories that are identified in Discovery, typically greater than 40 points.
- Epics - These are the larger User Stories that are identified during discovery as they relate to the Story Themes. These will typically be larger than 40 points.
- Features - As Epics are decomposed they are further brought into focus as distinct features that can be worked on a independent units of work. Features will typically be sized between 21-40 points and have a much greater shared understanding by the team of what it will take to deliver this.
- User Stories - As teams continue to decompose Features that are able to get to the granular set of work, complete with Acceptance Criteria (such as BDD). These are the items that are addressed in iteration planning.
My experience over the years has seen teams be able to spend anywhere from 2-5 days working through the Themes, Epics and Features such that we have a strong understanding of how the project will unfold from a release standpoint and a lower level set of Features and User Stories that help UX work ahead of the Delivery team. This process has proven successful for the teams I've worked with who have tried it.
I'm not suggesting that an entire 12 iteration project needs to be flushed out to the user story task level, however getting further than the Epic level with a few features and a few stories will allow teams to be very focused on iteration level delivery on a consistent basis.
This effort can provide a higher level confidence level for the team with a small spike of investment in upfront planning.
Planning is an important element of successful Agile teams, don't short change it when working through new features/functionality.