Building Software Together
Most undergraduate programs in computer science and software engineering include a one-semester project course designed to teach students how to work in teams. The aim of UCOSP was to make these courses more realistic and more engaging by having students from different institutions work together. I propose restarting this program with several new wrinkles.
- make mentoring easier (since more knowledge could be shared across projects);
- make assessment more balanced (since projects would be easier to compare to one another); and
- broaden students’ understanding of what tools exist and how they can make programmers’ lives better.
The second change would be to provide more training on the “how” of distributed team software projects. Building Software Together covers the usual topics like build systems, debugging, and testing, but also teaches students:
- how to run a meeting;
- the basics of intellectual property law;
- what to do when you’re running out of time to finish what you’re supposed to deliver; and
- how to hand over a project when you’re done.
The third change is to recruit team mentors from industry and to teach them basic management skills while they are overseeing students’ work. How should you manage conflict between team members? How should you ensure that everyone is evaluated fairly, and that no one is shut out of the conversation? Every programmer who wants to become a team lead needs to learn how to do these things; this program would give them that opportunity.