Sometimes I start writing a module before I have done enough research. I've got things set up nicely on my laptop so starting a module, including a testing suite and all the trimmings, is really easy.
For instance, this week, before I really investigated CPAN.pm, I wrote a module to look at 02package.details.txt.gz. I learned a lot making the little module, like reading directly from gzipped files, but ultimately I trashed it all and used CPAN.pm.
I started with a bottom-up approach, but, in what biologists call convergent evolution, I converge on CPAN.pm. When I realized I was doing this, I figured I should just use CPAN.pm. Despite what you may have seen on GalaxyQuest, sometimes you have to give up and surrender. Just drink the frigging Koolaid!
I had been a bit resistant because I do not like reading the CPAN.pm code, but then, after a while, I realized I don't have to like using the code because it just works. I should not care what the code looks like because it should be a black box to me. I follow the interface and it does its job like it says it does. Sometimes I get behind-the-scenes when I should not.
Now, looking behind-the-scenes can be cool. For instance, I get to literally look behind-the-scenes at the Chicago Lyric Opera, which is all tradesman and union workers. They do some amazing things to create sets and move around literal tons of scenery. The Civic Opera House has an eight story shaft where they hang several opera's sets at the same time. It is all really heady. Sometimes, though, knowing how the tricks-of-the-trade work spoils the "Wow" factor of the show. I was blinded in the same way by looking at CPAN.pm's code.
Oh well, it is not like I have anything better to do.