It’s that time of year again, when I’m preparing to teach Introduction to Software Engineering at UofT. This will be my third time teaching the course and I have more students than ever, almost twice as many as last year. As part of this course, third-year students in computer science work in teams to implement a software application for a client. Consequently, a lot of the preparatory work is finding clients. Our clients have been non-profits, social enterprises, and schools that needed some software built. Here are some Q&A to help you decide if this is a good opportunity for your organization.
This Q&A is adapted from one that I wrote last year.
Q: What kinds of projects have they done in the past?
I have a demo reel on YouTube with videos produced by the students of their projects. Here are some of the projects that were completed by students last winter.
- An election system for a high school
- An Android app to help high school students study for the province-wide standard Grade 10 literacy exam.
- A platform to enable microcollaboration among journalists
- A platform to support hackathon participants share problem frames and early research
Q: I need a web site for my organization. Is this the kind of project you’re looking for?
If you are looking for a web site where people can go to learn about your organization, then no, this isn’t the right kind of project for us. I’m looking fora project that has some interactivity, or has a reasonably complex algorithm, or moves some significant data around.
Q: Can the students work on commercial products?
The short answer is no. We’ve tried this in the past and it was a real mess. Now, we stick to community service and open source projects.
Q: How much work can I expect from the teams?
Teams will have approximately six people on them. There are 100 students enrolled in the course, so that works out to about 16 teams, give or take. Each student is expect to put about six hours per week on the project. The project runs for approximately 11 weeks. Putting all that math together: 6 students * 6 hours per week * 10 weeks = 360 hours.
Q: So, are these students any good?
These are students majoring in computer science. Most of them are in third year. They have all learned Python and Java in their courses. A few will have some php under their belts. Many have programming experience outside of school. As a rule, they are not great graphic designers or great user interface designers. But, man, are they ever good at algorithms.
These are some of the best computer science students in the country. That being said, they are still students and this course is a learning experience for them. They have a lot to learn not just about software engineering and computer technology, but also how to make software for people and how to work with people who are not computer junkies. You’ll be helping with that.
Q: What kind of time commitment do you need from me as a customer?
Nominally, you expect to spend one hour per week interacting with your students. This figure will be higher at the beginning of the term. There will probably be a few face-to-face meetings, but others can be held over the phone, skype, Google Hangout, or IRC.
Last year, we had one client who met with his team in person every week and he was very satisfied with the results. Another client tended to deal with her teams by email.
To be clear, these are students, not professional software developers, which means they will require more of your time than if you were paying consultants. It’s best if you can provide regular, timely, and thoughtful input. You should plan to meet with your student team about once every two weeks. In addition, you may be asked to answer questions, review designs, or prepare some information about your organization. It’s important that you do this in a timely fashion, because we are using a software process called “agile,” that relies heavily on customer feedback.
Q: After I put in all this time and effort, how can I be sure that I will get something useful out the other end?
I’ll be doing two things to increase the likelihood of success. One, I will work with you before the course starts to figure out if the project is a good fit for the capabilities of the students and not too big or too complicated be completed in the time available. Two, I will be assigning two teams to each project. The chances that both teams will produce completely unusable software are pretty slim. Also, having two teams won’t double your work, because you’ll be able to meet with them at the same time.
Q: I’m game. What’s next?
Send me an email ASAP. The first week of class is September 9, the week after Labour Day. Customers will be pitching their projects to the students on September 12 and 17. Students will be bidding on the projects on September 19. Plan to spend time with the students shortly thereafter.
Q: Is there anything that I need to prepare?
1. You will need a half-page description of your project. I can help define your project and refine the write up. In this case, the process is more important the product. Being able to produce such a document helps to scope the project appropriately and ensure success.
2. You will need to prepare a pitch to the students. Plan to talk for about 5 minutes and answer questions for the remainder. You can use PowerPoint slides for your pitch. If you can’t come in person and pitch, you can provide a set of slides and I can pitch for you.
3. Find 2-3 potential customers/users for students to interview September 19-24.