I start by just browsing around in the directory structure, opening up files, tracing references between files, kind of intuiting the overall structure of the product. I run the product as I think a user would, trying to perform typical tasks. Relatively early on, I'll step through the code in a debugger, mainly to get a rough feel for what's going on, what the overall flow of control is. I don't spend a lot of time at this. At the same time, I'll read documentation - whatever documentation there is.
User documentation is usually most of what there is.
With luck, there's some design documentation. I'm not really poring over this documentation. Perhaps my main goal is to get conversant with the terminology, in support of the next step. A lot of times, the programmer's comments are not very informative. But sometimes they are.