With the help of our industry club members, we have recently designed & delivered a completely new and innovative course to teach software engineering to second year Computer Science students at the University of Manchester. During the course, over 200 students work in small teams of six over a twelve week period with the support of a professional software engineer who mentors the team.
During the course, students build, test, modify and refactor a multi-user, multi-threaded, client-server application called Stendhal. Stendhal is a Massively Multiplayer Online Role-Playing Game (MMORPG) that has over 6000 Java classes, 1800 JUnit test cases and over 10 years of commit history. For many students, it will be the largest software project they have worked on to date as they make the challenging transition from greenfield software development to brownfield development.
As part of the course, students use a standard toolchain of Eclipse, Git (GitLab), JUnit, Mockito, Apache Ant, Jenkins, Gerrit and SonarQube to manage build automation, test automation, issue tracking, version control and code quality. The course has been designed specifically to prepare students for the realities of modern software engineering.
As of October 2017, the course has been taken by over 800 students (four cohorts of second year students) and we've had around 50 different mentors from a wide range of employers. We are grateful to the following organisations who have supported us in designing and implementing this scheme: ARM, Avecto, Barclays, the BBC, CDL Software, CodeThink, Code Computer Love, DataCentred, Digital Bridge Ltd, EGN Digital, Farm Digital, The Hut Group, IBM, Imagination Technologies, Morgan Stanley, NCC Group, On The Beach, Rental Cars, Sage Group plc, ThoughtWorks, Web Applications UK and Zuhlke.
These employers have contributed to the industrial relevance of the course unit for our students by giving them access to an industry professional who can discuss (amongst other things):
- The range of career options available to graduates with particular flavours of Computer Science degrees.
- The realities of being a software engineer in today’s industry.
- The skills and knowledge needed to compete effectively in the current jobs market and to succeed in the future.
- Typical tools and techniques used by software teams.
- Specific technical insight, on questions like what makes a good test, and what makes a good commit message.
Mentors primarily interact with their teams by coming into the University to work face-to-face with students for one or two sessions, although other forms of communication are also possible. We ask mentors to meet with their teams twice in one semester, with an optional third encounter at the end-of-semester assessment showcase.
The mentoring scheme is run once each academic year, in semester 1. Within a single semester, we ask mentors to interact with their teams at the following times:
- First session: 9th/11th October 2018 (week 3 of teaching), we’ll ask mentors to come into the University to meet with their teams and kickstart the mentoring relationship during this week on either the Tuesday 9th or the Thursday 11th October. By default, mentors will come to the University for a 1 hour period, during which time they will spend an hour with the team assigned to them.
Second session: 6th/8th November 2018 (week 7 of teaching): we’ll ask mentors to come to the University for a second meeting with their teams during this week. Ideally, mentors will be able to come for a 1 hour visit, and will meet with the same teams they met earlier. However, we recognise that this commitment might be difficult for mentors to make, and therefore we’ll offer a number of other options for this second meeting. If a mentor cannot visit the university in week 7, they can:
- Arrange a face-to-face meeting with their teams at some other mutually convenient time and place.
- Arrange to hold an electronic meeting with their teams.
- Arrange for a colleague from their organisation to meet with their teams in their workplace.
Mentoring could be beneficial to employers in several ways, including advertising their company, building relationships with students, and - importantly - improving the quality of the entire cohort by helping to embed good software practices early on. It can be beneficial to junior developers to put mentoring on the CVs as it demonstrates continuing professional development (CPD), that allows mentors to progress in their careers as well as mentees.
An optional showcase session at the end of the semester will provide an opportunity for mentors to assess all the teams presenting (other than their own mentees), which will provide contact for employers with a wider group of students for recruitment.
We will ask our students to take the initiative in asking questions and posing topics for discussion, and will give them guidance in preparing to get the most out of their mentor’s time. But we’ll also give mentors a “crib sheet” detailing issues that the students are currently facing, just in case a mentor has to deal with a particularly shy team.
Mentors can discuss their own personal experiences in the software industry, as well as giving careers advice and help in preparing for job applications and the recruitment process. They can describe the toolsets in use in their own and other organisations, and the skills needed of a good software engineer. They can talk about different software processes and dealing with team working challenges.
Mentors can also provide technical help, subject to the following important caveat:
We ask that mentors don’t make any attempt to help students directly with their assessed coursework, for this or any other course unit.
It would naturally lead to an unfairness in the assessment process if some teams receive direct help from an experienced and talented industry professional while other teams do not. More importantly even than that, we want our students to become independent problem solvers, who are not fazed by a seemingly difficult challenge.
Mentors can help students by suggesting how they might go about looking for a solution if they were working in a real team, rather than by giving answers directly.
We know from many organisations are prepared to be very generous with their time, and would be willing to engage in contact with their student teams in between the meetings outlined above. This contact could be by e-mail, slack, gitlab or by Skype, for example, or even (as some members were suggesting at the meeting) by inviting the team to visit your organisation.
We’ll be very grateful for any additional contact mentors propose to have with their mentees, and will facilitate these kinds of interactions where we can. However, we won’t expect this level of contribution from all mentors, and will make sure that our students know not to hassle mentors in an irritating and unsolicited way.
To prepare mentors for the scheme, a short mentor guide is available. If you were not able to attend one of the mentor orientation sessions face to face, the slides are available which give more background to the general aims of the mentoring scheme.
If you'd like to get involved in mentoring and haven't already been invited, please contact Duncan Hull