The C3 team needed to improve performance of their GemStone-based application. They tried two different ways to do it:
The first time, they brought in a GemStone guru who worked until all hours and made all kinds of changes to the system. The system performance improved. However, the developers had no collective understanding of which changes had which effect. There were strange GemStone ways of coding things used all over, and the developers didn't know which ones were most important or whether they should be used everywhere or what. The team didn't know how to maintain the code, and didn't know where, and where not, to use all the special stuff.
The second time, they brought in a GemStone guru. They sat with him during all his work. He made all kinds of changes to the system. The system performance improved. Then the guru went away. The team removed all the changes he had made, and by themselves put changes back in. They put them in with full understanding of what each one was, they put in none that had little or no effect, they packaged GemStone-specific changes back into their GemStone/VisualWorks compatibility layer, keeping the changes simple and localized. In short, they brought the team's collective knowledge to a higher level, without substantially increasing the system complexity.
Guess which way worked better.