Three Phases of Technology Adoption

A discussion at work today turned to how my most recent project (currently in testing) may be the first one moved to dotNet v3.5 as a pilot for the 2008 versions of Visual Studio, SQL Server and Windows Server. Once we find out what it takes to move a simple project to the new platform, we’ll start looking at moving the more complex systems over.
One of the new technologies being considered is LINQ. None of us have any hands-on experience with it yet, but this conversation led us to realize there are three distinct phases all projects go through when adopting a new technology:

  1. Refactor the entire system to heavily overuse the new technology, especially in manners where it was never intended to be used and/or is completely ill-suited.
  2. Refactor the system again in attempt to remedy the problems caused by the previous refactoring.
  3. Refactor the system with the next hot technology.

The planning to assure that this will be the time you finally break out of that cycle is spread across all three phases.