Book Recommendations (Non-Java)


This page lists some of my current favorite non-Java related books. All of the works below are non-fiction. Many are technical. And all have, in some way or other, been helpful or inspirational to my work...or just plain interesting. A lot of these aren't surprising--the Alexander and Tufte books are on the shelves of many computer scientists I know (but then we're a pretty inbred lot).

(If you're looking for recommendations on Java books, I've got a page here that lists some strong contenders.)

There's a fair amount of stuff here (since I keep adding material when I realize I've forgotten a book I like), so I've organized it by category:

I've provided brief descriptions of why I think the books below are great; you can click on the cover image to jump to the book's page. Please help support this web site by buying your book on Amazon.com!


Patterns of Design
The books below are all important reading in the field of software patterns--the notion that software development produces common idioms of expression. By recognizing, understanding, and cataloging these idioms we can write better software.

Perhaps surprisingly, if you're unfamiliar with the patterns movement, the first three books below have nothing to do with software! Chris Alexander is an architect who first espoused the notion of patterns in the context of the design of physical places. This work was later inspirational to the software patterns community. The fourth book, Design Patterns, is the bible for software patterns by the "Gang of Four" of the patterns community (Gamma, Helm, Johnson, and Vlissides).

I highly recommend the software book if you want to start exploring patterns for your own work. If you're interested in some of the inspiration (or are curious about architecture), the Alexander books will fit the bill.

    The first in Chris Alexander's series, The Timeless Way of Building introduces the notion of patterns in architecture through a set of examples. Alexander's (somewhat Utopian) vision is that we can recognize, exploit, and then design in patterns that provide functional benefits to the people that reside and work in our structures. The patterns that are present in a space--whether put there knowingly or unknowingly--can help bring create a sense of community. In the past few years, the computer science community has seized on the idea of patterns as a fundamental notion in software development, inspired by Alexander's work. The principles of patterns have also been the main organizing tool for the Jini Community.


    The second in the series, A Pattern Language presents a catalog of patterns--what Alexander calls a language--that represent common features in architecture. These features aren't low-level constructs like archways or columns, nor are they simple aesthetic embellishments. They're higher-level systems of parts that serve some particular role in the lives of the occupants of the structure. This book is a catalog of architectural patterns; but even if you are not interested in architecture per se, the form of the book still serves as an excellent prototype for the various software patterns catalogs that have since become available (see Design Patterns below).



    The third book in the series, The Oregon Experiment presents a case study of a university campus design, informed by Alexander's notions of patterns. Of the three, this book is the one perhaps most closely tied to architectural practice, and therefore of the least utility to software developers. I'd recommend it if the previous two caught you up in Alexander's ideas as they relate to architecture, but if you're looking for background in software patterns, this is the one to skip.



    The "Gang of Four's" book on design patterns in software is a classic, and should be required reading for any object-oriented programmer. This book is perhaps the most important text in the software patterns community. The first part of the book provides some rationale behind the notion of patterns (in case you want to skip Alexander's books), and covers patterns as a higher-level organizational and compositional structure than objects. This is all great material, but the real value of the book is in the second part, which provides a catalog of patterns that will be useful--and many will be recognizable--to any O-O programmer. If you haven't been exposed to patterns, this book will be a great resource, and may change the way you think about programming.



Interface and Information Design
One of my big interests is interface design--both visual and non-visual interfaces. This book category represents some of my favorites in that area. The first three books listed here are, quite simply, the bibles of using visual design to convey information. Don't let the boring titles fool you--these are beautiful books that set the standard in visual design.

The next two books deserve some explanation as to why they're in this category. One of the things that current interfaces usually do a lousy job of is representing time. Most GUIs provide a window into only the current, instantaneous state of our applications. Most approaches to representing time (animated movies, state change graphs, etc.) are either clumsy to interpret, or clumsy to search. In contrast, comic book artists do an outstanding job of representing time in an easily-comprehensible way: you can page (browse or search) through a comic book quickly, salient information stands out, and so on. Part of this is due to the medium itself, but largely it's due to the sets of symbols and styles developed by the artists, and to which we've become attuned. Understanding Comics is a guide to these symbols and styles, written in the form of a comic book. It's an easy read, but there's an astonishing amount of depth here. Highly recommended for interface designers as well as those who just want to understand the subtle magic that's being worked on them by comic book artists.

Michael Polanyi's book, The Tacit Dimension, is one of the inspirations of the ubiquitous computing work at Xerox PARC. Polanyi's text discusses what it means for information to be tacit--that is, implicitly understood and usable, rather than explicitly and consciously thought about. The oft-missed idea behind ubiquitous computing isn't simply that small devices will be available everywhere in our surroundings. It's that by integrating themselves into our environments, they will fade into the periphery, becoming tacitly accessible to us. Be forewarned that while Polanyi's book is thin, it's also quite dense.

    There are three books in Edward Tufte's amazing series on visual information design. Don't be put off by the boring titles; these books have been called the "Strunk and White" of information design. And they're as visually appealing as they are informative. The first, The Visual Display of Quantitative Information , deals largely with visual charts, and provides a set of principles for creating representations of data with clarity and integrity. Computing Reviews calls it "the century's best book on statistical graphics." The second, Envisioning Information , is an even more visually appealing volume, which deals with maps, color, and a broader range of "visualizations" of information than simple graphs. This one is my personal favorite...and it's beautiful enough to make a good "coffee table" book. Finally, the third, Visual Explanations: Images and Quantities, Evidence and Narrative , which came out only a couple of years ago, deals primarily with representations of dynamic data. All three of these books are visually stunning, and at least the first two have already made it to the status of modern classics.


    An outstanding book on the form of comic art, written in the form of a comic book. While definitely not a UI book, I think it has important implications for interface design. The magic of this book is that even if you don't care about comics, it'll give you an appreciation for the craft of comic art. If you do care about comic art, this is probably the best book available to guide you through the subtle cues that artists use to carry the story (hence the subtitle, The Invisible Art). Highly recommended.


    Philosopher Michael Polanyi's book explores tacit knowing--the unaccountable, inarticulate component of knowledge that is acquired experientially, rather than by precept. This is knowledge that is "personal" or "subjective"...in contrast to the purely exteriorized (and exteriorizable) forms of knowledge espoused by objectivism. This book is one of the philosophical bases of ubiquitous computing. UbiComp aims to make computation available within this tacit dimension (so that it is always available, often unspoken, and seldom consciously acknowledged), rather than by the usual visual, focused, attention-centered forms taken by current computers.



Social Histories of Technology
These books are about technology, its history, and its impact on society. Be forewarned that I'm a history dilettante at best. But these books are interesting and lively accounts of the introductions of new technologies and how they've changed our world.
    The subtitle of this book is Social Meanings of a New Technology, the new technology in this case being electricity. This book is an engrossing--and often hilarious--account of the introduction of electricity in America and the attempts to apply the technology to new uses. Example: "light girls," who were servants employed by the wealthy to wear shoes with metal plates and walk on conducting "outlets" embedded in the floor. Their job? Circulate through a soire wearing light-emitting clothing, bringing illumination to partygoers.



    Louis Bucciarelli's book looks at the engineering design process--how artifacts are designed and built--from a social perspective. Far from being some sort of idealized, individual process, design is (big surprise) completely interconnected with and influenced by the social setting in which it occurs. Negotiation, uncertainty, and ambiguity all influence the myriad individual decisions that constitute the design process, and affect the final result. Good reading if you're curious about the process of design, or are a practicing engineer.




Social and Cultural Studies
Absolutely nothing to do with technology here, although I suppose you could argue that the Metaphors We Live By book has some lessons for interface design. The works here are simply a cross-section of "social studies" books that I happen to like.
    If you've never read the history of the HMS Bounty and her crew, you owe yourself to learn about it. This book captures the Bounty's history (all the way through the crew's time on Pitcairn Island), but is much more. The central thesis here is that Bly was the victim not of his own bad captaining, but of his lack of understanding of the Royal Navy as a place of theater, pomp, and circumstance. You can read it for the history or read it for the ethnography, but either way it's an excellent book.



    This book is a cultural study of Disney World consisting of a number of essays on the park and its inhabitants. Published by Duke University press, the book can tend toward academicspeak. But even if you're not interested in cultural studies, the anecdotal tales--particularly from the chapter on "Working at the Rat"--make for great conversation.




    Lakoff and Johnson's book is an exploration of metaphors--not just as a linguistic construct, but as a fundamental basis of how we experience the world. The book presents a precise theory of metaphor and the way our cultures and experiental realities are defined by the metaphors we've internalized. The authors are professors of linguistics and philosophy (respectively) but, perhaps surprisingly, the book is an easy and quick read for even an interested layman such as myself.



    This book is an investigation of human behavior, and how we appear to others. It's full of fascinating examples of behavior--both accepted and outside the norm--drawn from various human societies. Goffman's main tactic is to frame our presentation of ourselves in the terms of theater. Captain Bligh (above) would have done well to read this book before setting foot in the Bounty...



    Winifred Gallagher's book looks at how place--our surroundings and environment--affect our behavior, mood, and lifestyle. Gallagher is a journalist, not an architect or psychologist, but she manages to condense an amazing amount of material into a thin and easily-readable volume. A fun, easy read for people who care about where they live and work, and the architecture around them.




C++ Books
I don't really program in C++ any more, but it used to be my language of choice. So I thought I'd say a word about two books that I think are tied for the title of second most important book for any C++ programmer (the first being Bjarne Stroustrup's The C++ Programming Language, in whatever edition is current).
    Definitely not a beginner's book! But if you're an experienced C++ programmer, James Coplien's book is an invaluable reference to a set of extremely useful--and very C++ specific--idiomatic uses of the language. The techniques here provide ways to implement program features not directly found in the C++ language (such as "virtual" constructors, and "polymorphic" objects which have can (appear to) change their implementation types after construction). This book saved my butt.



    Scott Meyers' book is more suitable for C++ beginners and intermediates than Coplien's, above (in fact, I'd say it's required for beginner and intermediate programmers). A more accurate title might be, "Here are 50 ways you're likely to screw yourself with C++, and how to prevent them." It's thin, it's informative, it's essential. Meyers' has a new book called More Effective C++, with 35 more specific tips, but I don't do C++ anymore so I haven't read it. :-)




Xerox PARC
(This is in the "biting the hand that feeds me" category.) The Xerox Palo Alto Research Center has an, errrm, interesting history. The first two books below talk about that history, particularly its most (in)famous episode: the creation of many of the foundation technologies for today's computers (single-user computer, windowing user interface, ethernet, object-oriented programming). The final book is a look at the PARC of the present, and talks about our great artist-in-residence program, led by Rich Gold.
    The first and most famous book of PARC's history. Fumbling the Future has long been out of print (Xerox-orchestrated conspiracy?) but has recently been re-released. It's a great read, albeit a disheartening look at how difficult it is for an existing corporate culture to bring about radical change in the face of technological innovation. I'm not sure why this book was ever out of print, and I'm not sure why it's back now, but it's an engrossing read.



    Dealers of Lightning is a more recent history of PARC and its involvement with the Alto personal computer. It also "goes a little easier" on Xerox management at the time (some have said it lets them off the hook). Dealers of Lightning makes a flashy counterpart to Fumbling the Future, above.




    The PAIR (PARC Artist In Residence) program is a coupling between technology-savvy artists and art-interested technologists at the Xerox Palo Alto Research Center. PAIR is predicated on the belief that artists should be engaged in the design and creation of digital media, rather than simply consumers of whatever is "tossed over the wall" by engineers. This book presents the history of PAIR and looks at a half-dozen or so of the past PAIR projects.



Go back to Jini Planet

Keith Edwards
kedwards@kedwards.com


Copyright 1999, W. Keith Edwards