software development trainee role