Although scientists and engineers may learn more from experiments and projects that fail than from those that succeed, the ethos in the scientific and engineering communities is to regard failures as worthless. Most researchers prefer not to study failures, and reviewers generally recommend against publishing reports of failures. Thus, this book, devoted to large-scale software failures, is both unusual and potentially a valuable source of case study data about why large software projects fail.
The book opens with introductory material that defines software runaways and presents categories for classifying runaway projects. The definition of “software runaway” is vague, and is not made less so by connecting it to “crunch mode” and “death march” projects. The next 200 pages present 16 runaway projects. Although Glass is identified on the cover as the author rather than the editor of the book, these pages mainly comprise 21 reprinted articles from the business press, the information technology press, and academia. Glass has written introductory blurbs and one of the articles. The articles cover some of the best-known software development disasters of the last 20 years, including the Denver International Airport baggage-handling system and the Federal Aviation Administration’s Advanced Automation System. The final 25 pages of the book review the findings of a research study  and suggest preventing runaway projects by better management and by risk and issue analysis.
All the articles are well written, but they are often addressed to nontechnical readers; tend to focus on economic, legal, ethical, political, and social consequences of project failures; are quite short (lengths range from 2 to 31 pages, with an average of 9 pages); and are mostly by reporters who presumably lack software development and management expertise (there is no information about any of the authors except Glass). Hence, the credibility of the information is highly questionable. The complete lack of any unifying terminology, theme, and focus also makes it difficult to glean reliable conclusions from this material. This difficulty was emphasized when I found myself questioning Glass’s categorization of most of the articles. For example, he classifies the New Jersey Department of Motor Vehicles system as a technology failure, but it seems to me to fit better in the efficiency failures category. These problems combine to make this material all but worthless as a basis for conclusions about the causes and prevention of large software project failures.
Researchers will also be disappointed by the inconsistency of the citations. Citations sometimes appear in footnotes and sometimes at the ends of sections; there is no comprehensive bibliography. Also, some citations are incomplete, and there are gaps in the literature cited. The book has an index, a foreword by Alan Davis, a preface by the author, and information about the author, but no other supplementary material. An article about large software failures in the United Kingdom  is the basis both for classifying the articles and for much of the concluding discussion. Unfortunately, this article is not reprinted in the book.
This book can be valuable for two audiences: software engineering students, and new project managers with no prior software development experience. Students often misconceive software development as an ivory tower activity exclusively concerned with technical issues. The articles in this book make clear how important software is in the world, how important management is in software development, and how horribly things can go wrong. The last is also a crucial lesson for would-be software project managers, as are the various pitfalls illustrated by these 16 disasters. The articles are easy and fun to read, and the impact of many of these failed projects is so profound that they cannot fail to impress even the most overconfident novice. Thus, the book would make a good supplementary text in a software engineering course, or a good gift for a new software project manager.