Books
During my software devlopment career, I have read a dozen of books about the different aspects of creating software.
The best
Here are the books that has been most valuable to me:
Domain driven design, by Eric Evans
Everyone keeps talking about how important it is to design and implement a proper domain model that reflects the
real-world domain you are working with. And someone even tells you why.
Eric Evans tells you how! Takes some time to read, but is well worth it.
More info
here.
The pragmatic programmer, by Andrew Hunt and David Thomas
In a very inspiring way, this book describes a set of sound principles for software development.
The authors argues, using real-world examples, that these principles should be applied almost everywhere in the development process,
from the initial writing of requirements, through design and implementation, to the production deploment phase.
An enormous amount of knowledge condenced into a manageable amount of pages.
More info
here.
Effective Java, by Joshua Bloch
This book describes common tips and trick that, if applied properly, can make you a more efficient Java developer.
Easy and fun to read.
More info
here.
The runners up
These books have also been valuable to me:
Concurrent programming in Java, by Doug Lea
Describes the building blocks of concurrent programming in Java, and how apply them efficiently, written by the expert himself.
If you think you know your way around concurrency, and that the code you write is thread safe,
then read this book. It might change your mind...
More info
here.
Innocent code, by Sverre H. Huseby
Most books on computer security focus on infratructure, like protocols, firewalls and certificates.
This book is about what the software developers can do to enhance the security of the systems they develop.
More info
here.
Better builds with Maven
To my knowledge, this is the only decent piece of information about
Maven,
which do not leave you with more questions than answers.
More info
here.