Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.
-- Pete Cordell
I'm currently working on a project time tracker, despite plenty of them existing already. I wanted to learn how to solve a specific concurrency issue without locking in the server application (I wanted to completely rely on the database to solve it).
I don't know if it applies to all programmers, I can only speak for myself -- but "it already exists" is only factored in when I need something, it never factors in when I'm in "learn and discover" mode.
We have to put up with a lot of redundancy in the software world, but the upside is that we have many programmers with a lot of useful knowledge/experience because of it.