The NIH Problem
A lot of programmers (myself included) seem to have a strong drive for NIH. NIH means “Not Invented Here” and in essence it’s the reasoning of a corporation or an individual that “Sure, Module X exists—but I could make it so much better if I wrote it all from scratch”.
NIH is not always a bad thing. If your situation is that the maintainers of Module X are using a too restrictive license and/or they won’t fix what’s obviously broken, then it might be for the best.
But, say you built an application for a company, and you wrote a feature that is impossible to change for some reason. The company hates it, even though it’s a minor detail. What would you tell them? I’d say “get over it!”. Perhaps not in those words, but I hope you see what I mean.
Perhaps we should also “get over it” when we look at 3rd party software. You have to consider why Feature Y isn’t implemented like you want it to. Is it really because the developers are good-for-nothings that have no clue what they’re doing, or do they simply have an alternative take on how things should be done? Can you reason that their solution is downright awful, and not even somewhat helpful? Is this issue big enough that it yields the entire piece of software useless? Is using Active Record over Data Mapper really that bad in your situation? Is it that awful to include BSD licensed software in your GPL application? Perhaps the answer to these questions are “yes” but perhaps not.
A problem arises when you find yourself in a community that’s too immature, like the JavaScript community. 99% of the times I look at 3rd party JavaScript I hate what I see. People working with JS need to learn how to program!—Oh wait, is this just NIH talking again? Most of the time, probably not. But I sure could learn something from this post myself.
As a system administrator I don't mind NIH at all. I'm simply happy about the fact that some poor programmer has done the grunt work for me :-P
Post new comment