Learning the Skills of a Professional Software Developer