Showing posts with label Silver Bullet. Show all posts
Showing posts with label Silver Bullet. Show all posts

Sunday, March 30, 2008

Accidental Properties of Software: Programmer Productivity

While researching for these articles I ran across this blog entry describing something the author refers to as Yannis's Law: Programmer Productivity Doubles Every 6 Years.  The whole premise of the article is to dispute Brooks statement that there will be no order of magnitude improvement in the essential properties of software development.  The author goes on to prove that programmers are seeing a 11x improvement in software development since 1986.  There are two places this assessment is wrong.  First Brooks was looking for an order of Magnitude improvement in 10 years (by 1996) not 21 years (2007).  Second this is an attack on the accidental property of software (it's construction), not the essence of software, the mental crafting of the conceptual construct.

I do not dispute there are a great many cool tools and languages out there to increase programmer productivity, but we should all have seen the breakdown of the Software Development Life Cycle by now.  How much of the SDLC is related to software construction?  If we say it is 30% (which is probably a bit high) we are still looking at over 70% of the project time that is not being addressed by this improvement.  As we reduce the construction time to zero (which would be magic :-)), we are still only attacking the accidental properties of software.  What are we going to do about the other 70%?  We have still not addressed the essential property.

Saturday, March 29, 2008

Attacks on the Accidental and Essential Properties of Software

Over the next several months I will be posting articles that discuss various aspects of software and the state of the industry. These will be titled as either attacks on the essential properties of software or the accidental properties of software as defined by Brooks in my post I first learned about Agile Development….

Brooks went on to provide a clearer definition of Accidental and Essential Properties in No Silver Bullet Refired (Chapter 17 of the Mythical Man Month).  In particular Brooks uses Dorothy Sayers definition of creativity:

instead I follow the English  dramatist, detective story writer, and theologian  Dorothy Sayers in seeing all creative activity to  consist of (1) the formulation of the conceptual  constructs, (2) implementation in real media, and  (3) interactivity with users in real uses.[6] The part  of software building I called essence is the mental  crafting of the conceptual construct; the part I  called accident is its implementation process.

The goal is to try to discuss the progress towards a silver bullet for software development. These are my thoughts on progress in the methodologies and tools to make developing software easier. These are things we are doing as an industry to attack the Essential properties of Software. There are also that are just white noise interesting, fun and useful, but in the end just attacks on the accidental properties of software and have no real impact on our ability to quickly create quality software that attacks the essence of building software, or as Brooks says:

I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.

If this is true, building software will always be hard. There is inherently no silver bullet.

So lets look around for what we have done in the last twenty years to attack the essential properties of software and progress towards the silver bullet of software (from the essay No Silver Bullet written in 1986).