how to pick your specialization as a software engineer