**Take extensive notes** to organize your thoughts and understanding of the system. Do this even if you have no intention of reusing the notes. This has worked wonders for me when dealing with large legacy systems. It helps crystalize your understanding, helps put the open questions into words, and because your thoughts are already put together it makes it easier to communicate spontaneously with others about problems/questions/ideas/etc.

As an example, as I'm going through a piece of the code, I'll be taking notes to myself constantly. This is my conversation with myself. The mere act of writing helps more thoughts come out and helps me understand things better. After a while I may have a Eureka and need to draw out a little diagram on paper to illustrate what I just thought of. I always do this on paper only, getting rid of all the distractions of the computer.

This is basically a convenient way to have a perpetual conversation with a domain expert :)