Sip from the Firehose: October 31, 2002 - Short Computer Books I've Enjoyed
London, England
Thursday, October 31, 2002
There are so many great computer books and so little time to read them all.
Many computer books have high page counts and take time to read. I
personally use the larger books as references for specific techniques,
algorithms, data structures, and ideas. What I really love are the short
books, the books with low page counts. I consider a great, short computer
science book to be specifically focused and are less than 300 pages in
length. Why chose what seems to be an arbitrary top end page count to
define a short book? I've read many good books in my 30+ years in the
computer industry. It's the tightly focused, short books, that have (what
I consider) lasting value, that I really enjoy and use. Here are a few
books that I think are worth listing.
Short, Wonderful Books
The Psychology of Computer Programming by Gerald Weinberg - I bought
this book in 1971 while I was still a computer science student in college.
While I loved working with computers, writing code, learning programming
languages, algorithms, data structures, compilers, and file systems, I also
wanted to have a deeper understanding of what I getting involved in. The
preface said it all, "this book has only one major purpose -- to trigger
the beginning of a new field of study: computer programming as a human
activity." This book was updated for the silver anniversary of its
original publication. It is a "must have and must read many
times" book. ISBN 0-442-29264-3. 288 pages.
The Mythical Man Month: Essays on Software Engineering by Fred Brooks
- written by the "father of the IBM 360". When I graduated from
college in 1973 I went to work as a real-time minicomputer assembly language
programmer at TRW in Los Angeles. The words "Man Month" where
used all over the place for project estimation and for the level of
effort. When Brooks' book came out in 1975, it was required reading for
most software engineers. While the lessons learned were associated with
the successes and failures of the IBM Operating System 360 project, the book
presented the essays on software engineering in a way that touched and
influenced me and many of my friends at TRW and most developers I've come in
contact with. A 20th anniversary edition is now available. ISBN
0-201-00650-2. 195 pages.
A Discipline of Programming by Edsger W. Dijkstra - this is a classic
book on the nature of programming, programming languages, algorithms, data
structures and more. I bought this book in 1976 and have enjoyed going back to
it time and time again. From the preface, "on the one hand I knew that
programs could have a compelling and deep logical beauty, on the other hand I
was forced to admit that most programs are presented in a way fit for mechanical
execution but, even if any of the beauty at all, totally unfit for human
appreciation." This book encouraged me to look at the beauty of a
good looking algorithm and to appreciate programming as a wonderful endeavor.
ISBN 0-13-215871-X. 217 pages.
Writing Efficient Programs by Jon Bently - a wonderful, short book on
how to think about and write the smallest, fastest programs. Using short
programs, code fragments, and "war stories" from real work, this book
helped me strive to get the most out of every statement, every loop, every
function. Jon was also the author of the "Programming Pearls"
column that I read each month in the Communications of the ACM magazine.
I've had the privilege to hear Jon speak several times. I've really
enjoyed his writings and discussions about "Little Languages" and
tight code. ISBN 0-13-970244-X. 170 pages.
Peopleware by Tom DeMarco and Timothy Lister - two authors, a lifetime
of experiences in building software, managing projects, and being consultants on
other software projects. The book presents experiences in a personal perspective
that puts people first and technology second. I love the title of the first
chapter, "Somewhere today, a project is failing". It is the
focus on the team members, on real people who build software systems, and on the
users that will use the programs that makes this book so special for me.
ISBN 0-032633-05-6. 188 pages.
Elements of Software Science by Maurice H. Halstead - another classic,
focused on treating the processing of writing programs as a science to drive the
prediction of requirements, error rates, effect of modularity, evaluation or
programming languages, mental effort, and more. This book came out in
1977, and is still one that I go back to when I am thinking about the craft that
we are engaged in. There have been many software estimation systems, but this
Halstead's work was the first one that I read that allowed me to think in terms
of projects, programs, and programming languages using scientific methods.
ISBN 0-444-00205-7. 127 pages.
eXtreme Programming eXplained : Embrace Change by Kent Beck -
Kent has been a speaker at our annual Borland Conference. He used to live
in the mountains near Borland's headquarters. He is the one who first
introduced me to the writings and work of architect Christopher Alexander and
software patterns. In this book, the father of XP, describes what XP is, lists
its guiding principles, and how the methodology works. In true Kent style,
the book is written in a simple, accessible style. Kent writes,
"These principles are not new, but when they're combined their synergy fosters a new and arguably better way to build and maintain software."
ISBN 0-201-61641-6. 190 pages.
Rules for Revolutionaries by Guy Kawasaki - Guy was a keynote speaker
at the 2001 Borland Conference in Long Beach. His keynote focused on
his 10 rules for revolutionaries covered in his best selling book. Every
attendee at the conference received a copy of the book, adding to the army of
revolutionaries driving our industry forward. Guys rules are: 1)
Jump to the next curve, 2) Don't worry, be crappy, 3) Churn, baby, churn, 4)
Break down the barriers, 5) Make evangelists, not sales, 6) Let a thousand
flowers bloom, 7) Eat like a bird, poop like an elephant, 8) Think digital, act
analog, 9) Don't ask people to do something that you wouldn't do, 10) Don't let
the bozos grind you down ISBN 0-88730-995-X. 224 pages.
Object Lessons by Tom Love - "learning by doing" is the
motto at my alma mater, Cal Poly San Luis Obispo. This book presents a
whole lot of lessons learned from numerous object-oriented software
efforts. It is longer than most of the other books I've listed, but it is
a quick read and also a great reference. The book includes lessons learned
about development, components, people, organizations, culture, and technology.
ISBN 0-9627477-3-4. 266 pages.
Algorithm Animation by Marc Brown - this book contains Brown's thesis
dissertation that focuses on "an algorithm environment for investigating
the dynamic behavior or programs." This book was recommended to me
back in the days when we were first adding debuggers to our development
environments. Looking at algorithms in program code and watching watching
memory and registers in a debugger gives you a simple way to see an algorithm in
action. Imagine being able to look at an algorithm in action
visually. Using ideas presented in this book, new views can be added to
design, coding, and debugging systems to help developers take control of their
algorithms and data structures. ISBN 0-262-02278-8. 186 pages.
Object-Oriented Technology: A Managers Guide by David A. Taylor - a
good overview for students, managers, and programmers. Of course, most
software developers now know and use objects, still this book gives a simple to
access introduction to objects and object oriented programming. This was
the paperback book that I recommended to just about everyone, managers and
developers, when Borland first added objects to Turbo Pascal and when we came
our with our first Turbo C++ version. ISBN 0-201-56358-4. 147 pages.
Object-Oriented Software Metrics by Mark Lorenz and Jeff Kidd - this
book identifies metrics that can be used to assess project progress and quality
measures for object-oriented projects. The book presents both background
on software metrics as well as advice for managers and developers on how to set
up your own metrics programs. ISBN 0-13-179292-X. 146 pages.
Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers
by Geoffrey Moore - Moore's landmark book presents the requirements for
successfully marketing high technology products to users. He presents the
adoption curve for high tech products and identifies the "chasm" that
defines a barrier between the successful early adoption of products (by
technically intelligent customers), and the rest of the universe of potential
buyers. This book is a great reference for everyone (executives, managers,
engineers, developers, assistants, etc) who is part of a company designing,
building, marketing, and selling high tech products. ISBN 0-88730-717-5.
240 pages.
Not An Exhaustive Book List
This book list is by no means complete. There are many other books that
can and should be listed above. I have only included the books that I have
bought, read, and liked. Do you have your favorite, short computer
books? Send me an email message and tell me about books that have
impressed and helped you, I may add them to the list.
Keep on hacking!

David Intersimone "David I"
Vice President, Developer Relations
Borland Software Corporation
davidi@borland.com