UCSOP stands for [U]ndergrad [C]apstone [O]pen [S]ource [P]roject. It is a good name as far names go but the details are what make UCOSP unique. UCOSP is a course ran twice per year at several Canadian universities. About 80 students participate per year and said students are supposed to be some of Canada’s best, but they let me in any.
For the kick off of the semester, the students meet together once as a team for a hackathon. Our hackathon was hosted by Mozilla in their Toronto office. All flights were even paid for by Google as part of the Google Open Source Programs Office. This is the same office which hosts the Google Summer of Code program.
Like a regular capstone project the course is results focused and hands on. Also like a regular capstone course you’ll have a professor watching your progress. The difference is in your team. UCOSP’s goal is to introduce students to distributed teams. In your classes you’ll have worked on centralized teams. My university classes had tons of these forced group work. Yet, none of my prior classes introduced distributed cooperation.
Why are Distributed Teams special?
A distributed team lets people live where they want. Instead of trying to move the whole world to Silicon Valley a distributed team may have members on every continent. Many of the world’s best engineers like living where they live, and they’ll sooner work for an organization which does not force them to move. Of course for others moving is not a problem, but if someone earlier in life has decided to move there is a good chance the reasons for that move have not changed. Nor may they change just because you want to hire them.
A distributed team also brings other more practical benefits. By staying out of the insane property market which is the Silicon Valley area, you’re increasing employee’s take home pay by tens of thousands of dollars per year, for free! And by cutting out the commute time, team members will be saving an hour or more per day.
Challenges of Distributed Teams
Distributed teams bring their own challenges which may work against student’s weakest attributes: being self-driven and getting things done. Without supervisors or near due dates, many students find it a challenge to get work done. This is a problem for distributed work, you’ll have no one watching over your shoulder. You must know what a reasonable commitment is and have the will power to see the work to completion.
Communication also takes on a different form for distributed teams. For what it is worth: in person conversations are more effective than you might expect. A quick chat with a group member before class could get you unstuck on a nasty bug. Likewise centralized teams have an easy time of sharing progress, just talk about it over lunch. Instead distributed teams must leverage email or wikis. Documenting the project, the meta project, goal, reasoning, all take on extra weight. As does communication finesse. Online we lose non-verbal clues so you must watch how you say things and yet be more direct in saying them. Leaving details as implicit will generate confusion since there is little context for readers to read in between the lines.
In general, I think these skills come from practice, which is why UCOSP is special. The regular student might never contribute to a distributed project, open source or not, while in university. UCOSP is the rare course which gives students this experience while earning course credits.
If you’re a Canadian Computer Science student you should head over to ucosp.ca and see if your university offers UCOSP, or a similar course.