Can you list best 5 software books you consider must read books, and why those made it into your top 5 list?
A. Great books are that you read many times and constantly refer to. From the books you list, an interviewer can judge your experience and attitude towards software development. Open ended questions like this can reveal a lot about an interview candidate.
1. Effective Java - by Joushua Bloch. This book gives you a deeper understanding of the Java programming language so that you can write code that is clearer and more correct. The author teaches how to write good Java code like
- minimizing accessibility of classes and members.
- favoring immutability.
- favoring composition over inheritance for code reuse.
- favoring interfaces over abstract classes.
- minimizing the scope of local variables.
- avoiding float and double if exact answers are required.
- proper exception handling.
to name a few.
2. Enterprise Integration Patterns by Gregor Hohpe. Enterprise integration is too complex and very vital in building distributed applications. Patterns can provide guidance by documenting tried and tested experience to avoid pitfalls and apply the best practices. This pattern catalog describes 65 integration patterns. Many ESB or SOA platforms already implement some of the patterns described in this book because the vendor recognized the recurring problem and incorporated the solution right into the package. It starts describing various integration styles like File Transfer, Shared Database, Remote Procedure Invocation, and then the most parts of the book is about messaging. This is a comprehensive cookbook of solutions to common integration patterns.
3. Code Complete by Steve McConnel. This book is a bible of best practices and will inform and stimulate your thinking—and help you write good quality code. This book is widely considered as one of the best practical guides to programming. For example,
- Meaningful variable names for nested loops instead of just i's, j's, and k's.
- Variable naming conventions, creating short names, standardizing prefixes, and names to avoid.
- Data types fundamentals and common mistakes.
- Software craftsmanship with self-documenting code, coding techniques, and code layout.
- Programming tools to write quality code
- Code tuning technics in logics, loops, expressions, iterations, and routines.
- Code refactoring, testing, and debugging techniques.
- ...and much more
4. Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of Four -- Ralph Johnson, John Vlissides, Richard Helm, and Erich Gamma. This book captures a wealth of experience about the design of object-oriented software. The 23 design patterns described in the book allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions. Goes well hand-in-hand with the book Head First Design Patterns by Eric Freeman , Bert Bates , Kathy Sierra, and Elisabeth Robson.
Many of the other stuff can be continuously learned by subscribing to quality online sites like (infoq.com, javalobby.com, etc), blogs and articles. Good developers do have a list of go to sites for APIs, reference documentation, and quality blog posts.
What are your best 5 reads on software development?