From my personal experience, NIH corresponds to the need to DIY to proper understand.
I often feel like I can't decide between options unless I at least built a super-basic, minimal version of the functionality.
The other aspect is this idea of mine that technology is ready for primetime as soon as it can be easily reproduced. People in our field have a sense of elegance - like every problem becomes trivial once you find the best abstraction.
And there is this "do one thing an do it right" idea.<p>How many bugs do fix by removing complexity that is unnecessary for your special case?
Is there a name for the opposite of NIH syndrome, where programmers only use external libraries and frameworks, and are totally allergic to the notion of writing in-house code?
IMHO, the only valid reason for "roll your own" is if the application needs 50x+ performance than what would be possible using existing solutions (as is the case described in this blog post). Otherwise follow the rules:<p>The three rules of software development:<p>1. Don't write code as there is a library that already does exactly what you want to do<p>2. Don't write code because you can combine several libraries to do what you want to do<p>3. Don't write code because there is some mega-framework, one subset of which does what you want to do
> NIH highlights situations where engineers side with reinventing the wheel due to a belief that building technology in-house will be better, quicker and cheaper than using an existing solution<p>In my experience, it's more like "due to an uncontrollable urge that building technology in-house will be more fun, more interesting, more pleasing than using an existing solution" :)<p>...not that I'm completely innocent in this respect.
As a marketing consultant, my biggest advice to clients is to never, ever build anything custom. Use Zapier to connect things, Segment to manage data flow, Shopify/Weebly to build the site, use Sumo to test site changes, etc. Building things custom just delays projects so much, especially in marketing where you don't even know if a project will achieve the goals you want.