application software developer job description