“Reinventing the wheel” has earned such bad connotations in the software development community that it’s hard to pinpoint when it turned from “if what exists is good enough, use it” to “if somethings exists, don’t think you can do better.” The emotion behind both those statements is wildly different and many people use the saying to push down people trying to do great things. Even if they fail at the immediate task, they might someday succeed. Don’t be the one who contributes to an extinguished passion.
When I was 13 someone said to me, “everything that can be done, has been done.” Engineering is what happens when you tell that person, “Fuck you.”
“Wheels” are invented by people. “Best Practices” are opinions of people at the time they are needed. Both have a very high chance of retaining relevance over time but should always be reconsidered. You can be the one to reconsider them. You don’t need to wait for a Fowler, Crockford, or a Katz to do it. Maybe you’re smarter than each of them.
Languages can stand to be redefined. New languages are important. You could create one today. Existing libraries aren’t the pinnacle of human achievement. You could be the one to make something better. Reinvent the wheel. Right now.
New wheels will always be developed regardless of what anyone says, but the people who are more likely to be able to develop a new wheel that better serves others are also more likely to be damaged by adverse community reaction. See the very real Dunning-Kruger Effect to read about why smart people doubt themselves and less-than-capable people have unbridled confidence.
Stop telling people “Don’t Reinvent the Wheel” as if you know better. Ask them questions.
“Why is this better?”
“What is this solving?”
“What did you learn?”
When you’re done, ask yourself if there’s something you should have “reinvented” by now.