One thing that I've seen a number of times in a number of different clients is the following:
- A team decides on an approach
- The team spends considerable effort building support mechanisms for this approach
- The approach that was decided on turns out to be invalid
- The has to scrap all the support mechanisms built for this approach costing the effort days/weeks or in some cases months of time
There are two ways to avoid or minimize this type of problem:
- Make absolutely sure that the approach you are taking does indeed solve all your problems and doesn't have any "deal-breakers" that would invalidate using the approach.
- If you can be absolutely sure of the approach, try to build your support mechanism such that they are as generic as possible so if your initial design approach is invalid you don't have to scarp all your work.
The may seems obvious, but this is one of the bigger product killers I've seen out there.