Forgot your password?
typodupeerror
Books

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.
Books

Journal Journal: Bibliography

Books I've read are marked with and asterisk (*)

The Elements of Style,Strunk and White
*You Don't Need a TItle to be a Leader, Mark Sanborn
The Elegant Universe, Brian Greene
*Nuts, Freiberg and Freiberg
*Decline and Fall of the American Programmer, Yourdon

Design Patterns: Elements of Reusable Object-Oriented Software, Gamma et al
*Refactoring: Improving the Design of Existing Code, Fowler et al
Domain-driven Design: Tackling Complexity in the Heart of Software, Eric Evans
Test Driven Development: A Practical Guide, Dave Astels
Working Effectively with Legacy Code, Michael Feathers
*The Mythical Man-Month by Frederik Brooks
Design Patterns by Gamma, Helm, Johnson and Vlissides.
http://www.antipatterns.com/
*Zen and the art of motorcycle maintenance
Elements of Programming Style
*Code Complete, Steve McConnell
*Rapid Development, Steve McConnell
Effective C++, Meyers
Software Project Survival Guide
Society of Mind
The New Turing Omnibus : Sixty-Six Excursions in Computer Science [amazon.com]?
D. Knuth, The Art of Computer Programming (Volumes 1-3)
D. Berlinski, A Tour of the Calculus
D. Berlinski, The Advent of the Algorithm
G. Polya, How to Solve It
P. Beckmann, A History of Pi
G. Lakoff & R. Nunez, Where Mathematics Comes From
Aho & Ullman, Principles of Compiler Design (1st Ed.)
Aho & Sethi & Ullman, Compilers: Principles, Techniques, and Tools
P. Freiberger & M. Swaine, Fire in the Valley: The Making of The Personal Computer
H. Sheldon, Boyd's Introduction to the Study of Disease
C. Petzold, Code: The Hidden Language of Computer Hardware and Software
Death March, by Ed Yourdon
Knuth.
Gerald Weinberg's The Psychology of Computer Programming.
George Polya, How to Solve It.
Gries, The Science of Programming.
Bentley, Programming Pearls.
Gamma, Helm, Johnson, and Vlissides, Design Patterns.
Abelson and Sussman, Structure and Interpretation of Computer Programs.
*The Pragmatic Programmer, Hunt and Thomas

Translucent Databases, David Weyner
Python Programming on Win32, Hammond & Robinson
Inside Windows 2000,
The Perl Cookbook,
Learning Python,
Design of the UNIX Operating System, Maurice Bach
The Design & Implementation of the 4.4 BSD OS, Kirk McKusick
The Design & Implementation of the FreeBSD OS (now)
Principles of Digital Audio
Linux IP Stacks Commentary
Linux Core Kernel Commentary
Secrets & Lies + Applied Cryptography + Beyond Fear, by Bruce Schneir
MySQL, Paul Dubois (the O'Reilly mSQL+MySQL book is CRAP)
Developing Apache Modules in Perl & C
Advanced Perl Programming, Sriram Srinivasan
*The Practice of Programming, Kernighan & Pike
PowerPC Computing, Jerry L. Young
Motif Programming, Marshall Brain
An Introduction to Database Systems, C. J. Date
Algorithms in C, Robert Sedgewick
Lions's Commentary on UNIX, John Lions
sed & awk, Dale Dougherty & Arnold Robbins
DNS and BIND, Paul Albitz
Graphics Programming Black Book, Michael Abrash
OpenGL Programming Guide, OpenGL ARB
Programming Windows 95, Charles Petzold
Zen of Graphics Programming, Michael Abrash
Mastering Turbo Assembler, Tom Swan
Tricks of the Game Programming Gurus, LaMothe (just for how bad it is)
        * The Pragmatic Programmer - Andrew Hunt and David Thomas
            http://www.amazon.co.uk/exec/obidos/ASIN/020161622 X/qid=1134059347/sr=1-2/ref=sr_1_2_2/026-9144908-4 132444 [amazon.co.uk]
        * Design Patterns - Gamma, Helm, Johnson, Vlissides [The Gang of Four]
            http://www.amazon.co.uk/exec/obidos/ASIN/020163361 2/qid=1134059220/sr=2-1/ref=sr_2_3_1/026-9144908-4 132444 [amazon.co.uk]
        * Agile Software Development: Principles, Patterns, and Practices - Robert C Martin
            http://www.amazon.co.uk/exec/obidos/ASIN/013597444 5/qid=1134059329/sr=1-1/ref=sr_1_2_1/026-9144908-4 132444 [amazon.co.uk]
        * Pragmatic Unit Testing: in Java with JUnit - Andy Hunt and Dave Thomas
            http://www.amazon.co.uk/exec/obidos/ASIN/097451401 2/qid=1134059311/sr=1-2/ref=sr_1_18_2/026-9144908- 4132444 [amazon.co.uk]
        * Extreme Programming Explained: Embrace Change - Kent Beck
            http://www.amazon.co.uk/exec/obidos/ASIN/032127865 8/qid=1134059288/sr=2-1/ref=sr_2_3_1/026-9144908-4 132444 [amazon.co.uk]
        * Test Driven Development By Example - Kent Beck
            http://www.amazon.co.uk/exec/obidos/ASIN/032114653 0/qid=1134059264/sr=1-1/ref=sr_1_3_1/026-9144908-4 132444 [amazon.co.uk]
        * Working Effectively With Legacy Code - Michael Feathers
            http://www.amazon.co.uk/exec/obidos/ASIN/013117705 2/qid=1134059203/sr=8-3/ref=sr_8_xs_ap_i3_xgl/026- 9144908-4132444 [amazon.co.uk]
        * ... oh yeah... and "Refactoring" by Martin Fowler. Definitely.

User Journal

Journal Journal: Psych IT

Why hasn't there been more study of the different psychological profiles of computer programmers?

Slashdot Top Deals

Much of the excitement we get out of our work is that we don't really know what we are doing. -- E. Dijkstra

Working...