2010-12-27

Eight important books for software developers

Each of the following eight books has greatly influenced how I think about software development. Note that this list is not exhaustive, there are obviously other important books out there, many of whom I have not read (yet).

Engineering

  • Design Patterns. Elements of Reusable Object-Oriented Software [uk, de], Erich Gamma, Richard Helm, Ralph E. Johnson. Addison-Wesley.
    It pays to know all of the design pattern passively, because they have become common vocabulary between developers. I’ve found that the best way of using them is to let the ideas increase one’s knowledge and then start the design from the problem. I’ve also seen some ugly code where people started their design from the patterns.
  • Refactoring. Improving the Design of Existing Code [uk, de], Martin Fowler. Addison-Wesley.
    No need to read throroughly here, but still contains many nice ideas one should be aware of.
  • The Pragmatic Programmer. From Journeyman to Master [uk, de], Andrew Hunt, David Thomas, Ward Cunningham. Addison-Wesley.
    Tips for the craftsmanship of software engineering: what to automate, how to code, etc.
  • Effective Java (2nd Edition) [uk, de], Joshua Bloch. Addison-Wesley.
    Many important rules for everyday Java programming tasks: clarifications of the standard mechanisms, new techniques (some of them inspired by functional programming) etc.

Process and Psychology

Often technology is not the most difficult part of doing software engineering...
  • Extreme Programming Installed [uk, de], Ron Jeffries, Ann Anderson, Chet Hendrickson. Addison-Wesley.
    The most technical book in this section, as it also contains comments on coding and more engineering related things. It is really fun to read about a process that is not described in a theoretical way, but as a pragmatic list of all the things one can do to improve teamwork.
  • Peopleware: Productive Projects and Teams [uk, de], Tom DeMarco, Timothy Lister. Dorset House Publishing.
    As lame as "putting people first" sounds, this book makes profound (and exciting) sense.
  • Difficult Conversations. How to discuss what matters most [uk, de], Douglas Stone, Bruce Patton, Sheila Heen. Penguin Putnam.
    A nice manual on human interaction that builds on the common sense most people alread have. If my head is filled with all these criticisms, misgivings and admirations concerning other people, then what do they mean? What should I do about them? When should I tell others about them, when not?
  • The Now Habit: A Strategic Program for Overcoming Procrastination and Enjoying Guilt-Free Play [uk, de], Neil A. Fiore. Jeremy P. Tarcher.
    I do not like the title, but I like the content. This book is especially useful if you work mostly for yourself. It shows that being more efficient is not necessarily about discipline.

4 comments:

Tanusree said...

Another essential book is "Code Complete" (2nd edition), by Steve McConnell

Axel Rauschmayer said...

Many people really seem to like “Code Complete”. I started reading it, but couldn’t get myself to finish it. It felt comprehensive, but too much so. More like an encyclopedia than a book you read to learn something new.

I would love to hear what people like about this book. For example: Its comprehensiveness? A specific piece of advice? A specific chapter?

AmyBarrett said...

Another important guide is "Code Complete" (2nd edition), by Bob McConnell.

hannah sanderson said...

I could also recommend these books to all those who plan to establish their own software or programming coming cause I think they could use this as a form of their business continuity strategy to ensure that their company, employees, clients and everyone else will function accordingly even if they are encountering several business conflicts. One reason why reading books is really important to people like us, we learn and we get something from it.

Web Analytics