NIH = Not Invented Here
So here at Microsoft we have a lot of really smart people. Unfortunately that seems to lead to a lot of NIH syndrome. That really wouldn’t be so bad if we had a broad enough definition of ‘here’. For me as an individual developer on my spare time, I’ll reuse just about any pre-existing source that I can legally use for a reasonable price. That includes 3rd party binaries at least until I prove them to be buggy, inflexible, or unsuitable for my purposes.
Here at MS you would think a reasonable definition of ‘here’ would be anything within MS. The sad part is a lot of people define ‘here’ as simply themselves: if I didn’t invent it, it must somehow be inferior to what I would have invented, and thus I would be better off to redo it myself.
In my 5 years at Microsoft and limited college experience I’ve seen several different build systems. Just to name a few: classic makefiles, shell scripts, GUI-based ‘projects’, Microsoft’s own build.exe (which is built on top of nmake and makefiles), NAnt, XMake, and now I’ve heard for whidbey the VC project system is going stand-alone (so you can build VC projects without the IDE, kind of like XMake is doing for C#) vcbuild.exe
That’s quite a few. Now here’s the sad part: several of these different build systems are used here at Microsoft. Some of them are even mixed together to build different parts of the same product!
Now unless your product really is supposed to be a build system (like the XMake team or the VCBuild team), why would anybody at Microsoft invent a new build system? To answer my own question: NIH Syndrome. Just to prove that NIH is alive and kicking I have discovered more evidence of new build systems being invented by non-build-system teams!
The good news is that at least this isn’t limited to developers. There are actually more testing harnesses than there are build systems. I only know that because of how hard it is to deal with bugs from other teams that the repro is “run this test in our test harness”.
Hopefully I never get NIH syndrome.
Open source could be the answer to NIH Syndrome, because I suppose that way everybody who cares feels like they had a part in inventing something. However, that can’t be totally true because there are several competing efforts even within open source. If it were, it seems like eventually all the really good features would get ported into the better product and the inferior one would just disappear.
Does anybody know any antidotes?