If you happen to know me, then you might be able to borrow these books from me, I am quite sure I have all these in my bookshelf – since they aren’t generally found in Finnish libraries and I prefer to own my books.
Software development
1. Rapid Development by Steve McConnell. A solid book on rapid development practices and best practices. It covers the “oh so common” errors well, and provides both hard data and further reading. Great!
2. The Art of Agile Development by Shore & Warden. A comprehensive and practical guide to Agile and a great reference for each of the different Agile/XP practices. I like that it is short, to the point and not bound by a particular approach.
3. Test-Driven Design by Kent Beck. A practical approach to Test Driven Design. For any developer who wants to learn why and how to do it right, this is the book.
Also good:
Practices of An Agile Developer by Subramanian & Hunt. A great book focused on the programmer’s side of Agile, the particularly nice parts are the ” how it feels” sections which also present the benefits of agile for the programmer. Could be good for training people for Agile in a new company, for instance. Does not address Agile from a project managers perspective though, and it probably shouldn’t.
Programming
1. Agile Software Development – Principles, Patterns and Practices by Robert Martin. Don’t let the word “Agile” fool you into thinking this a “soft topics” book. It contains a good discussion of principles and patterns and the focus is on programming rather than management. The principles of OO design are articulated very well. A great read.
2. Design Patterns by the Gang of Four. A classic on design patterns. The book covers a lot of basic patterns which any developer ought to know. The only negative is that the patterns are somewhat dated: many things that were very problematic in C++ are not as problematic with newer languages which support closures and dynamic typing. However, the patterns described here are truly universally applicable to OO design.
3. Patterns of Enterprise Application Architecture by Martin Fowler. A book which catalogues common patterns in enterprise applications. While I expected to find more new patterns than I did, this is a good book because being able to name the patterns that are in use in an application is very useful, and probably you will find a few patterns which are unfamiliar.
Also good:
Data Modeling Essentials by Simsion & Witt. A book on database model design. This book complemented with a book on performance in the specific database back end (e.g. High Performance MySQL) should give anyone a good basic knowledge of the DB principles that need to be taken into account when designing a database model.
Artificial Intelligence – a modern approach by Russell & Norvig. A fun book! Discusses alternative algorithms to artificial intelligence. If you plan on reading it, make sure you leave time to play around with the different approaches you will learn from reading it.