I just went through the process with a new hire that's pretty fresh out of school, so not much previous work experience.
The first thing we did was give him a big picture overview over lunch along with the other (non-technical) project members.
Later, I sat with him and did a one-on-one high level overview from an architectural/technical standpoint that included:
a) How we got to where we are,
b) Where we are now,
c) And where we want to go in the near future
Only after that did I sit down and begin pairing with him. Initially I pointed him to some of the specific projects he worked on and guided him through setting up things like dummy apps and running tests and then let him do a couple of things (like adding documentation or tests) on his own so he can explore the codebase.
Afterwards, we started pairing on smaller things like bug fixes where I took the lead and basically just talked about what I was doing.
After all that, I started assigning him some of these smaller projects on his own and just checked in now and again when he had a process question. From there, it the ramp up just kind of naturally happens on its own as the dev gets more and more engaged in the project.