Roughly 30-odd years ago, Frederick Brookes challenged the IT community with the notion that there is no single innovation in software development that will result in an improvement in quality by a single order of magnitude. His essay, “No Silver Bullet” is still actively discussed in academic and professional circles and while the core theme being disseminated remains intact, the approach through the use of the Aristotelian Substance Theory to illustrate the parallels between Software Design and Software Development provides a unique view to the reader in terms of where some of the innovation and improvement in software development practice can have the highest levels of success, while providing the reader an unprecedented understanding of the core competencies required in software engineering.
Advances on the accidental component of software engineering which can ultimately be summarized as the development portion of the engineering process, has allowed developers to easily apply programming constructs in a reliable, consistent and optimal fashion to ensure the delivered artifact is written in the best way possible, and while concepts like High-level programming languages, What You See Is What You Get (WYSIWYG) and Model Driven Architecture (MDA) sometimes allows for better implementations, developing an entire application in a database (no matter how well your code is written) will still limit the quality of the application you are engineering.
I would like to think that the essay is somewhat responsible for organizations and technology providers as a whole to shift their focus to the “essential” components of the engineering process, such as Architecture and Design. Though it might not always have a direct reference, the words of Brookes from the 1980’s seem to attract inferences to the approach many are taking these days.
The mushrooming of design authorities, centres of excellence (CoE’s), competency centres (xCC’s) and other related governance structures to frame, guide and ultimately provide oversight and reference architectures, principles, patterns, guidelines and standards for designing as well as reviewing designs that ultimately get implemented surely provides for consistent, and improved quality of enterprise systems. The biggest question yet to be answered is, does it really, and if so, by how much? Could this be the silver bullet Brookes speaks of?