Work colleague asked me to recommend books on software development. This is short recap on books and articles I found helpful.
I started developing Object Oriented software in ’97. At that time OO was a developing field and there was not much written on developing Object Oriented enterprise applications. Situation is much better now. There is huge variation in quality of published books and some of those that I will mention stand out as “classics”.
One of first books I read was Object Oriented Modeling and Design (1990, Jim Rumbaugh et al. ). Notation used in this book is OMT, which later on became basis for UML .Although some material might be dated, most of it would still be relevant. Patterns for Object to Relational Mapping were discussed.
I found number of interesting articles on Object Mentor site, particularly articles written by Robert C. Martin. Most of those were later published in the book Agile Software Development, Principles, Patterns, and Practices. It would recommend you read following articles:
If you are new to UML I would recommend reading related articles on the same site.
Any OO book list would be incomplete without mentioning classic work Design Patterns: Elements of Reusable Object-Oriented Software (1995, Gang of Four). This must be most exciting book of all times that I have read. At the time I got it we were struggling big time with concepts in our OO design. What is most striking about this book is model of thinking that you adopt when you start applying patterns. These are everyday situations that you face doing Analysis, Design or coding. It is worth coming back to this book over and over as you develop understanding of problems you face in software development.
In recent times another classic work emerged: Patterns of Enterprise Application Architecture (2002, Martin Fowler). This books brings patterns closer to enterprise applications. One of most exciting patterns is Domain Model. This pattern leads to creation of OO model representing business domain used in your applications. From early days it was my assumption that this is only valid way of developing OO enterprise applications. This equates to notion of problem domain and solution domain in Object-Oriented Analysis and Design with Applications (1993, Grady Booch). BTW I found this book a hard read at the time and although it does contain number of interesting concepts I would recommend you don't spend too much time reading it.
This subject is further developed in Domain-Driven Design: Tackling Complexity in the Heart of Software (2003, Eric Evans) . This is a must read if you want to apply OO to enterprise applications. There is a very good debate going on Domain Driven Design Group (Yahoo) on applying DDD.
Another book you might consider reading after this book is Applying Domain-Driven Design and Patterns: With Examples in C# and .NET (2006, Jimmy Nilsson). This covers more practical approach to applying Domain Driven Design.
Benefit of books like this is development of common vocabulary and frames of reference for software development team. Although silver bullet doesn’t exist and you will need to apply yourself to understand business problem first these books give you powerful set of tools to tackle issues you will find in enterprise application development.