The chunk is manageable and fulfilling!
When developing software you have to bite off only what you can chew. An iteration allows you to divide your development efforts into chunks. Each chunk delivers a functional set of features that add value to the application. Better yet, the chunk contains only the functionality that the developers and stakeholders agree can be delivered in a specified time frame and still add value.
Bite off only what you can chew!
The process starts by accumulating a list of everything the stakeholders could possibly want the application to do. This is the menu. Next comes the selection. The stakeholders and development team determine the time frame in which the chunk will be delivered. Is this a quick lunch or a seven course meal? Once that is agreed upon stakeholders and developers negotiate what can feasibly be included in the time frame.
A short time frame may allow for a single large feature, a soufflé for instance, or several smaller features a bowl of soup, a sandwich, a refreshing beverage and a slice of pie for desert. Each feature is up for discussion. Stakeholders present their case for what they want to include and the development team explains the effort involved in making that feature a reality. Each developer within the team has an equal voice in the negotiation. Developers that disagree on the effort required to deliver a feature each have an opportunity to express their reasoning behind their estimates. Estimation and explanation continues until a mutually agreeable number is reached.
The order is off to the kitchen!
After the features have been assigned their values and the chunk is filled with the agreed upon components the team gets to work on delivery. Developers set about writing code and testers test the code as daily builds are made available. As questions arise the product owners are consulted immediately for direction. This keeps the chunk on track and ensures that the “meal” delivered was what was initially ordered. Nothing is worse that ordering apple pie but being served Brussell sprouts. Constantly checking output against expectations ensures the final result will be to everyone's satisfaction.
That was fantastic!
Once the final set of features has been delivered it is time to digest the chunk and plan for the next one. Everyone involved in the process should provide feedback on the experience. Good and bad aspects should both be noted. The good so it can be repeated in future chunks. (I really liked the peanut butter you used on the chicken!) The bad so it can be avoided. (That waiter only spoke pig-latin, that made it really slow to place my order!) The intent is to improve the process for the next time. Every chunk will have its share of surprises. It should be the intent of the digestion process to make sure those surprises that can be planned for are in the next chunk.
How can you benefit from dividing your efforts into deliciously satisfying chunks?