Real clients provide surprises that students don’t expect
A question that goes around again and again when course organisers meet from different institutions is whether to let students pick their own topics/applications for software engineering projects, or to find clients for them. There is no easy answer to this question, but my preference is to seek real clients for student teams.
You could make it an entrepreneurship course too
If you let student teams pick their own application, then you can overlay the entrepreneurial aspects of software development onto the course too. This adds to the things the students could/should learn while undertaking the course. I find that it adds too much, as they now need to think of the business model, and who the customers are, and all of the other related topics. I can and do, spend a whole course looking at those topics in another course, and find it works well that way.
The other issue with the students picking their own application, is that they are often not as critical of the goal of the application as a real client would be. They know it will (probably) never live beyond the classroom, so they sometimes go easy on decisions about the features on offer, and the scenario context where and when customers, or users would use the application.
You can avoid the business issues with real clients
If you find real clients for your teams, then the entrepreneurship and business model issues disappear for your students. Now they can focus on building the application, and learning how to collaborate with their client.
When you follow this approach you have a few more options to consider too. First, do you find one client for all of the teams, or does each team have a different client? Second, are your clients ‘in house’ within the university, or do you look outside the university for clients?
One client for everyone is an option
When all teams have the same client, then you’re looking for variations on a theme provided by your client. Each team will have similarities, but will each also be unique. The client can talk to all teams at once, and also individually for specifics. This demands more commitment from your client, who might then combine components of the various solutions that are presented for their use.
I have never found a client, who seemed suitable for this, so I’ve not tried it. I know others have found it works well as you need fewer clients across the course. This is a good option if you only have a limited number of potential clients.
One client for each team is ideal
If you can find enough clients for your teams, then each team can have their own client. This avoids any issues of teams having similar solutions, as the context for each team is unique. Yes, they might both be to handle equipment inventory, but each will be different in details. Later, you could discuss how they might be pulled together into a framework, and how that would work, but that would be for the future.
The bigger issue that I find is ‘where’ to look for clients. Some universities put up a ‘looking for clients’ page, and others avoid this option as they fear too many requests. I’ve never had a problem finding clients, as people hear from others that I’m always looking for clients, or have been since around 2010.
Consider the timespan for your clients
From then until now those clients were always for our postgraduate MSc degree, which was eleven weeks long. This is intense, and requires only limited time from the clients over the summer. This is the only course the students have, so they can do a lot in a short time. When I started this approach we only needed two or three clients at a time for teams of 4-6 students. That programme has grown and now runs twice a year, but we still only need four clients. That works well with both internal university and external clients, some of whom have deployed what the students prototyped.
For our undergraduates the clients need to commit from September until May. This is a slower process, and therefore requires more patience and commitment from clients. Now the students are working more slowly as they probably have multiple classes at the same time. They think they will achieve a lot, and sometimes they do. Sometimes they don’t. They main thing is that they try, and learn along the way.
When you pick internal clients, then you can keep expectations lower, and you have more sympathetic clients, who are already familiar with students. This has worked well in the past, and I hope it goes well this year too. For our first time all of our undergraduate teams will have a real client. This means about 13-15 clients from all across the university.
Manage expectations with clients
In all of the real client options you need to manage their expectations both with respect to the outcomes you hope will happen, and also with how the client will interact with students. Discuss with them how they might host and manage the application when the students are done, so that they realise what might happen. Also discuss that they might not have an application at the end of the course too. As long as these issues are discussed early on, then things should run more smoothly.
Find clients through your contacts
You too should seek real clients for student teams. They mean students focus on building the application, and can leave the entrepreneurial aspects with the client. The students also gain the evolution of ideas from the client. Sometimes, they also see the back and forth of indecision by clients, or the client who disappears. The students see aspects you couldn’t do yourself.
You can find internal clients through your university contacts. There is often an ‘entrepreneurship’ or similar office, with contacts in other departments, who can forward a request from you to others saying that you’re looking for clients for student teams. I’ve also used informal ‘for sale/looking for’ email lists for this too; anything that lets me extend my reach to others beyond my normal network of people.
External clients take longer to find, but can be found on the same principle. Let people know you’re looking for clients, and mention this in conversation at meet-ups, or other events, and over coffee with people. Eventually, you’ll find a few, and then with time you’ll eventually get people saying ‘I heard that…’.
Nervous? Yes. Excited? Very. The possibilities could be huge.
This post is part of a project pulling together my materials and ideas about Teaching Team Collaboration: the Human-Side of Software Development for software development to students. If you’d like to be notified of future posts, then please sign up for more using the adjacent form.