Book Recommendations

In order to maintain a competitive edge as a consultant, I read a lot. While periodicals are essential for tracking the industry's pulse, books provide a depth of coverage that typically reflect years of experience. The following books have been valuable to me working on distributed computing systems projects over the last few years.

Current Reading

I always seem to be reading more than one book at a time. Currently, I am somewhat spellbound by Software Runaways, a compilation of massive software failures by Robert L. Glass. My fascination is not totally unlike that which many experience when driving past an automobile accident, and I find myself feeling lucky when I consider projects I've worked on that did not fail but which shared many of the problems of the projects described.

I am also slowly but surely plowing my way through the Second Edition of Bertrand Meyer's tome Object-Oriented Software Construction. Like Glass, although to a somewhat lesser degree, Meyer is a contrarian, which appeals to me in that I am constantly forced to question that which I believe to be true. Not all of Meyer's arguments are equally compelling, but there is a great deal of truth and beauty in the development environment he constructs. If you wonder whether or not you'll enjoy the book, read chapter 22 "How to find the classes" in your local bookstore.

Books To Which I Constantly Refer

These are the books I keep reaching for, even as they become dated.

  • Rapid Development by Steve McConnell.
  • The Mythical Man-Month by Frederick P. Brooks, Jr.
  • Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.
  • Java in a Nutshell by David Flanagan.
  • Programming Perl by Larry Wall, Tom Christiansen and Randal L. Schwartz.
  • Inside OLE, 2nd Edition by Kraig Brockshmidt.
  • Build a Web Site by net.Genesis and Devra Hall.

Software Project Management and Organization

No doubt about it, keeping a software development project on track has always been incredibly difficult, and the situation is getting worse as the technological choices increase, more complex systems are requested and the talent pool of available, relevantly trained professionals shrinks. The following books have helped me cope with this. (Note that there is also some crossover from the books listed in the next section.)

  • Rapid Development by Steve McConnell.
  • The Mythical Man-Month by Frederick P. Brooks, Jr.
  • Debugging the Development Process by Steve Maguire.

There's also a somewhat naive, but very worthwhile, discussion in Chapters 4 through 6 of Building Client/Server Applications with Visual Basic, which ships with the Enterprise Edition of the product.

Software Architecture, Design and Quality

Very few individuals who make their living constructing software have the training necessary to produce robust designs. This appears to be more the result of so few having formal training rather than the quality of training itself. Every substantial undertaking needs someone who understands the basis of the material covered in these books.

  • Object-Oriented Software Construction, 2nd Edition by Bertrand Meyer.
  • Code Complete by Steve McConnell.
  • 201 Principles of Software Development by Alan M. Davis.
  • Software Architecture: Perspectives on an Emerging Discipline by Mary Shaw and David Garlan.
  • Object-Oriented Software Engineering by Ivar Jacobson, Magnus Christerson, Patrik Jonsson and Gunnar Overgaard.
  • Object-Oriented Modeling and Design by James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy and William Lorenson.
  • Designing Object-Oriented Software by Rebecca Wirfs-Brock, Brian Wilkerson and Lauren Wiener.

Object-Oriented Miscellany

This is other good stuff to know about object-oriented systems.

  • Object-Oriented Technology: A Manager's Guide by David A. Taylor.
  • Business Engineering with Object Technology by David A. Taylor.

C++ Programming

There is a huge range of abilities in the C++ programming community. The two best ways to advance one's skills are to work within a team of highly skilled individuals and read books written by highly skilled individuals. It is particularly important to develop facility with the programming idioms that represent best practices. The following books cover virtually all the idioms I've come across. (I include Gamma, et al., here because the book has been of much use when coding in C++. It has made the transition to Java very smoothly.)

  • Effective C++ and More Effective C++ by Scott Meyers.
  • Taligent's Guide to Designing Programs by the Taligent Press team.
  • C++ Programming Style by Tom Cargill.
  • Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

Specific Technologies

Sometimes you can't even get started without the right book.

  • The Data Warehouse Toolkit by Ralph Kimball.
  • TCP/IP Illustrated, Volume I by W. Richard Stevens.
  • UNIX Internals by Uresh Vahalia.

Technology and Business

There's a lot of fluff in this arena, but at least one book is well worth the read, even though it pre-dates the popularity of Internet/Intranet technologies.

  • Paradigm Shift by Don Tapscott and Art Caston.


Copyright © 1996-1998 Scott Nichol.
20-May-98