software trainee role