In the 1970s, many large software development organizations were run entirely with in-house staff with little or no purchased software other than the operating system and compiler. While this trend started to reverse itself in the 1980s, software development organizations still remained notorious for having the "not invented here" syndrome. Such organizations will often write their own versions of common tools and utilities when perfectly suitable ones are available for purchase or reuse from other sources. Those with not invented here syndrome, of course, believe that any software their own group did not create could not possibly be as good as something written in-house.
Even in the 1990's, these trends still exist and are not necessarily isolated to one-off situations. A large tape backup software vendor estimates that ninety percent of system backups are still done with homegrown backup scripts. With all the different tape backup products on the market today, there is undoubtedly more than one package that would fit the needs of almost any organization. Sometimes, however, the problem is not the lack of available applications but the overwhelming number of them. Several Unix vendors claim to have more than 10,000 third party software applications available on their platform. Unfortunately, few IT organizations can afford to train their staff to use even one percent of this number of applications. The complexity and the diversity of today's software offerings is one reason some CIOs have decided to outsource some or all of their infrastructure.
Outsourcing is certainly the other end of the spectrum from "not invented here." Outsourcing, however, is not a cure all for all the support woes of a software development organization. If the outsourcer continues to use the same homegrown backup scripts, you are not solving your problems but simply making them more difficult to control. In general, you should outsource functions that are well understood by your organization yet not considered to be part of your core competency. When used appropriately, however, system integrators and outsourcers can be beneficial partners to your software development organization.
While many software development organizations consider other software vendors to be their partners, they often take a different approach when it comes to hardware vendors. Too often, project teams bring in the usual host of vendors when they are ready to make a hardware purchase and perform an evaluation highly tied to whoever has the best price/performance ratio that given month. As vendors tend to continually leap-frog each other in performance, this can be a very short-sighted way of making hardware decisions. By contrast, if you partner with one or two hardware vendors, they will be much more willing to share information with you about trends, future products, capacity planning, and provide other value-added services for your development team.
Finally, and all too often overlooked, the most important partners to your development organization are the internal or external customers of the software you are developing. They are the ones that ultimately pay for the system and decide your fate. Involving your customers early and often in the software development process is crucial to achieving the best software quality.