Saturday, October 14, 2006 5:13 AM
by
dodyg
No Silver Bullet
"Ada and other high-level language advances. One of the most touted recent developments is Ada, a general-purpose high-level language of the 1980's. Ada not only reflects evolutionary improvements in language concepts, but indeed embodies features to encourage modern design and modularization. Perhaps the Ada philosophy is more of an advance than the Ada language, for it is the philosophy of modularization, of abstract data types, of hierarchical structuring. Ada is over-rich, a natural result of the process by which requirements were laid on its design. That is not fatal, for subsetted working vocabularies can solve the learning problem, and hardware advances will give us the cheap MIPS to pay for the compiling costs. Advancing the structuring of software systems is indeed a very good use for the increased MIPS our dollars will buy. Operating systems, loudly decried in the 1960's for their memory and cycle costs, have proved to be an excellent form in which to use some of the MIPS and cheap memory bytes of the past hardware surge." (Brooks, Frederick P.)
This is a seminal essay written in 1984 by the author of "mythical man-month", one of the foundation book for software management.
This essay pretty much outlines that there are two difficulties in software development.
1. Accidental Difficulties.
2. Software Difficulties.
Accidental difficulties refers to system or programming language limitation that makes developing software difficult (such as having to manually manage memory in C, using Assembly to write an application, etc).
The other refers to the difficulty of creating the software itself, the planning, design, etc, etc.
His point is this, no matter what kind of technologies or whatever C# 5.0, etc, writing software would still be difficult because that is the nature of software development. There is no such thing as technological silver bullet where one technology (LINQ 4.0) solves the fundamental difficulties of software development.