I came across this topic when I navigated Focus on Java of About.com. The author, Kevin Taylor, suggested top five must-read software development books for all professional software developers. The URL of this article is here. That list of software development books also revealed the recent hot topics in the field of software engineering.
Refactoring: Improving the Design of Existing Code
Author: Don Roberts, Martin Fowler, Kent Beck, John Brant, William Opdyke,
Publisher: Addison-Wesley,
ISBN: 0201485672
Refactoring is the process of improving the internal structure of code without changing the published interface. This book is the definitive text on the subject (and is just a plain good read). Experienced programmers can usually smell bad code but this book will finally clarify why it is bad and what must be done to improve it.
Design Patterns Explained: A New Perspective On Object-Oriented Design
Author: Alan Shalloway, James Trott, James R. Trott,
Publisher: Addison-Wesley,
ISBN: 0201715945
Design Patterns Explained provides that essential knowledge of object-oriented concepts. Then, it goes on to cover ten important design patterns. Throughout, the book melds OO concepts into design patterns, showing how they interrelate.
UML Distilled: A Brief Guide to the Standard Object Modeling Language
Author: Martin Fowler,
Publisher: Addison-Wesley,
ISBN: 0321193687
This may be the only book you’ll ever need to read on UML–and it is only 192 pages. This concise guide on using the Unified Modeling Language is chock full of useful examples (and of course diagrams).
Test-Driven Development: By Example
Author: Kent Beck,
Publisher: Addison-Wesley,
ISBN: 0321146530
Test Driven Development (TDD) is radically altering software development shops. This is the definitive tutorial on the subject. In the book, Beck implements two applications using TDD, a multi-currency calculator and an xUnit testing framework. Through the process of implementing these applications, the reader will learn how to design classes and methods by writing tests first. This leads to code that is simple, loosely-coupled, and highly-cohesive.
The Pragmatic Programmer: From Journeyman to Master
Author: David Thomas, Andrew Hunt,
Publisher: Addison-Wesley,
ISBN: 020161622X
This book has spawned a series of "Pragmatic" programming books. This one discusses how to become a master code craftsman. Subjects include preventing software rot, fixing broken windows, writing flexible code, exploiting tools effectively, and more. This book is a practical but, also, inspiring read.