Additional profile information on Alfred Thompson at Google+
The other week I attended a good sized programming competition at St Joseph's College in Patchogue New York. It was a great event and very well run. There were over 100 high school students in 34 teams representing about 16-18 high schools. I'd love to point you to an online news article about it but guess what? There aren't any. The event "wasn't news worthy" according to all of the news companies who were invited.
Now can you picture a sporting event of that size not being "news worthy?" Of course not. That many kids? Rival high schools in the same town? High tension over if the school that won the previous year could repeat with a new "coach?" Come on as a sporting event that would all be high drama and grist not only for news articles but for columnist musings. You know it would. But that was programming. It was students competing with their minds! Who cares about students who can think? No, we're all about students who can bash a baseball with a bat, toss a ball down field to be whipped into a net by a lacrosse stick, or perhaps tennis balls back and forth until someone missing one.
There are high school and college level programming competitions held all the time. TCEA in Texas runs a huge state-wide programming competition on a scale that matches any state-wide sporting event in the country. I suspect you'd be hard pressed to find out how a local school did in it from the local newspaper, TV or radio news broadcast though.
One of the things the FIRST organization does so well is to bring the sports metaphor into their robotics competition in a way that pretty much demands attention from the media. They create an event that is almost as much a show, good theatre, as it is a true competition. And competition it is - make no mistake about that! They have a great model and it gets some media attention. Still not enough though.
Why is it that the media doesn't care about students competing in "smarts?" Could that be part of the problem with the educational system? That society doesn't appreciate it when it works? A society gets what they reward. Where are the rewards (grades don't count) for the incremental improvements and demonstrations of educational success?
Is there anything so obvious to an experienced programmer that is so hard to get across to students than comments? Students know that they are so smart that they will remember everything about their programs. And of course they think they are smart enough to figure out any other program they come across. I used to try to get across the point of comments by telling this true story.
Years ago I wrote a cute little program to generate geometric shapes spinning larger and smaller. I wrote the program in FORTRAN on punch cards. It ran on a drum plotter. This meant that I had to explain not only punch cards but drum plotters. See how I snuck a little computer history into the story?
In any case I decided to write the program again but this time in Visual Basic and for display on the screen. Being a smart guy I would do it from memory. Everything went great until the first display came up and it was all wrong. But it was wrong in a vaguely familiar way. I remembered making the same mistake 20+ years earlier. What I didn't remember was how did I fix it.
The good news is that being a pack rat I had the original deck of cards in the attic and was able to find it. Sure enough I had a few comments in it and one of them said "this function takes degrees in radians." Yep, that was it - I was using the wrong unit of measure. A few minutes later and my program was doing what it was supposed to be doing. I have no idea how much time that one comment saved me but it was a lot.
This story usually makes an impression. Does it always get students to write enough comments? No, but there is improvement. And they remember the story.
I think the key learning there is that if something gives you trouble, if it is confusing or if it caused you problems with debugging or getting the algorithm right than you should comment it. Anything things that costs time once will cost time again if not explained properly. Do that and you will thank yourself later. Or someone else will thank you and that is a lot better than then cursing you out.
This is the eighteenth of a series of posts based on the book Programming Proverbs by Henry Ledgard. The index for the series is an earlier post and discussion of the list as a whole is taking place in the comments there. Comments on this "proverb" are of course very welcome here.
I have two invitations to the PopFly alpha available. I want to give them to a K-12 teacher or student. I want them to go to someone who will really use them. Someone who wants to do a cool mashup or build a really experimental, interactive web page. Check out the PopFly overview site and if you are really interested and don't want to wait for the "sign up for and invitation as wait" option let me know why I should send you an invitation. Send email to AlfredTh at microsoft.com with what your plans are for PopFly and where you teach or go to school. I'll send invitations to be two best responses I recieve before Friday midnight Eastern US time.
Edit: Brian Scarbeau is blogging about his experiments with PopFly. I have a couple of additional invitations now - for teachers/educators please. There is a request process at the site for everyone.