Your Guide to Near-shore and Off-shore Software Development Outsourcing: Top Advantages and Challenges