We have written extensively in the past about build vs buy and have always concluded that buy would be the option to pursue for any medium to large initiatives in enteprises. Aside from benefiting from global repository of best practices standardisation and quicker rollouts,one key factor is the disillusionment with developing solutions ground up. (Via eWeek)Industry research shows that some 45 percent of all software development projects in 2003 were canceled, with another 30 percent completed late and/or with reduced features. "This trend is not headed in a positive direction, and failure rates have risen over the past 10 years. Recently, we have seen huge projects at both the Department of Defense and the IRS fail," says,Behlendorf, CTO of collabnet. Excerpts with edits and my comments added:
What lies behind these failures are
- slow feedback loops from inception to use,
- high underlying technology turn,
- poorly documented prior systems and requirements,
- the growing difficulty in estimating work, and
- demotivated developers,
- A project-oriented mindset also "kills the community," & the life cycle of a software project does not end on a ship date. Teams often throw away the development artifacts they created along the way, or place them in obscure locations."
- As a result of all of these factors, true software reusability is just a myth. While some companies have built asset repositories, they tend to have tarballs of source code and searchable metadata at best," Developers also have scant incentives to properly prepare their components for reuse by others or to reuse others' work.
- Software components are not like bricks that are simply stacked on top of one another, he said. "Essentially, all software has bugs, all software needs adaptation to new platforms over time, new requirements cannot always be wrapped around or above existing code, and APIs are conversations between components and need to evolve over time".
-The software development process must be seen as an ongoing environment, where interdependence is implicit and allows coordination between projects, thereby stimulating creativity, Discussions and online decision-making—where so much knowledge is created—must be captured, as often the code does not speak for itself and the documents and specifications are incomplete or inadequate.
- Measuring a project's success is always critical, and those companies that adopt a more open development approach internally should achieve a more graceful and continuous life beyond the product's release. This should make it easier to bring in new developers, and there should be fewer conference calls and less of an oral culture.