And thats the problem. My greatest fear in software development is that I wont ship enough good stuff to my customer and my customer will cancel the project, even though really things are going just fine and really were doing good work and really were just about ready to start putting in the features you want and really its going to be a really great product and you really should be just a little more patient.
For me, this fear is well-founded: Ive had more than one project cancelled under me when the team had just the feelings noted above. So the main thing that I like about XP is that it is customer-driven and focused on delivering useful features, not nifty code like that above.
Therefore, even though I have learned something, and even though I dont begrudge the few hours Ive spent on it, because after all Im here to learn things, Ive spent those few precious hours not making the product better for my customer.
Furthermore, it isnt clear that this is even the best solution. There are some fairly serious issues with it. Its obscure, and its probably inefficient, not that Im very worried about that in this particular case. The code is going to be hard to read when it starts saying Perform(methodName). There may be a much more direct way to do what has to be done, and it might be possible to get rid of the duplication in a much simpler and more obvious way.
But not for me. Ive got this cool feature put into the code already. You know Im going to resist taking it back outand you know you would resist just as much if you had thought of this cool thing!