Beautiful Code by Andy Oram and Greg Wilson (O'Reilly Media)
Reviewed by Gary Pollice
Beautiful Code edited by Andy Oram and Greg Wilson is a beautiful book. Experienced developers sometimes forget the excitement they felt when they started programming. Beautiful Code brings back the excitement. Some of the best programmers in the world today contributed chapters to the book. Experienced programmers will renew their friendship with some of their contemporaries like Brian Kernighan and Jon Bentley, while new programmers will discover the wisdom of these pioneers. All readers will find new favorites as they read the code and discover simplicity and beauty in modern applications. Each chapter teaches the reader something about the design and implementation of beautiful programs implemented in various languages. The book includes plenty of examples of functional, procedural, and dynamic languages--some of them are mainstream, some have historical significance, and some may be the languages we use tomorrow. Beautiful Code addresses all aspects of producing great code, including debugging and testing. Each chapter opens up another view into the fantastic world that we were looking for when we decided to become programmers. This is a book that you will want to keep close by for those days when things get you down and you need to get away from your current problem and look into the world of truly beautiful code.
Manage It!: Your Guide to Modern Pragmatic Project Management by Johanna Rothman (Pragmatic Bookshelf)
Reviewed by Roland Racko
"Look at me, I'm right," say all the software management books. Manage It by Johanna Rothman doesn't have to say that because its encompassing wisdom and practical detailed hints speak with a clear voice giving a head slapping, obvious solution easily recognized as a practical fix for your current software management problem. The book's range is large and includes topics such as lifecycle planning, schedules, creating great teams, managing meetings, and product integration. But it is more than just exhortation and guidelines. For example, the section "Build Trust Among the Teams" actually describes how to accomplish that rather subtle human activity. The section on requirements gives the apparently offhand but remarkably significant tip to cleanly separate the GUI design documentation from the business requirements documentation. The book also answers little niggling questions with pointed sidebars where "Joe Asks..." and a succinct, pragmatic answer is displayed. Manage It distills a fine compendium of advice. When the other management books say "look at me," ignore them; look at this one first.
Myths of Innovation by Scott Berkun (O'Reilly Media)
Reviewed by Roland Racko
At some time in your life, you looked at an object that was frustrating your attempts to use it and said to yourself "there's gotta be a better way." That object might have been a piece of code or a programming protocol, but when you tried to improve it, you may have experienced dead ends and blind alleys. So, you looked for aids on how to add to your creative wiliness. Myths of Innovation by Roland Racko counterintuitively starts the other way, from a subtly more positive idea. It asks the question "what beliefs inhibit your natural flow of good ideas." The book bounces back and forth between the obvious and the almost imperceptible. Best of all, these myths are worth examining. I particularly liked the busting of "innovation is always good," "your boss knows more," and "good ideas are hard to find." And although the book is about myth busting, it implicitly says a great deal about how to be creative and hints that this is an abundant world, rather than a world of scarcity. For newbies to the programming world, it is very encouraging. For the pros, it reminds us of what we keep forgetting about the sources of our own expressiveness.
Release It: Design and Deploy Production-Ready Software by Michael T. Nygard (Pragmatic Bookshelf)
Reviewed by Roland Racko
There are code bugs, and then there are "what the heck just happened" bugs that spring up out of the hard drives like worms after a storm. The latter is a different kind of bug--a systemic bug rather than an incorrectly written piece of code bug, something that happened because of unforeseen interaction between widely separated components in the system. Release It by Michael Nygard explores the idea that a system should be built so that a failure in one component never brings down the rest of the components. Although this concept seems obvious, it is a relatively unsung idea in formal literature. This book makes the point that you don't find these kinds bugs by code reviews of modules in isolation. Instead, you have to be aware of their possibility at design time. It then proposes patterns to watch for when doing initial system design. I particularly liked the stability/anti-stability patterns that were presented. The concepts and patterns are sufficiently detailed as to be immediately useful in contemporary architectures. This is a front-of-the-shelf book for any system architect or designer.