This certainly isn't an original thought, but there's nothing like having to teach something to other people to force you to learn it. I'll be the first to admit that my business card should bear the title "Professional Dilettante," and the programming facet of my life is no exception. Too many times, adding a new trick to my bag works something like this:
- Find code that does something similar (either from the work repository or the internet).
- Copy and paste.
- Tweak until I break it so badly that I have to learn just enough to un-break it.
- Convince myself that I actually know what I'm doing.
Then comes the moment of truth, when I have to explain the technology/technique to someone else. Which is when I realize just how much chewing gum and bailing wire is holding my understanding together...and how many assumptions I've made that don't necessarily withstand questioning.
But for all that, that's not a bad experience to have. Not that I'm offering, y'understand, but it'd do me whole buckets o' good to have to pitch a presentation at my fellow programmers every month.