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).
- 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.