Currently I am in the process of learning Java via Head First Java and am beginning to look ahead at reading more about OOP / design patterns. My question is which book I should pursue after Head First Java. I am torn between Head First Design Patterns and Head First Object Oriented Analysis and Design. No doubt, I probably should read both, but I am not exactly sure what the difference is between the two and which would be more suitable as a follow up to Head First Java. Any suggestions or details from those who have read these would be greatly appreciated.
Start with Head First Object Oriented Analysis and Design. The reason being some design patterns require a good knowledge of object oriented programming beforehand.
Now you are stepping into development territory its not only important to read but to also work through your own examples. For example trying to write a piece of software to do something is far more productive than reading 300 pages from a book. Learning about software is very practical so its important to apply what you are learning.
Generally a lot of books rehash the same principles, but if you like the style of the Head First books then by all means read them. If your at all interested in the Java programming language I would recommend a book called Effective Java by Joshua Bloch.