No Silver Bullet vs. Agile Software
In 1986, Frederick P. Brooks published No Silver Bullet, a small treatise that makes an important distinction in terms of software development–between accidental difficulties and inherent difficulties.
Accidental difficulties are things like a slow compiler, a difficult language syntax, etc. — things which can, by and far, be surmounted by technology, eventually–faster CPUs, more memory, and everyone’s happy!
Inherent difficulties, on the other hand, deal with difficulties inherent to software that will not be overcome by technology. Things like software complexity, good design, integration of complex parts, and so on.
While Brooks makes some good points, we can extract, from his article, why Agile Software methodologies increase the success rate of software projects by a great degree.
Complexity: Software is made up of multiple differing and complex parts. System-wide complexity is difficult to overcome. The larger a piece of software becomes, the more complex. Agile software solves this by using architectural spikes and iterative design–only the minimum necessary architecture comes out, and iterative design keeps the relative complexity low.
Conformity: Software is made up of multiple different parts and offers many different interfaces to mesh–between two classes, between interfaces, between users and the system, between the system and the underlying OS. Agile software solves this with early integration and iterative usability testing, where integration between different parties becomes resolved very early on.
Changeability: Software, once released, comes under pressure to change–change from external users, from coders, from testers, from stakeholders. Agile software solves this with iterative development which includes refactoring and burn-down–so architectural changes get implemented and bugs get fixed, before problems can grow and expand.
Invisibility/Abstraction: Software deals with invisible and abstract entities–classes, interfaces, delegates, database query plans, pointers–concepts that take serious brain-power to comprehend. While not unique to agile software, agile software solves this with UML diagrams, class diagrams, and other concrete geometrics.
So while there may be "no silver bullet" in software development, Agile Software methodologies provide a strong and compelling base from which to deal with the inherent complexities of software development.
By Ashiq Alibhai
Related Reading:
Other Interesting Posts
2 Responses to No Silver Bullet vs. Agile Software
Leave a Reply Cancel reply
-
Articles
- January 2011
- April 2010
- March 2010
- February 2010
- January 2010
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- February 2009
- December 2008
- November 2008
- October 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
-
Meta








Agile Software also weighs heavily on unit testing and test-first development, which helps make complexity a little easier to bear.
The magnitude of usability improvements is usually large. This is not a matter of increasing use by a few percent. It is common for web design efforts to result in a hundred percent or more increase in traffic or sales.