how to hire a software engineer