This term's UCOSP
projects all seem to be going well so far: most teams are writing and committing code, and several teams have adopted code review as a standard practice. I'm really hoping that at least a few UCOSP students will make a bid for places in the VeloCity entrepreneur bootcamp
this summer---it'd be great to see them take their ideas to the next level.
Elsewhere, though, things are not so rosy. The students in my CSC302
software engineering course had to hand in their first assignment last week. One team brought it in two days early (earning themselves two days of grace to use in future assignments), four of the others came in on time, and one team was a day late. That's about what I expect; what I didn't
expect, and was disappointed by, was that two teams were tossing files back and forth by email, rather than using the version control repositories we had set up for them. This is triply frustrating because (a) they've all had to use version control in previous courses, and (b) the only way they can submit their work for grading is to commit it to their repo. Many of these same students are in their final term, and will be entering the workforce in just over three months; somehow, we just haven't gotten through to them.
Coincidentally, my wife was up from midnight Saturday until 10:00 am Sunday babysitting a software deployment that ultimately had to be rolled back. She works for one of the largest IT consulting firms in Canada, and her team has updated the software in question several times in the past. It still took them seven hours to get to the point where they could tell that a few key things just weren't going to work, despite all the pre-testing they and other teams had done, and another three hours to re-set to a working state. Michael Nygard talked at length in Release It!
about how to not get into this situation, and I've thought more than once about creating an undergrad course to teach the necessary concepts, but realistically, if our senior students still think that version control is something you use once at the end of the project, and only because the prof says you have to, it's clear there are higher priorities.