Unless you are hiring someone with whom you have previous extensive experience (and sometimes even then!), hiring is always a near 50/50 proposition.
In my experience, the best way to succeed in hiring is do a reasonable job screening applicants, but do it incredibly quickly. Screening applicants can be very time consuming, and every additional moment you spend yields incredibly diminished returns.
Hire fast, fire fast. The only way you are going to know if an applicant is REALLY a fit for your company is to hire them. You and your team will know inside a very short period of time (easily within three months) if a new hire is going to work out. You do your team and the hired individual a disservice if you keep them on board if they are not working out. Your team is owed a solid contributor, and the hired individual is owed the right to find a place where they fit and can add value. You do nobody any favors if you keep mediocre people on your team, and you really put your business at risk of sub-optimization or failure.
I have seen different companies do this different ways. One of our startups is very explicit with new hires about their policy of a trial period, so that expectations are set appropriately. If there isn’t a fit, it is good for the company and likely good for the applicant (even if they don’t believe it right away), and the applicant can manage their resume without too much harm.
Another technique I have seen is to hire two people for a single spot, and see how each performs. In the worst case scenario, if both perform well, then you have two great new team members even though you were only looking for one. You can likely find good work for the additional person. This works especially well for your company’s biggest teams, like developers or sales people.
The war for talent is everything. So hire fast and fire fast, and make sure you reward the people you end up keeping.