Another month, another pile of books---except that reading them never feels as onerous as that phrase makes it sound. Reading about new tools and techniques is to building software what watching a hockey game is to playing one; the older I get, the more comfortable I am letting the kids on the ice sweat while I cheer.
This month, I have several books to cheer about. The first, and best, is Brugali and Torchiano's Software Development: Case Studies in Java. It's a shame I overlooked it when it came out in 2005, because it would have been a great source of examples in the undergraduate software architecture course I taught this summer. This book walks readers through one design exercise after another. The actual problems range from parking cars to implementing a simple hardware description language, but they're not really what this book is about. Instead, it's about how to analyze a problem, invent a solution, and turn that solution into code.
Each chapter introduces or reinforces one aspect of this process: domain modeling, the use of state machines to model complex system, automatic generation of documentation, and so on. By chapter 20, the reader is in the middle of negotiation-based service configuration, without ever having strained a mental ligament. Brugali and Torchiano's English is very good, though a little stiff in places, and they assume their readers are more comfortable with math and abstraction than the typical North American undergraduate, but those are very small nits. Twenty-one worked examples of how to get from a problem statement, through class diagrams and sequence diagrams, to working code, is a great resource; I look forward to taking advantage of it frequently.
The second of this month's winners is Michael Owens' Definitive Guide to SQLite. SQLite is a small relational database, designed to be embedded into systems rather than used in client/server situations. It may not be as famous as PostgreSQL or MySQL, but it's a lot easier to set up, and is now showing up in a lot of applications that you might not think of as having databases.
This book covers everything from the relational model and syntax of SQL to SQLite's C API, the mechanics of writing extensions for it, and its internal structure. The writing is clear, the diagrams helpful (though some are a little bit fuzzy in my copy), and the examples genuinely add value to those you can find on-line. The chapter on SQLite's implementation is worth the price of the book, particularly if (like me) you feel you can't really use something well until you know how it works. Recommended.
Third up is a collection edited by Chris Bateman called Game Writing: Narrative Skills for Videogames. As the blurb on the back says, as games become more like Hollywood productions, good story lines become ever more important. Nonlinear, exploratory games and massive online roleplaying games can borrow a lot from older forms, but their creators are having to invent a lot that's genuinely new. How can you use narrative to keep a player on track, without her feeling like she's being manipulated? How can cut scenes and stock video enhance a game? What do they take away? Can games be funny? Can they be funny the tenth or hundredth time they're played? These are the kinds of topics that the book's dozen contributors address.
Like most collections, Game Writing is uneven, and I often found myself wishing for more concrete examples. However, as someone who once wrote a children's book, I found the comparisons between this new genre and the ones I've dabbled in fascinating. I've tried for years to convince my undergraduate students that being able to write is at least as important as being able to code. Most haven't believed me (or haven't believed me enough to invest time in improving their writing skills); I'll be curious to see if this book can help me change their minds.
Chris Bateman (ed.): Game Writing: Narrative Skills for Videogames. Charles River Media, 2006, 1584504900, 336 pages.Davide Brugali and Marco Torchiano: Software Development: Case Studies in Java. Addison Wesley, 2005, 0321117832, 630 pages.Mike Owens: The Definitive Guide to SQLite. Apress, 2006, 1590596730, 464 pages.