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.
Collected readings and ramblings of Graeme Bentley, Principal, GbIS Consulting, Melbourne, Australia.
Monday, July 20, 2009
Software engineering is dead, long live engineering of software
Thursday, June 25, 2009
Finding a Fair Price for Free Knowledge
TEN years ago, a piece of software called Napster taught us that scarcity is no longer a law of nature. The physics of our universe would allow everyone with access to a networked computer to enjoy, for free, every song, every film, every book, every piece of research, every computer program, every last thing that could be made out of digital ones and zeros. The question became not, will nature allow it, but will our legal and economic system ever allow it?
This is a question about the future of capitalism, the economic system that arose from scarcity. Ours is the era of expanded copyright systems and enormous portfolios of dubious patents, of trade secrecy, the privatisation of the fruits of publicly funded research, and other phenomena that we collectively term "intellectual property". As technology has made a new abundance of knowledge possible, politicians, lawyers, corporations and university administrations have become more and more determined to preserve its scarcity.
So will we cling to scarcity just so that we can keep capitalism?Or will capitalism have to evolve into some new kind of digital economics?
The roots of agile project management
Here’s a brief history of agile project management. By brushing up on these fundamental concepts, you’ll gain insight into the challenges and problems that agile techniques are designed to resolve.
In 1998, Harvard Business School academics Robert D. Austin and Richard L. Nolan studied large software projects. Their study, which questioned many of the fundamental ideas of IT development and project management, produced these key findings:
- The first flawed assumption is that it is possible to plan such a large project.
- The second flawed assumption is that it is possible to protect against late changes.
- The third flawed assumption is that it even makes sense to lock in big projects early.
Watts Humphrey, a respected IBM researcher, followed this study with a paper outlining his Requirements Uncertainty Principle, which asserts that:
"For a new software system, the requirements will not be completely known until after the users have used it."
Hadar Ziv of the University of California followed soon afterwards with his Uncertainty Principle in Software Engineering, which states:
"Uncertainty is inherent and inevitable in software development processes and products."
Friday, May 15, 2009
IBM touts 'stream computing' for real-time data analysis
IBM is bringing "stream computing" to the IT industry with new software that the company says analyzes thousands of simultaneous data streams to provide insight that helps businesses solve their most challenging problems.
...stream computing takes a fundamentally different approach to business analytics by analyzing data in continuously updated streams of information from multiple sources, rather than static files pre-loaded into a data warehouse.
Friday, May 02, 2008
User Interface Implementations of Faceted Browsing
Just as it is important to choose the proper knife when slicing-n-dicing vegetables, it is critical to prescribe a suitable user interface to support faceted filtering. Faceted filtering allows you to narrow down a large list of objects to a manageable size by applying flexible combinations of attribute filters in any order. Rather than forcing you down fixed paths within a website’s information architecture, faceted filtering allows you to multi-dimensionally slice-n-dice the information in a manner that best accommodates your specific needs. A user interface that optimally supports faceted filtering must expose its robust functionality in a way that expresses affordances, controls complexity, and follows existing standards that have been pre-established across the web.
- You Know What You Want
- Filtering Sequence
- Rich & Complex or Basic & Simple
- No Such Thing as a Free Lunch
- UI Design for Faceted filtering
- What’s Happening on the Web
- Slice-n-Dice or Puree?
(See also Decision Tree Diagram for selecting anappropriate filtering UI)