There are two different philosophical approaches to when a release should occur.
1) Release when featureset X is complete
2) Release at time Y
Agile literature talks about turning the “normal” develpment process on it’s head by cutting features to meet timeframe. But in reality, time is always the deciding variable (as anyone who has been through a waterfall deathmarch can attest.)
[Quality and budget are other variables, but can be thought of as special cases of features and time, respectively.]
One thing Agile does try to stress is the awareness of this reality up front, and the mitigation of it by using frequent interations of small featuresets, so that you have a limited set of completed, and hopefully high quality features at any point in time — in case the budget (time) runs out; rather than a larger featureset of incomplete and potentially lower quality features.
I started this as a comment on a previous post called Modeling Products and Projects.
I described the following models:
Product > Release > Features
Project > Milestone > Tasks
restated as complete sentences:
The release of a product contains a set of features that have been implemented.
A milestone for a project consists of a series of tasks that have been completed.
But then a milestone is a marker describing a featureset, and a release is the completion of a series of tasks. Does this conflict my model?
[ There is definitely a correlation between release and milestone, since a release is typically at a milestone, using philosphy 1 (feature based release). But I stated that philosophy 2 (time based release) is almost always the reality. [Now I’m confusing time and accomplishment — scoping is the excercise of reconciling the two.] The idea is to get a realistic featureset completed within your timeframe, and the proposed solution is to build iteratively with smaller featuresets. But still, why does this model essentially “cross”?]