soft skills for software developers