Industrial mentoring in software engineering
Through the Department's collaboration with industry, we provide an innovative course that teaches software engineering to second year computer science students.
The industrial mentoring programme involves over 200 students working in small teams of six over a 12 week period with the support of a professional software engineer who mentors the team. Students build, test, modify and refactor an open-source multi-user, multi-threaded, client-server application with thousands of classes, more than 2000 test cases and over a decade 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 toolchain of Eclipse, Git (GitLab), JUnit, Apache Ant, and Jenkins, 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.
The following organisations have supported us in designing and implementing this scheme: ARM, Avecto, Barclays, the BBC, Blaize, Booking.com, CDL Software, CodeThink, Code Computer Love, DataCentred, Digital Bridge Ltd, EGN Digital, Facebook, Farm Digital, Goldman Sachs, Google, IBM, Koder.ly, Morgan Stanley, NCC Group, On The Beach, Rental Cars, Sainsburys, Sage Group plc, SteamaCo, THG, ThoughtWorks 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 (among 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 doing to code review sessions remote via Microsoft Teams, although other forms of communication are also possible. We ask mentors to meet with their teams twice in one semester. The guidebook students use for the course is published at software-eng.netlify.app
How to sign up
If you'd like to get involved in mentoring, please get in touch with the Department's industrial and business contact by following the link below.
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: typically week 3 of teaching (October) - meet your team of software engineering students who will show you their code repository. Meetings are managed using Microsoft Teams for a 1 hour period
- Second session: typically 7 of teaching (November) - follow up meeting for mentors to see progress that students have made in fixing bugs, adding features and managing their project
Mentoring is 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.
We offer digital badges signed by the University to thank our mentors for their work in supporting and educating our community of students
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.
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.