I use Upwork. Communication is really important, so talk to people before you hire them to make sure they speak your language fluently (and I really mean
fluently). There are a lot of companies pretending to be single devs on Upwork, so ask them directly before you begin the contract if they're a company or a single person.
I've had some good experiences with accidentally hiring companies, but most people prefer single devs because of the risk of paying for overhead rather than quality work.
Once they're working for you, check in with them twice a day and ask to see progress. If you can't see it, it hasn't happened yet.
Always, always do fixed-fee contracts (never hourly). Put the money in escrow.