By Robert Haines, Caroline Jay and Suzanne Embury, School of Computer Science, University of Manchester
A new software engineering curriculum
How can we replicate (or at least provide a taste of) real software engineering in an undergraduate course unit?
We've been asking that question in the School of Computer Science at the University of Manchester, as part of a radical redesign of our software engineering curriculum. Students on the new course will be working on open source software, writing tests, fixing bugs and using continuous integration, in an environment much closer to the one that they will experience after their degree than the green field development currently typical of undergraduate teaching.
Developing an industry-relevant course requires close collaboration with industry, and we've been talking to companies throughout the development of the programme. We also thought it would be great if our students could have some first-hand contact with industry while they are learning. This could provide many advantages, from ensuring students understood the value of what they were learning, to providing them with job opportunities. Seamlessly integrating industry involvement into an academic programme could be tricky though. What's the best way to make it work?
To explore this issue, we organised a workshop with a wide range of industry participants, generously funded from Rob Haines's 2015 Software Sustainability Institute Fellowship. Our contacts with industry, through our Industry Club, have always been a great source of ideas and inspiration, so we asked members to help us design a mechanism by which they could be involved in our students' education.
Crowdsourcing an industry mentoring scheme
We invited Industry Club members to a workshop to help create a new academia-industry mentoring scheme. At the event, we asked participants to design a framework that would deliver the benefits we hoped for, while also being practically achievable. We wanted to ensure that the mentoring organizations themselves were able to put forward ideas that would enable them to maximize the gains from the scheme as well.
The overall aim of the scheme is to increase 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 realities of being a software engineer in today's industry.
- Typical tools and techniques used by software teams.
- The skills and knowledge needed to compete effectively in the current jobs market and to succeed in the future.
- The range of career options available to graduates with particular flavours of Computer Science degrees.
For mentors and their organizations the scheme should be an opportunity to provide input into a course which will be training their next generation of employees, while also gaining exposure to a cohort of potential recruits.
Designing a mentoring scheme
Attendees divided into groups of 5-6, and were asked to design a realistic mentoring scheme. Teams were asked to consider a number of issues, such as how much time mentors could be expected to provide, how many students they could reasonably interact with, the extent to which they could commit to supporting the same students for an entire year (or semester), and the sort of format that meetings should follow.
The group work was followed by an excellent feedback and discussion session, and a well-earned wrap-up with drinks.
Outline of the proposed mentoring scheme
Industry participants could see many ways in which mentoring could be beneficial to their organisations, including advertising their company, building relationships with students, and - importantly - improving the quality of the entire cohort by helping to embed good software engineering practices early on.
Although there was some diversity of opinion over the optimal way to run the scheme, there was also a great deal of consensus, and we were able to produce a first draft of how this sort of activity might work in practice.
It was agreed that mentors would primarily interact with two teams in up to three sessions spread throughout a semester:
- An initial face-to-face meeting once the student development teams have been established and have had a chance to start working together.
- A second meeting towards the middle of the course once teams have started to put into practice some of the things they have discussed with their mentors. It would be great if this meeting could be conducted face-to-face, but if a mentor is constrained by work commitments then a virtual meeting is okay too.
- An optional third session, which will coincide with the end of course, will be the assessment showcase where the teams will present the final results of their projects. Attending this gives mentors the opportunity to assess teams other than their own, something that was considered important by some members of the Industry Club for the purposes of recruitment.
We plan to 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 provide summary information 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, as it could lead to an unfairness in the assessment process. More importantly even that than, 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 are currently in the process of recruiting mentors (please get in touch) if you are interested!), and will be running an orientation event in January 2016. This is the first time we've run this kind of activity so we expect to be learning along the way, and making adjustments when we understand what works and what could be improved. At the end of this academic year we will have completed the first run of the process, and hope to have a refined version of the scheme to report back with.
We would like to thank the Software Sustainability Institute for supporting the mentoring scheme workshop through Rob Haines's Fellowship.