Reading code you didn't write
The instinct on day one is to open the main file and read downward. That almost never works. Large codebases are not written to be read in order, and the entry point usually delegates to things you have no context for yet.
What works better is starting at the boundaries. The route table tells you what the application does. The database schema tells you what it knows. The deploy configuration tells you what it depends on. Three files, and you can already describe the system to someone else.
From there, follow one real request all the way through. Not a representative one — a specific one, with a specific input, traced to the response. The abstractions that seemed arbitrary usually make sense once you have watched them do their job once.