« Sunday Morning Non-Book Open Thread |
Main
|
Sunday Afternoon Open Thread »
August 07, 2011
Sunday Book Thread
If you've been in the workforce for more than five years or so, chances are that you've been through at least one re-organization -- even service-oriented firms like restaurants and retail stores go through these things periodically. And management, no matter their line of business, loves their fads and trends.
Six Sigma, Total Quality Management, ISO 9000, and other "quality management" processes come and go. On the software development side, I can't even count the various development methodologies I've had inflicted on me over the years: waterfall, spiral, structured programming, object-oriented programming, functional programming, rapid application development (RAD), Extreme Programming (XP), Agile Development, and so on. And of course every new methodology comes with a variety of books and tools -- being a cynic, I suspect that many of these development methodologies are mainly a way to sell books and software to other firms.
Many of these fads fade away after a few years as the technology changes, and their books and tools fade with them. But occasionally (read: rarely) a book comes along that remains relevant and useful no matter what methodology a development team chooses to follow -- they do not espouse a flavor-of-the-month fad, but rather establish good engineering practice that survives paradigm shifts.
One such book is perhaps the foundational book of all software development: Fred Brooks' The Mythical Man-Month. This book remains insightful and relevant even decades after its original release.
Another such book is the "Gang of Four" book (or the "Gamma" book): Design Patterns: Elements of Re-Usable Object-Oriented Software. Of the gigantic paper mountain of books written about object-oriented software design, this is one of the few books to survive. I've used this book for years as a guide on how to model software systems, and it has proven quite useful even as technology changes.
A newer book, which may or may not survive the test of time, is Mike Cohn's Succeeding with Agile: Software Development Using Scrum. (Scrum is a term borrowed from rugby to describe the process of developers getting together to hash out their approach to a given software design.) "Agile development" is popular both in the software field and more widely in industry, and it seems to fit the new decentralized "smaller, faster, better" philosophy of downsized businesses better than old monolithic models.
One of my favorite "team dynamics" books is Patrick Lencioni's The Five Dysfunctions of a Team. This book isn't just about software development teams, but about any team environment, and it is full of good, hard-headed advice on how to form and manage effective teams. It's one of those rare business books that's actually wise in addition to being explanatory. (This book often strikes some people as "cutesy" due to the pseudo-fictional "parable" format, but I actually liked that approach because it wasn't as dry as the usual business-oriented tome is.)
I am a notorious skeptic about using development methodologies for software -- I've seen too many of them come and go over the years to believe their magical promises of productivity and efficiency. Ultimately (and as always), it boils down to the team, and then more specifically to the individual. No book or method in the world can substitute for individual skill, drive, and initiative. I think that too often the managers at many companies think that process can somehow iron out their people problems, and this inevitably leads to projects that fail. It's rather like cooking: if you don't start out with quality ingredients the food will taste lousy even if it looks good.
What's everyone else reading?