Nowadays remote hiring a software developer would make perfect sense for any company: reduced costs, flexibility, saving money in training and building maintenance, wider range of talent, etc. but there is always the fear of hiring the incorrect software developer and ending disappointed, with bad quality work delivered an carrying the overall cost of having to start all over again a project. The reasons this can happen is directly related with some of the challenges that can come with remote human resource hiring.
Some might feel uncomfortable because of the lack of face to face communication, but it is not actually an issue, it is true written messages can be subject of multiple interpretations and misunderstandings but there are tools that companies can have access to solve it like Google Hangouts or Skype to solve it. Distance could bring also time discrepancies, but it is up to the employee if he is willing to adapt to the employer schedule, that is something that should be clearly stated from the beginning.
Sometimes freelance software developers are not as skillful and experienced as they say, and in some cases they are recently graduated or autodidacts that would do anything to get a job, other issue is that working at home is something relatively new and people in general still need to grow a culture about this and have the same commitment and diligence they would have in an office with the boss being next door.
This problems can be solved by hiring an outsourcing software development firm, you still will have the benefits of outsourcing, but you can assure the project management will be right, you will not have to do the whole recruitment process by yourself and you will have instant access to diverse bright talent that will deliver quality work and in the established time frame.