I think you missed my point.
Creating something new is not the mistake. Creating something new without looking at what is already available is the mistake.
For instance, in your pet data dumper project, I bet you looked at
Data::Dumper to see if it would do what you wanted. It did not, so you probably looked for ideas about the API, how to
deal with circular refs, etc. So when time came to create code, you had the benefit of all that previous effort, allowing you to announce a module that already felt somewhat familiar and had more chance of being a successful meme.