Well, I’ve been postponing this for so long, but not anymore
If you didn’t already read my post about learning, please read it first.
These are the books I consider nice books to learn how to program, what is agile methodologies, OO/OOAD, Java/J2EE/JEE and Software Architecture.
1) To learn learn Java and JEE you should read this books :
Head First Java, 2nd Edition -> This book is a very nice and didactic introduction about Java (Fundamentals).
Test Driven Development: By Example -> The title talks for itself.
SCJP Sun Certified Programmer for Java 6 Exam 310-065 -> If you want to take the certification and have an in depth explanation about some core java subjects, this book is for you. (Fundamentals)
Head First Servlets and JSP -> This book is about Web Development with Java, and also a help to pass in the certification, this book is part of Head First Series, that is a very didactic reading. When I was studying Java Web Development, I used the next one, but feel free to choose the most convenient 4u. ( Web Dev )
SCWCD Exam Study Kit -> The same subject as the previous one. Actually there is a second edition of this book, but as I don’t read it yet, I’m suggesting the first edition. ( Web Dev )
Head First EJB -> The best book to learn the fundamentals of EJB 2.x spec. Of course this specification became deprecated with the introduction of EJB 3 spec, but there still a lot of things running on the previous spec in the world. So, it’s nice to know how things work if you have to provide some maintenance on this ( Distributed Programming )
Mastering Enterprise JavaBeans, 3rd Edition -> The same as before, but this book will give you another view ( not so didactic ) about EJB 2.x ( Distributed Programming )
EJB Design Patterns: Advanced Patterns, Processes, and Idioms -> Almost the same thing as I wrote for Head First EJB… if you want or need to develop something on that way, take a look at this book. ( Distributed Programming )
Enterprise JavaBeans 3.0 (5th Edition) -> Now we got the an interesting point. In this book you’ll learn the new way of develop distributed components using the EJB 3.0 spec. This book shows how to work with business components as pojos, the life cycle, mapping the database ( JPA ) and more. ( Distributed Programming )
Java Messaging -> Here you will learn distributed programming model in java using asynchronous messages and JMS.
Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) -> Design Patterns focused on the J2EE world.
2) To learn Software Integration, SOA and EAI :
Service-Oriented Architecture (SOA): Concepts, Technology, and Design -> This is a award winner book about SOA. Here you’ll learn the guts of SOA, the concepts, what is a service, how to build a service, how to compose a service, what is the true and the false SOA. This book is a must read for every one that wants to work with software integration. ( Distributed Programming / SOA )
SOA Principles of Service Design -> A sweet continuation of the above subject. ( Distributed Programming / SOA )
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions -> A book about Enterprise Application Integration. This book shows lots of design patterns about how to handle software integration using messaging. ( Distributed Programming / EAI / Messaging )
3) If you wanna learn about what UML is and how to use it, then this books will help you :
UML Distilled -> Although this book is about the old UML specification (1.3) I still consider it a good introduction, but feel free to choose any other you want !!!!
4) Learning OOAD :
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) -> As the book’s title said.
5) To Learn Design Patterns and Software Architecture :
Head First Design Patterns -> An introduction about what design patterns are and how to use it properly. I recommend you to read this book first because it was written on a simple, visual and didactic language, and you won’t have to fight with the complex code that the Gamma’s book will show you
Design Patterns: Elements of Reusable Object-Oriented Software -> This is the design patterns book ! At this point things will become very interesting. Here you’ll learn in depth how to apply design patterns to avoid code duplication, bad designs and make you software flexible enough to accommodate changes easily and keep woking. The down side of this book is the C++ syntax, but indeed this is one of the best books you ever read !
Patterns of Enterprise Application Architecture -> This is an awesome book about Enterprise Software Architecture. This one is a must read for all enterprise software developers. It covers a wide range of topics, such as layering your application, concurrency, domain models, remoting, presentation patterns and more.
Pattern-Oriented Software Architecture Volume 1: A System of Patterns -> Another great book about software architecture, here you’ll learn a more general SA.
Software Architecture in Practice (2nd Edition) -> Another sweet SA book. This one has lots of good contents about what is an architecture, how to create it, how to document, evaluate and analyze the costs. Throughout the book you’ll see very beautiful examples about many different systems challenges and their solution.
Domain-Driven Design: Tackling Complexity in the Heart of Software -> Here Eric Evans brings valuable thoughts and teachings in how to design a good and functional software taking care, modeling and preserving the domain model.
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET -> Maybe the concepts of Evans book will be dense to digest, so this book will help us with some other practical examples.
6) Learning about Agile Software Development :
Extreme Programming Explained: Embrace Change (2nd Edition) -> The roots of XP development.
Agile Project Management with Scrum (Microsoft Professional) -> Scrum from manager’s perspective (Scrum Master).
Agile Software Development with SCRUM -> Scrum for software developers.
Lean Software Development: An Agile Toolkit -> Lean principles in software development management and process.
Well, I’m gonna stop by here, what else I will propose you to buy the whole amazon website + the company
I will revisit this subject sooner, trying to bring something else to share with you. Another tip I want to share it that you should not feel unmotivated because there are so many books up there !!!
You don’t need, you can’t and you won’t read everything at once ! what else you’ll need a psychiatrist, in order to help you to recover you mind. As I don’t want you to damage your brain, I will ask you to follow my tips :
I tried to put the books on some kind of “natural” way, kind from beginning to expert, but feel free to choose whatever fit in your needs, you can mix basic ones with distributed computing or even architectural with methodologies. I tried to make it easy for novices to have an “easier” path to go, but you can build your own path and feed your knowledge hungry !
I hope I could help you to learn more and better, feel free to post a comment back !
See Ya !