- Shopping Bag ( 0 items )
From Barnes & NobleThe Barnes & Noble Review
Today's most thoughtful programmers are engaged in some pretty deep thinking about software development nowadays. On first glance, some of it looks awfully abstract (but then, that's how most of us reacted to objects and patterns, first time we encountered them). On second glance, this stuff isn't "merely" profound: It can help you get your job done a whole lot better -- starting right now.
Take, for example, Agile Software Development by Alistair Cockburn, the codeveloper of IBM's first object-oriented methodology and creator of the well-respected Crystal family of methodologies. Cockburn, who's interviewed more real-life developers than just about anyone, begins this book about as abstractly as you can get: by proving the impossibility of accurate communication between human beings. (A category that even includes software customers, developers, and the writers of requirement specs!)
If we can't communicate, how can we build software that meets our goals? By "managing the incompleteness of communication." And by considering development as "a cooperative game of invention and communication." What, Cockburn asks, would software development be like if we weren't developing software? Maybe it would be like a community attempting to write epic poetry together: a team made up of both temperamental geniuses and average workers, facing difficult requirements, communications, and synchronization pressures. Or, perhaps, it would resemble a cooperative team of rock climbers facing real danger with limited resources, a careful plan, the flexibility to improvise, a clear goal (the summit), and a driving desire (to have fun on the journey).
Cockburn's metaphors prove extremely fruitful and lead toward a set of powerful insights that each of today's "agile methodologies" seems to be groping towards in its own way. For example, when you think of developers as participants in a cooperative game, you realize they're not the antisocial drudges they've been made out to be. They actually love to communicate, as long as you're talking about something that's technically relevant to them. (Which explains why pair programming is turning out to be far more popular than many pundits expected.)
A software development project is an ecosystem, says Cockburn, "in which physical structures, roles, and individuals with unique personalities all exert forces on each other." Since no two projects share the same collection of forces, no single methodology can possibly fit every project, and none will ever work "straight out of the box." (Which explains why so many attempts to impose a methodology fail so badly.)
"Lightness" is a blessing, but it's possible to be too light. Cockburn shows how to balance lightness against sufficiency, by introducing the "sweet spots" that naturally make software development easier, and helping you compensate where your projects don't quite fit the ideal. (For example, agile methods rely heavily on face-to-face communication, but when your development team is scattered across multiple time zones, how can they be adapted to provide sufficient documentation so that everyone can work together, without sidetracking developers from their primary responsibilities? How can agile methods transform "tacit" team knowledge into long-lasting organizational wisdom?)
Every chapter in this entertaining book ends with a "What Should I Do Tomorrow?" section -- and you really can do this stuff tomorrow, without jumping whole-hog into a specific agile methodology. (Reconsider your work products based on what you need to achieve your primary goal, and to protect the teams that'll follow you. Increase the use of mechanisms that draw on the strengths of the specific individuals on your team. Try arranging for daily visits between programmers and business experts. Give more thought to the bottlenecks that could impact your project, and invent ways to use excess capacity elsewhere in the organization.)
Cockburn concludes by introducing his own Crystal family of methodologies, designed specifically to address the limitations of communication, the centrality of human beings, and the need for diverse methodologies, even within a single project. But whatever methodologies you adopt or reject, this provocative book is likely to transform the way you manage and participate in software development. (Bill Camarda)
Bill Camarda is a consultant, writer, and web/multimedia content developer with nearly 20 years' experience in helping technology companies deploy and market advanced software, computing, and networking products and services. He served for nearly ten years as vice president of a New Jerseybased marketing company, where he supervised a wide range of graphics and web design projects. His 15 books include Special Edition Using Word 2000 and Upgrading & Fixing Networks For Dummies®, Second Edition.