Unsurprisingly, software developers enjoy writing software. So much so, in fact, that they will often choose to write every piece of software they need to solve a particular problem.
On the face of it you could argue that this is a good thing - after all, writing software is what software developers are paid for!
The problem comes when you put our hapless software developer into a commercial environment. When writing software for a business, producing lots of code costs lots of money. On top of this, writing more 'fresh' code will inevitably lead to more bugs.
The propensity for a developer to write everything themselves has become known by the phrase "Not Invented Here" (NIH). This is mostly used in a derogatory way in businesses whose developers insist on writing all of their own code.
The alternative, of course, is to make use of other software which is available to the developer to solve different elements of the problem at hand. This software could be in the form of an open source project where the required code can simply be downloaded or a 'paid-for' library of code which performs a particular task.
The advantages to business are clear to see - using someone else's code saves the time of writing it yourself. If the code has been actively developed for a while you also stand a good chance of having a good number of bug fixes already 'baked in' to the codebase.
This approach to software re-use has been given the corollary "Proudly Found Elsewhere" (PFE).
The Danger of NIH
It has become increasingly popular to mock the software developer who has tendencies towards NIH. Speaking as someone who wrote their own blog engine from the ground-up, I have been on the receiving end of my fair share of mocking!
As a business owner and software developer, I can see both sides of the coin. If one of my development team decided to write a blog engine for one of our clients from scratch I wouldn't be too happy. But, as a hobby project, I was quite happy to do just that.
Commercial organisations must, of course, ensure their software developers are operating in a manner which is profitable for the business.
The danger is that by continually beating the NIH drum, businesses may find that they never actually create anything. Part of the value of any software business lies in the intellectual property they generate. By building software based largely on third-party code which the business doesn't own they are limiting the value of their business.
Another effect of this overzealous insistence on reusing other people's code is one of demotivating your development team. Developers are creative people. There's only so much satisfaction that can be gained from a career spent writing code to glue together other people's work.
Choosing Between NIH and PFE
So what's the right approach? Well - inevitably - it's a balancing act. There will (nearly) always be commercial considerations which make a good case for using code from elsewhere.
But just because there is an alternative to writing something yourself, it doesn't always mean you shouldn't. Just because something already exists, doesn't mean you couldn't do it better. Perhaps you could simply do it differently? You never know - different could turn out to be better!
So - when you have the opportunity, I say embrace the NIH in you and write some code! Create something, make it better than something which already exists, and add some value to your business while you're at it!