Following my recent post about how to keep up with technology, I was asked how do I find the model of an application. By the model of an application I mean that core principals that guided the developers when they built it. For NHibernate, it is Unit of Work and Identity Map, when you know the two of those, the rest is mostly implementation details.
I don't have a single answer for this. If you can get a hold of the developers, it is best, but it isn't an approach that scales. A good way would be to look at unit tests, and see what the expected behavior is. I wouldn't suggest a book in general, because a book will usually focus on the How to do stuff, not How is is done.
Take WPF for instnace, most books focus on the XAML and what you need to do in order to work with that, but XAML actually have very little with the WPF model. Dependecies properties and event bubbling are far more important concepts to understand.
Non-demo blog posts are good as well, but perhaps the best resource is to remove all the fluff from the technology and code without any abstractions between you and the technology. Go over the samples to get a feeling about what you should do, and then walk the stack and remove everything that hides something. Port existing code to the new technology, existing is important, because it would force you to map the concepts that you are not familiar with to the new technology concepts.
Reading the best practices sheet and the Dont Ever Do That column are also recommended, but don't just memorize them, understand why they exists, this will usually tell you a lot about how it works from the inside.