There's a combination of techniques:
Firstly, they need to understand what the application does. Sounds trite I know but I've worked in trading applications and it can take people a long time to get their head around what, say, a market maker does because that's built on top of a lot of knowledge about how financial markets operate and what they do. Just a term like "spread" has all sorts of assumed knowledge built into it.
This should be done interactively rather than handing someone a tutorial or a user manual. Also, and this is really important, the user user should drive. Using the mouse and keyboard rather than watching is what builds muscle memory and ingrained responses. You'll get much better retention rates that way. Also, rather than saying "click here now do this" put them on the spot and ask them "what would you do here".
You can often get a useful insight into the usability of your application this way since the new person isn't tainted by all the history that you and your existing team has.
You can't teach someone everything but show them enough that they can navigate around the application and do simple tasks.
Secondly, give them an architectural overview. If this takes more than an hour or two you're going into too much detail. They'll simply forget it. I find it's better to actually give this as a face to face talk rather than handing them an architectural design document (which generally just causes people eyes to glaze over).
Lastly, give them small, relatively easy bugs to fix that aren't time critical. This will get them familiar with the basics of checking out the code, building it, deploying it, running it, etc. It's important that it's simple because things always go wrong with new code. You might need the right environment variable set up to properly build the code or whatever. Give them a complex problem and if something goes wrong they'll get lost in figuring out if its environment, if it's because they're doing something wrong and so on.
It also goes without saying that you can't leave them in a corner to figure this out. Someone eneds to keep an eye on them to make sure they don't get bogged down. This will also give you a good insight into their personality: what happens when they get stuck? Do they freeze up? Do they ask for help? Do they try and nut it out? Do they give up too easily?
At the same time they're learning about the code.