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!

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.

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.

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.
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.
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).
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. Go back to Jini Planet

Keith Edwards

Copyright 1999, W. Keith Edwards