I have spent a lot of time looking over the source code for the VBC project, both informally and through formal code reviews, but yesterday was the first time I personally contributed code. One of the non-CS students was working on revising the game's introduction, putting in some placeholder stills in preparation for a meeting with our community partner. She was looking for a way to easily advance through the images as in a slideshow, and so I offered to whip up a script to do this, which I did. I reported the activity during this morning's stand-up meeting, and I used the opportunity to remind the team that I was available for this kind of help. I ended up spending about six hours today in the trenches, working on my own code as well as helping others to write or refactor theirs. It was much more hands-on than the kinds of reviews the students tend to request. I really enjoy working side-by-side with the students, and it makes me feel immediately and undeniably useful. The teaching moments percolate up from the problem domain as well as the problems introduced by novice developers.
We have had an informal tradition of after-lunch Frisbee at the VBC, a tradition that is greatly enjoyed by all participants. We postponed today's to end-of-day Frisbee, which gave us the opportunity to finish all of our milestones for the day, which we did. As we were playing, one of the students pointed out that without bad throws, there cannot be great catches. By extension, if everyone threw perfectly, there could be no stellar catchers. Another student—one with whom I worked on several pieces during the day—pointed out that this was like their relationship to me. Their programming is far from perfect, but they know that I'm a seasoned catcher who can keep the bad throws from ruining the game. It may be one of those analogies that one has to take at face value, but I'm impressed by the capacity for analogical thinking and honored to have been part of it. After all, my programming skill is clearly greater than my Frisbee skill.