During the initial requirements
and design sessions of my current project, we continually had people wanting to push
a lot of "future" requirements into the first phase. Our answer was always the same. "We'll
write a card for it so we don't forget about it, but we won't put it into the design until the time comes when
we need it."
This strategy saved us a
tremendous amount of grief, especially with regard to one of the fundamental building blocks of the system. We
were designing a model to be used for defining the possible combinations of product offerings.
The catch was that in about
6 months time a new corporate model was going to be released. We got numerous requests to try to predict and model
the inevitable corporate direction. We resisted, and instead modeled the product definition piece of the system
to reflect the current business practice, and only those portions of it that were relevant to our project. |
We kept the design as
simple as possible while still satisfying all project requirements. We practiced "you aren't gonna need
it."
After six months passed
the corporate model was postponed for another year. Meanwhile our project was considering a completely new and
different model based on expanded requirements.
If we had tried to guess
at a corporate model we would have needed months of rework to migrate to this new model. Because we kept our design
very simple, we could easily evolve our model into the new model. We estimate it will only take a week or two of
adjustments, which represents substantial savings. 
 
eXPerience Software |