Reinventing the wheel?
Reinventing the wheel or not, may be a big problem!
Many people think reinventing the wheel is bad, I think so too. Most of the time, for a programmer, making a new library but not using the available one is very very a stupid thing, it will waste your time, disrupt your team’s process, or even worst, the package with your hard working may have no valuable.
Reinventing the wheel is evil, but why sometimes many people still try to do it? Maybe one or more of the following reasons:
1, Task is too simple, programmer can complete it immediately.
2, Other libraries can not be integrated into project easily, making a new one seems more easier.
3, License problem, some GPL libraries can not be used in commercial project, programmer has to reinvent.
4, Arrogance, thinks other programmers are fool.
5, Interesting, wants to understand something more deeply, so making a new one to study is a good way.
Reinventing or not?
Sometimes, I like reinventing the wheel, only because I want to learn something. For example, there are many network libraries now, but I still want to known how to make a high performance network library, so I make a new one and learn a lot of thing, you can see it here.
But most of time, I will try to find an available library to solve my problem to save time. If the library can not fit my needs, I will try to modify and enhance it but not reinvent.
Restraining the reinventing desire unless have to.