Tales from the Trenches
The Disappearing Feature Trick
A prototype is a small program you write to learn something about a bigger system before you build it. If you build a prototype, for goodness' sake, learn from it. George Santayana said, "Those who cannot remember the past are condemned to repeat it." If you don't take the prototype's lessons to heart, what was the point of building the prototype?
In one project, our team built a prototype and then transferred it to another part of the company for implementation. They went off on their own for several months and created what they considered the final application without any feedback from the customers or the prototyping team.
When the customers saw the final product, they noticed that the implementation group had made several "improvements." Our project leader sat through a long series of meetings where the customers hammered the implementation team.
CUSTOMER: With this version of the system, how would I do this?
DEVELOPERS: Uh, we didn't think of that. I suppose you could use this roundabout method to do the same thing.
CUSTOMER: What if you changed the application so it worked this way? It would be a lot easier.
DEVELOPERS: I guess that would work.
CUSTOMER: That's the way the prototype did it. Change it back.
In the end, the implementation team spent a lot more time making the program work the way it did in the prototype. The customers were fuming. They didn't see why they paid us to build a prototype, paid the implementation team to build the final application with improvements, and then paid the implementation team again to remove the improvements.
Take the lessons learned from the prototype seriously, even if they aren't what you want to hear.
George Santayana also said, "History is a pack of lies about events that never happened told by people who weren't there." This doesn't have as much to do with prototyping—it's just a cool quote.