Not invented here and not written by me are both driving factors in reinventing the wheel when developing software.
We limit ourselves if we do not build upon the achievements of others. – Chad Dotson
Not Invented Here
I’m sure everyone has encountered developers that would prefer to implement everything themselves instead of using a library. An example would be not using jQuery or underscore (or comparable libraries) on a web project.
This is a serious problem for several reasons.
- It needlessly increases development time.
- It potentially leads to less robust code and/or increased testing time.
- It potentially leads to less maintainable code.
I’m not saying that libraries should always be preferred over your own code, but they should be strongly considered. If you choose to re-implement what a library gives you, you should prepare some defensible reasons for not going with the library.
More: Wikipedia
Not Written by Me
This is a more refined, narrower case of Not Invented Here. Those developers who don’t want to spend the time or have difficulty understanding code written by others often reimplement code because they view it as the simpler solution. This is a falsity and they hurt their overall code quality and momentum for it.
Some common things you will hear are:
- I don’t know what that code does.
- I would spend a shorter amount of time rewriting it. (Which is most likely a falsehood.)
The Core of the Issue
As I’ve said, I think the core of the issue is that we find it harder to understand what someone else writes vs what we write ourselves. We must apply programming best practices and resist the urge to reimplement the past. To grow, we must push past our tendencies and continue to move forward to bigger and better things.