Computer science-ing, or why alumni aren’t interesting but doing work is fun

Yesterday, Microsoft put on a “coding competition” in Kauffman Hall here on campus. It was billed as an opportunity to talk to some UNL alumni, do some coding, and get a chance to win some prizes. Sounds cool, sure, so a friend of mine and I went and signed up.

We learned upon getting there that we could have three members on a team, not just two, which was mildly notable, especially considering the haphazard structure of the contest, where everyone on a team was allowed to work on a computer by themselves. This also directly contrasted the original bulletin about the contest, but hey, things change, no big deal.

So we signed up, pizza and soda were brought in (which wasn’t really discussed beforehand), and soon we were given a URL to access to get the program instructions and sample inputs/outputs. So my friend and I downloaded everything and set to work in our language of choice, chosen as Java simply for familiarity and previous coding competition experience in Java.

What we found in the problems, though, were various inconsistencies and problems withing the descriptions. One problem told of a certain format for output and the sample output was formatted differently. Various parts were unclear and required a few clarifications. The contest overall was inconsistent, where different problems talked about different methods of input and output. One problem was literally “code a Sudoku solver,” which was easily searchable on the internet (and thus a very poor idea for a challenge problem). In fact that was one of the first things I did, though I didn’t turn it in.

We set to coding. And, for roughly one hour, we did just that. Coding mostly independently, we worked on five of the six problems (minus the Sudoku solver), and solved three, sort of. Included accidentally in the original contest files were the judges’ inputs for the program, which were to be computed yourself! and the output turned in as plain text. So,  one could just…work out the problems manually and turn in the text files. One of our solutions didn’t work on the sample input but worked correctly on the final input, so we left it alone.

We were honest about actually coding solutions, lest we get called out in front of strangers (and a few people we knew, including my friend’s girlfriend) so we just submitted the three we’d honestly solved (including the one we’d 90% solved but had solved for every case included in the final tally) when the time was up.

Four different teams got three problems right. That’s great. That’s really cool. So how do you break a tie like that? Well while one judge was tabulating results, the other two raffled off a Surface tablet (one that apparently Microsoft is trying to get rid of because of its poor support) and a pair of headphones. They randomly picked a winner using a function in an Excel spreadsheet, which was fair and random. And that was it.

But for the four team who got three problems right? The winner was based on submission time. So the winning team had actually submitted their three correct problems far ahead of the actual time deadline, because they didn’t think they would get any more right. Despite the official instructions saying that all teams would have about 10 minutes after the “coding” part was over to submit their results, the final winner was judged on submission time, which shouldn’t have mattered in any form.

So we lost. I suppose the winning team won fair and square—we were told that the winners would be picked based on submission time up front. But the inherent unfairness of such a system didn’t sink in too far (and I was very close to solving a fourth problem), so we lost. The final prize was only a $150 gift card, not the end of the world, but it’s still really disappointing how the entire contest was managed.

Fast forward to today. As part of a computer engineering course I’m taking, the members of the class were split into four “teams” and given a mildly complicated list of expectations for building and programming a hypothetical desk phone. We were given a limited amount of time to iron out the individual details of the phone’s operation and then given a quiz over tiny edge cases covering the phone’s operation.

The important thing to take away from the quiz is not that there was a “right” answer, but rather that everyone in a team should have the same answer. That is, the specification should be understood in the same way by everyone, if possible. Our team, the Green team, did poorly the first day due to time constraints (not enough time to finalize system behavior!), but took charge and managed to do very well on the second, taking the victory at first but actually getting the second-most amount of points due to a counting error.

That was a lot of fun. There was a drawing on the markerboard, there was discussion about “proper” phone behavior, there were a couple jokes thrown around, generally a positive experience.

Right before the class, an alum working at Garmin and two former engineering students from Microsoft (two of the judges from the programming contest) showed up to talk to the class about what projects they had in the pipeline and where their companies were going. The Garmin presenter had a couple pieces of hardware—one a camera for strapping onto a helmet for hikers/bikers, one a sort of iPod touch running Android and Garmin software, without phone capabilities—and the Microsoft presenters just talked about their work on Bing and how their teams functioned day-to-day.

Sure, a little of the information from the Microsoft presenters was interesting (like the concept of “four hours work, four hours discussion/publishing/etc.”). But, overall? The Microsoft presenters were not organized at either event. The Garmin guy was boring and didn’t have anything to say. And we the computer scientists and computer engineers and electrical engineers and what have you are supposed to be wetting ourselves with joy over working for these companies, is the impression I keep feeling from professors and other muckety-mucks.

Coding for an hour was fun, especially when I haven’t done such a thing in a while. Working in a group with a whiteboard and a time limit was fun and eventually satisfying, when we “won” and ultimately had fun working as a team. But the industry representatives who are supposed to be getting us excited about their work? Thus far this year, they haven’t done a very good job.