How startups recruit, hire and retain software developers