Journal Journal: Review: Decline and Fall of the American Programmer
I just finished reading 'The Decline and Fall of the American Programmer' by Edward Yourdon and the bottom line is that the book is well worth reading for the perspective on where the craft of software development was 15 years ago and where it needed to go. Whether we've arrived at the destination is an exercise for the reader. I recommend getting this book if for nothing else than to read the two appendixes; Yourdon's no-holds-barred evaluation of India as a future competitor in the software development market, and his recommended reading list. While many of the predictions about India have come to pass, just as many are still without life. There was a worry about Indian outsourcing putting the American programmer out of business but there are enough obstacles in the way that it will still take decades for the Indian market to compete. The path from providing cheap programming to fulfilling the value proposition is a larger leap than many had imagined. Yourdon spends a good deal of time discussing many of the 87 books on his list. You might be surprised how many of them are not computer books. I agree with his assessments that there are many lessons to be learned by the software craftsman (my term, not his) by studying disciplines outside software, be it mathematics, architecture, psychology, even philosophy.
The book seemed well organized. The order of the chapters presented material in a logical order and each had a separate bibliography so no having to look all the way in the back of the book for a reference. The index is present and functional but I would have preferred it to have a few more categories.
The most glaring thing about it is when it was published, 1992. Of course it contains dated material but that should not prevent you from at least skimming this book. Yourdon covers the subject with a depth that reflects much analysis which is refreshing considering that he must have known how quickly the contents would become obsolete. It becomes obvious that he places a lot of hope in tools to help improve the software development situation and hence there is a tendency for him to focus on the state of CASE tools. While I know that the tool vendor's have not given up on commercial promise of all-encompassing CASE tools, I became convinced that the tools for which Yourdon was yearning were more like the present day Rational suite, Rose, Requisite-Pro, RAD, etc. It may turn out that the CASE-type environment that has come the closest to what Yourdon describes would be the Eclipse platform. I hesitate to call it just an IDE because if also is an application framework, a development environment, not to mention the focus of many other non-development functions like writing blogs, playing games, and reading the news.
Here is how the book's chapters are organized.
- 1 - Introduction
- 2 - The Lure of the Silver Bullet
- 3 - Peopleware
- 4 - Software Processes
- 5 - Software Methodologies
- 6 - CASE
- 7 - Software Metrics
- 8 - Software Quality Assurance
- 9 - Software Reusability
- 10 - Software Re-Engineering
- 11 - Future Trends
- Appendix A - Software Technologies in India
- Appendix B - The Programmer's Bookshelf
Summary by Chapter
- Chapter 1 Introduction - Lays out the evidence that, however far we've come, we have plenty of room for improvement. Issues introduced are of cost, productivity and quality. Other perspectives are introduced like why we're in this mess and likely routes to extract ourselves from the quality quagmire of our own making.
- Chapter 2 The Lure of the Silver Bullet - Covers many of the efforts to address software development shortcomings with quick-fixes and the oft-mentioned silver bullet. Topics covered are programming languages, people, automated tools and techniques each with their own section: JAD/RAD/prototyping, structured techniques, Information engineering, Object-Oriented methodologies, reusability, and reengineering.
- Chapter 3 Peopleware - Takes a stab at the heart of the people-problems with software. Yourdon make good use of his many connections and uses plenty of real-life examples from badly-managed or doomed projects to illustrate why people are the primary reasons projects succeed or fail. He has lots of quotes from people giving their perspectives which I found very enlightening. His discussion of group dynamics reminded me very strongly of a section in 'The Blind Men and the Elephant' about how groups eventually self-organize.
- Chapter 4 Software Processes - Covers the evaluation of software organizations and how capable they are in managing software projects. This starts with the companies whose software projects succeed just as much by luck as by design through companies that have a well designed approach which allows them to repeat their successes to companies that not only succeed but are constantly improving their processes so they can succeed faster, cheaper, and better. It's short but sweet.
- Chapter 5 Software Methodologies - While the more recent methodologies aren't included, like Agile, Extreme, Scrumm, etc. his inclusion of the 'spiral' methodology somewhat foretells of the coming revolution. There is a good description of the methodologies in use as of the writing and how the field of software development has evolved over time. The different methodologies are broken-down and analyzed. He covers the differences between methods, methodologies, and life-cycles. The discussion of Structured Techniques, Information Engineering, and Object Oriented methodologies and how each new methodology stands on the shoulders of those that came before gives a good background to the current Agile/XP/Scrumm battles. Also, he mentions the real source of all those books on patterns, 'A Pattern Language' by Christopher Alexander.
- Chapter 6 CASE Technology - While there is much here that is out of date, there is also much that still applies. While the performance and capabilities that once held back CASE tools are now forgotten, several points still apply like repository compatibility, picking vendors, implementation difficulties, and lack of adoption.
- Chapter 7 Software Metrics - What surprised me the most about this chapter is how much work has already been done in this area and how many metrics have already been defined. The 'whys and whats' haven't changed but having answers for the 'hows' readily available should make it much easier to introduce metrics into current/future projects.
- The remaining chapters cover ground that has been covered many times before. They are still worth a quick read because Yourdon has a good grasp of the reality of how software projects operate and the limitations or obstacles that get in the way of success. Take advantage of the many references and anecdotes sprinkled through the chapters.