No silver bullet

NO SILVER BULLET No Silver Bullet Software derives its value from, conformity, a property of its essence-a construct of intertwining ideas such as algorithms, data sets, request of functions and the relationship among data entities (Brooks, 1995, p. 2). Software must be able to conform to the complexities and needs of systems and institutions in which the software is intended for use (Brooks, 1995, p. 4). This is because, these complexities and needs differ from time to time, and from one interface to another, and because it is developed by various people. It important for software to conform, not because it is new in the market, or perceived by many to be the most conformable, but because conformation is based on other systems and interfaces, which cannot be, in any circumstances be simplified through redesign. Additionally, when software conforms to complexities and needs, there would be no cause of alarm with regards to changeability, complexity, and invisibility.
Despite the fact that the functionality and availability of software components have rapidly increased the need for writing new code has not significantly reduced. As noted by Brooks (1995, p. 12), acquiring and using off-the-shelf, open-source or commercial software components may be an easier and a cheaper way of software development, but, an issue of applicability arises. Software components are more generalized and as such may not be ideal in situations where the development of customized software is intended. Therefore, instead of relying on software components, developers are opting to write new code, since they believe that it would guarantee applicability of the software being developed. The need for writing new code has not reduced significantly because of the need to ensure that the software developed confirms with the complexities and needs of systems and institutions that the software will interact with. Software components, being more generalized may not guarantee conformity, especially with regards to interfaces and functionality. Additionally, changeability is an essential property that defines the quality and value of software. Developing software that can easily be altered to suit functionality needs when needed and when appropriate has today become very important. Some software components may not allow for changeability and, as such, developers opt to write new code rather relying on components since they can easily manipulate and alter the code they have written quickly and easily. In additional to changeability, software components are becoming less popular because they pose a challenge for developers when it comes to scalability. Adding additional functionality, and expanding the scope of software to a component may become a big problem; developers find it very easy to expand functionality and scope of a software whose code they have written anew. Another fundamental reason as to why the need for writing new code has not significantly reduced with the increase in the functionality and availability of software components is because available software components may not support certain functionality or be compatibly to certain new technology; for this reason, developers are forced to write new code so as to ensure that the intended and envisioned functionality is achieved and that the software developed is compatible to new/current technology.
Brooks, F. P. (1995). No Silver Bullet – Essence and Accidents in Software Engineering. The Mythical Man-Month (Anniversary.). New York: Addison-Wesley.