owen

On a mailing list to which I still subscribe (registered users only), a message was recently posted about pre-testing programming aptitude. Being a programmer myself, these topics always amuse me, and will no doubt be the focus of at least 10 minutes of our next work lunch.

In particular, the ensuing discussion focused on whether it’s easy or difficult to teach programming. The focus was perhaps more concerned with whether programming skills are important at all in comparison to problem solving skills, and the difficulty of teaching those. Being that one of the better sessions I attended at BarCamp Philly revolved around the curriculum required for community college computer classes to produce employable programmers, and the difficulty of finding programmers in the marketplace with any skill, I have much interest in this topic.

But rather than discuss any of that, I have a good story…

I may have mentioned in one of the prior ten years of blog postings that I was a gifted student in school. “Gifted” in the sense that I had special classes once a week, and generally did a lot of pushing on the doors labeled “pull”.

In the upper grades, our “assignments” in the gifted program involved visiting elementary school gifted classes and imparting some of our venerated teen wisdom. Our victims: The second grade gifted class of East Ward Elementary School.

We had quite a few good field trips with the younglings, including one to the zoo, which is a completely different experience when you’re a teen in charge of a group of 2nd graders that may be collectively smarter than you. But this post, “Peanut Butter Programming”, has to do with a particular unit with those kids on programming.

The 2nd grade DEEP (Downingtown Educational Enrichment Program - the gifted student program) teacher was one I knew from when I went through the program. She had prepared her students for a programming lesson by asking them to form two groups and collaborate on written instructions for creating the universal 2nd-grader food – the Peanut Butter and Jelly Sandwich.

Not really being told exactly what they were in for, we Seniors stepped in. In was just two of us, myself and one of my better friends, Derek. We were selected from the senior gifted class to do this assignment because of our experience with computers.

At a desk in front of the class we were presented with the components for assembling the PB&J sandwich; a butter knife, several slices of bread, and a jar each of peanut butter and of jelly. I went first.

“Take the jelly,” read the first kid from their list of collaborated instructions. I took the jar of jelly.

“Put jelly on the knife.” Hmm. Someone left the lid on my jar. I attempted to put the jelly on the knife. The jar just wouldn’t stay.

The class shouted a chorus of, “No! No!” So instead, I attempted to force the knife through the lid of the jar. Once again, “No! No!”

The unwrapping of the bread also became an issue. The teacher took this “three strikes” opportunity to tell the students that they failed to create a list of explicit instructions that would result in the creation of the simplest of 2nd grade foodstuffs. She encouraged the second group to take a few moments to revise their script, and then Derek stepped forward.

There’s something to be said about friends who are this cool. I think I find myself with a lot of almost highbrow intellectuals these days, people who have good thinking skills or recall, but have no creative synthesis. Derek was obviously gifted, and had no creative roadblocks.

The lesson ended with Derek shoving a surprisingly complete peanut butter and jelly sandwich in his pants pocket and running out of the classroom. “Take the sandwich” was the next to last command before eating. Had they simply optimized their code, Derek wouldn’t have had peanut butter in his pants for the rest of the day.

What is the point of all this, anyway?

I agree that there is a distinct separation between learning to write code and learning to solve problems using code. And while I think problem solving is important, teaching it’s application - whether it’s by writing C++ or listing step by step PB&J recipes - is perhaps equally so.

Remaining for future fireside chats: Why I think you can’t teach a programmer to be “great”, how we might do better to succeed at striving for great programmers, and the magic of the elementary DEEP classroom, which is home to posters of feudal castes, diagrams of unimpeachable problem-solving processes, and a chart by the door detailing the procedure to follow in case of a tornado, even though tornadoes don’t frequent our region.