Great Software Debates
Post date: Oct 08, 2011 4:57:56 PM
Davis has collected an interesting set of his previous essays on relevant issues for the software practitioner. He has appended a few questions at the end of each essay. That is all there is about actual debates in this book. The questions might stir debates in a classroom setting, or simply make you position yourself from a different point of view. This collection of essays is worth a look.
Funnily, a recurring theme in some essays is the use (and abuse) of software tools and techniques. The software development community has lived through many "silver bullets," which tend to be temporary fads. Oversold techniques are often easy to follow and misuse, because if they fail, they can be blamed, and our own egos are therefore protected. Unfortunately, that makes us look like lemmings (one of Davis' landmark essays). Throughout the book, you will be reminded that there are proven techniques that work, and produce moderate gains. Even "silver bullets" are good when properly used, obviously.
Management topics are covered in a whole section of the book. The author, a manager himself, describes the hard knocks that rookie managers suffer, and their most common mistakes, and even notes that a good manager has to disobey orders sometimes. As an entrepreneur, the author shares the lessons he learned at his own startup, as well as Ed Bersoff's lessons learned at BTG, providing an invaluable retrospective for those who aim to create a new company.
Another section of the book addresses requirements, one of the author's pet topics. He makes it clear that requirements have to do with understanding, not just with documentation. Requirements describe the external view of a system (namely, its phenotype), hence its object-oriented analysis limitations, as detailed in one of the essays. Some of the other essays in this section provide a good overview of the complete analysis phase, emphasizing requirements elicitation, triage, and volatility (as well as its inherent impact on estimation).
As someone who has worked in the industry, and also at universities, the author devotes another set of essays to technology transfer. The gap between researchers and practitioners is discussed, a gap that, surprisingly, exists in requirements engineering, where engineers are supposed to be able to understand their users' needs. As any good analyst would do, the author dissects the academic system, and highlights the severe limitations of the current educational model, where instructors usually don't have real-life experience in the topics they are supposed to teach, and incentives usually interfere with the ability to obtain practical research results.
Some personal recollections from the author complete the miscellaneous set of essays in the book. Since it could not be any other way, the perennial question about software development as an art or as engineering also crops up; a funny essay written by Jim Sanders highlights the parallels between writing music and writing software.
Even though most of the essays in this book are not new, they are as relevant today as they were when they were originally published. Two-thirds of the essays in this book will be familiar to IEEE Software readers, because they are rehashed from this bimonthly magazine (this fact should come as no surprise, since Davis is the former editor in chief). Despite this apparent lack of novelty, the topics covered by these essays deserve to be revisited with the benefit of hindsight, given that the current situation is not much different from what it was a few years ago. Moreover, the few essays that haven't been published before, and those that are harder to find, are valuable; they round off this excellent book.
This book deserves a place on any software engineer's bookshelf, next to Glass' book . Like that book, this one will "make you think about the things you might have been taking for granted." At least, it will make you keep your brain in gear, an essential quality for software engineers settled into their daily routines.
If you think you are already acquainted with Davis' recommendations, let his common sense and sagacity become widely known and passed on. Get a copy of this book for your manager if you are a developer, for your boss if you are a manager, or for your partners if you are an entrepreneur. I did.
-- Fernando Berzal, ACM Computing Reviews, 2005
 Robert L. Glass: Facts and Fallacies of Software Engineering. Addison-Wesley Professional, Boston, MA, 2002.