We’re rewarding the question askers & reputations are being recalculated! Read more.
1 of 1

Arguments about "reinventing a wheel" is often used in wrong context of choosing to use a library but it's hardly similar thing.

Let's say I'm evaluating a library 'forms-plus', that just got popular recently and helps to deal with forms. It has a nice landing page, modern cool graphics, and a -cult- (oops I mean community) around it who swear how it makes making forms great again. But "forms-plus" is an abstraction on top of "forms". "forms" was possible but cumbersome to deal with, so abstraction that makes it easier is becoming popular.

New abstractions are happening all the time. It's hard to compare them to wheels. It's more like a new control device and new manual to whatever-already-very-complicated-device you need to run.

Valuation of this new device "forms-plus" will look different depending on personal experience. If I never built forms before then "forms-plus" will be very compelling because it's easier to get started. Downside is that if "forms-plus" turns out to be leaky abstraction I still will need to learn "forms" anyway. If I was building forms without "forms-plus" then I will need to take into account time that I need to learn new tool. Upside is that I already know "forms" so I'm not afraid of abstractions on top of it. Short term benefits often will be greater for new starters because there probably wouldn't be new library if it didn't improve on something. Long term benefits will vary widely on quality of abstraction, adoption rate, and other factors already discussed in other answers.

After evaluating carefully benefits and negatives of using a new abstraction "forms-plus" vs using bare bone "forms" I make a decision. Decision is highly based on my personal experiences and different people will make different decision. I might had chosen to use bare-bone "forms". Maybe later in time forms-plus had gained more movement behind it and becoming a defacto standard. And maybe my own implementation over time got hairy and started covering a lot what forms-plus now is doing. People coming at this time will be drawn to criticize that I'm keen on reinventing the wheel and I should had used existing library instead. But it's also possible that at the time when I had to make decision about "forms-plus" there also was multiple other alternatives to "forms-plus", most of them dead projects by now, and possibly I gained by not choosing the wrong one.

In the end choosing right tools is a complicated decision to make and "reinvention of wheel" is not a very helpful perspective.