Computer software engineer job description - software