First half of the year books (blog entry from June):
- Manage It! By Johanna Rothman
- Object Models: Strategies, Patterns, and Applications by Peter Coad
- Prefactoring: Extreme Abstraction, Extreme Separation, and Extreme Readability by Ken Pugh
- Object-Oriented Program Design: With Examples in C++ by Mark Mullin
- Building Object Applications that Work by Scott Ambler
Second half of the year in books and my humble opinions on their content:
- About Face 2.0
- Object Thinking
- Systemantics: How Systems Work and Especially How They Fail
The list is shorter than usual thanks to two technical books I read, ahem, skimmed for information, but had no real intention of reading cover-to-cover:
- IIS7 Implementation and Administration
- SharePoint 2007 Unleashed.
About Face 2.0
Alan Cooper and Robert Reiman
About Face is a book I have contemplated reading for over 10 years but shied away because I am not a big fan of user interface work. About Face 2.0 is the second release of that book. (There is in fact a 3.0 version of this book put out in 2007.) I’m glad I finally got around to it. Like the book, I can put off UI development, but eventually I have to face reality and get it done, and get it done right.
The About Face author builds heavily on the most memorable aspect of another book I recommend called The Design of Every Day Things. This central theme is that we build the user interface to reflect the user’s model of the system, not our model and definitely not the implementation model. (I have a few notes here on this.) The book stresses making the user happy which requires us understanding their model along with their wants, needs, context, and motivation.
The writers are fanatics as you would imagine they would be to take the time to write a book on a subject obviously near and dear to their hearts. Some of their advice may seem a little impractical for the common business application developer, for example, cutting out people from magazines to help put faces on users. That said, this is not exactly bad advice, and very similar to the efforts Microsoft put into creating the personas of Mort, Elvis and Einstein. There is plenty of practical advice beyond the equivocal “user model” like trying to provide modeless feedback, not popping up windows for everything, designing for the probable case and providing for the possible, anticipating needs, avoiding clutter and too much on a single window, etc, etc. Great stuff for new developers and fantastic reminders for the experienced ones. I should skim my notes from this book every time I am about to embark on some UI development.
Object Thinking
David West
I can’t say I would recommend this book, but I did enjoy it. I like reading about people’s opinions and experiences applying object-oriented methodologies to applications, regardless if I agree or can even relate. The author attempts to explain how object-oriented developers have to change their point of view when designing software to a near radical extent. I agree there has to be a point-of-view shift, but the shift he asks developers to make outside of the context of a common business application seemed too, well, too out of context. Like many OO books it suffers from OO examples that are not from the common business application, but from a real-time application like a game, or user-interface-based app like a word processor, etc.
I have made it clear through out my blog that I am a huge proponent of object-oriented methodologies, but argue that the standard heuristics have to be adjusted to sit well with the common business application. This author is not in the same boat as me and often refers to objects displaying themselves on user interfaces, and relying on events to link up functionality, etc.
The author also divides up developers into two groups: those that are agile and those that prefer big upfront engineering methods. He completely ignores the hordes of no-separation-of-concerns-hacking crowd which makes up the majority of new and junior developers. This bothered me, but he may do this on purpose as he might be assuming they would never read his book in the first place.
I’m not sure who I would recommend this book to. I think the newer developer would be confused and the practical OO developer would be bemused. I assume it might be good for the strict engineering type OO developer he refers to. The book then reads like a case for agile development for that reader.
Systemantics: How Systems Work and Especially How They Fail
John Gall
Systemantics was probably my favorite read of the year. Like The Design of Everyday Things, this book is not about software development, at least not directly. This book addresses all the things that are arguably true about systems. The book refers to large systems like government and public school systems, and medium systems like city garbage collection, and even smaller systems like families, or a system for managing a small group of employees. These systems are all set up to solve or at least manage a problem the same way we develop software systems to do the same.
The author refers back and forth to these common systems as he explains over 20 truisms of systems, especially large ones. Some of my favorites include:
- First rule of systems design: do without out one if possible
- New systems mean new problems
- A large system produced by expanding a smaller system will not behave like the smaller system
- Things are as they appear to be, not what they are