Monday, July 20, 2009

Software engineering is dead, long live engineering of software

David M Williams has written about "Software Engineering" in ITWire on 20-Jul-2009. To quote:-
Tom DeMarco is co-author of one of the most timeless and seminal works on creating software, Peopleware: Productive Projects and Teams. Yet, this month DeMarco suggested to the IEEE Computer Society that maybe software engineering has had its day.


This first line of this 1982 title has been quoted extensively in the ensuing 27 years. DeMarco wrote, “You can’t control what you can’t measure.” To solve that problem software engineers have bravely attempted to uncover and analyse as many software metrics as possible.


Yet, DeMarco now reveals with the passage of time he has become uncomfortable with the views he originally espoused.


“Implicit in the quote (and indeed in the book’s title) is that control is an important aspect,” he says, “maybe the most important, of any software project.”


“But it isn’t.” He now says, citing examples of GoogleEarth and Wikipedia as impressive software products that proceeded without much control.


To illustrate his changed reasoning DeMarco refers to two hypothetical projects. Both will eventually cost about a million dollars. Yet, Project A will produce value of around $1.1m and Project B will produce value exceeding $50m.


It’s obvious that Project A absolutely must have tight controls. If the budget is exceeded or the software is delayed or the quality is lacking then the project runs a real risk of running at a loss.


By contrast, Project B has such a vast difference between its cost and its expected return that control can be relaxed. Obviously, matters of costs and deadlines and quality remains but ultimately the project is going to turn a profit. It would take things to really go haywire for it not to.


Thus, DeMarco muses, in reality the more a manager focuses on control the more likely they are to be working on project that is actually striving to deliver something of relatively minor value.


The problem of managing software development, then, he continues, ought not to be about such tight control and metrics as software engineering would stipulate. Instead, software teams should work on projects that deliver genuine value and managers need to reduce expectations for how much they will be able to control the project.


....a software team ought to go about incrementally adding pieces to the whole of the project in order of relative value, documenting and testing as they proceed, ready to package and deliver the product at any time the project manager dictates it is finished.


DeMarco says it still makes sense to engineer software, but that’s not actually what the term “software engineering” has come to mean.