The awkward moment in software development happens mostly when you find out that some large part of your fancy project has been written by someone else in a better, shinier and more standardized fashion. This happened to me yesterday as I discovered that there already is a better API for generic functions than the one I have written. Oh yes, and it is called std::tr1::function (or boost::function for the poor fellas who still cannot use the goodness of Technical Report One). The good news is that I was doing it mostly right from the beginning, so the migration will not be painful. The bad news is that I still will have to migrate and document the code even more than previously, but since it is not a very large part of my project, it is completely okay.
More words on software design
(If I am becoming boring, skip this post)