I've been involved in several projects which basically involved replacing an "old" system with a "new" system. Invariably, the pattern has been that practically no one on the team building the "new" system has any real knowledge of the "old" system. Whenever I questioned this, I've been told that this is purposeful... by not knowing the "old" system, the team is able to think differently and not be limited by how things were done there. So what happens is there is usually only 1 or 2 people on the team that know anything about the "old" system and they are consulted whenever a question comes up about how the "old" system did something.
But what always seems to happen is that after the "new" system is delivered, there are always questions from the user of the form "How do we do X (which was easy in the old system) in the new system?" For the developers, this is often the first time they have heard of X. So they have to go and research what X is and often the answer they give back to the users is "you can't" or "you can, but it's really awkward".
This does not seem right to me... it seems to me that a lot would be gained by having every developer of the "new" system know the "old" system really well, and that wouldn't necessarily kill their creativity, if they have decent design and development skills.
Any thoughts on which approach is best?