A Sense of Adventure

July 16, 2004 – 12:37 pm

According to Larry Wall, the inventor of Perl, three characteristics distinguish good programmers: laziness, impatience, and hubris. Of these, I think hubris is the most important, although I prefer to think of it as a sense of adventure. The best programmers I know are all comfortable with:

  1. googling various combinations of likely-sounding terms until they find some software that might do what they want;
  2. downloading, installing, and trying out that software; and
  3. throwing it all away and starting over again if it doesn’t seem to be doing what they want.

With every passing year, more and more of what’s in the average programmer’s toolbox is free or open source software. Knowing how to go through the three steps listed above efficiently is therefore increasingly important. My question is, can you teach someone to do this, and if so, how? Can you tell an undergraduate class, “For 10% of your course mark, find a tool to profile Java applications, run it on the example code you’ve been given, and hand in the profile”? How do you mark something like that? How do you prevent cheating? Most importantly, how do you prepare students to tackle it?

  1. One Response to “A Sense of Adventure”

  2. The three characteristics you lay out in this entry are really quite insightful, and all three of them I’ve observed myself. With #1 in particular, I’m consistently horrified that more students don’t use the awesome search capabilities at their fingertips and put time into honing their search skills. #2 and #3 are similarly so.

    As to whether or not it can be taught, I think it’s more of an issue of pounding them with lectures about the value of this trifold dogma rather than designing assignments around it, since as you mention, it’s almost impossible to teach effectively in this way. This goes for everything, though; there’s no guarantee that students will continue using Version Control after 207, you can only hope that they’ve seen the benefits. Perhaps throwing them into the deep end and telling them to find tools to accomplish a task is a good start, though preventing cheating would be impossible unless everyone’s assignment was different.

    By David W-F on Jul 25, 2004

Post a Comment