Friday, June 19, 2009

Top 5 Software Engineering Books

During my classes, I like to recommend books that are related to the given courseware. One "theme" that tends to be requested again and again: books that help a good developer become a great developer.

Here are my top 5 books that meet this goal (in no particular order):

1) Freeman, Elisabeth, Eric Freeman, Bert Bates, and Kathy Sierra. Head First Design Patterns. O'Reilly, 2004.

While there are many books on Design Patterns - this is by far the best introduction I've read. Design Patterns are a way to recognize and solve types of problems that happen over and over again.

2) Bloch, Joshua. Effective Java (2nd Edition). Prentice Hall, 2008.

Typically, the shelf life of a book that is based on a specific version of a technology is pretty limited. Bloch's book is one of the few entries in this category that has remained very relevant to writing code in Java. With a recent update in 2008, the book is still one of my favorites: contains information about rules one should follow when writing java (i.e. if you override equals(), you must override hashcode()).

3) Hunt, Andrew and David Thomas. Pragmatic Programmer, The: From Journeyman to Master. Addison-Wesley, 1999.

A list of tips on how to be an excellent software developer - this book is programming language agnostic.

4) Fowler, Martin, Kent Beck, John Brant, William Opdyke, Don Roberts. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.

One of the most misused terms I hear in software is "Refactoring." People often use it when they mean "Rewrite my code." Refactoring is much more subtle - it's the application of algorithmic processes to existing code to make it more maintainable / flexible, etc. This is the primary text on the subject.

5) Cockburn, Alistair. Writing Effective Use Case. Addison-Wesley, 2000.

Writing excellent software starts by understanding the task at hand, and use cases are a great way to distill and document this understanding. Most people understand how to write a use case, but aren't sure the best way to approach this process; this book answers that question.

What are some of your favorite Software Engineering books?

Subscribe Share/Save/Bookmark

1 comments:

  1. Here are some I see on my shelf right now:

    _Effective C++, Third Edition_, by Scott Meyers
    _Effective STL_, by Scott Meyers
    _C++ Coding Standards_, by Sutter and Alexandrescu
    _UML Distilled_, by Fowler and Scott
    _Programming Pearls_ and _More Programming Pearls_, by Jon Bentley

    And, just for fun:

    _The Tao of Programming_ and _The Zen of Programming_, by Geoffrey James

    ReplyDelete