Tuesday, May 01, 2007

Coding Contest wrap up

You may have already heard the podcast James posted yesterday. I think it sums up the contest quite well, so I will just add a few bits here that didn't make it to the recording.

An additional complication for the contest finals was that, while in the qualifier round participants had to match symbols exactly (e.g. "Balloon" and "Balloon", or "RightArrow" vs "RightArrow"), the symbols for the finals were rotated in four ways (i.e.: "BalloonStraightUp", "BalloonRotatedRight", "BalloonUpsideDown" and "BalloonRotatedLeft"). The idea was that since one of the computer's registers was faulty, players would have to debug the computer and would thus be directly exposed to rotated symbols. But in the real memory game you can match rotated cards, and so could the computer even though it was not advertised. This was designed to throw an additional monkey wrench into the finalists' players --- in particular, into the part of their program that parses the computer output. In fact, the reference solution I wrote dealt with that by taking out any trailing occurrences of the four rotation suffixes from non-nil register contents.

In my experience, both through participating in last year's contest as well as organizing this year's one, what wins them in this format (qualifiers followed by blitz round) is the ability of participants' programs to withstand change under extreme circumstances. Smalltalk truly shines when it comes to dealing with this kind of situation, and so it will when your business application needs to react quickly. I saw this first hand with Kapital at JP Morgan. This huge application lives in an environment where things change very quickly and lack of flexibility is quantified directly in terms that could not be more clear to understand. I remember the experience fondly, and I wish I could share specifics about the amazing amounts of change Kapital can take without even blinking. It is beyond cool.

Back to more practical matters, the source code for this year's contest, as well as the source code for the reference solution and sample game servers, will be made available after the conference.

Thank you for a great contest everyone!

No comments: