Programmers! Feeling Uninspired? Try Teaching.,

published at 7:08am on 08/29/11

You know that old adage “those who can, do, those who can’t, teach?” Well fuck that noise. Teaching is the most surefire way I’ve found to reinvigorate the programming brain and remind myself that what we, as programmers, can do is nothing short of magic.

A few weeks ago, four friends (two programmers and two non-programmers) sat down at my dining table. It had all started with a conversation over brunch months earlier. Both friends, tech-savvy, but not programmers, had expressed interest in learning more about the process that actually goes into building a piece of software. They both had to interact with developers on a regular basis, but they didn’t actually understand the special sauce that went into turning an idea into a shippable piece of code. And so it was decided that we would embark on a one day Code School, a crash course in learning how to turn a computer from a device that is used to a device that is controlled.

And so we met over my dining table. Over pancakes and coffee (for this kind of learning requires sustenance) we formulated a game plan. We decided on a project (a simple geo-aware todo list), and we decided on a language (python). The project came from a real need that one of the students had felt, and the language was chosen for its ease of deployment to Google App Engine. It was important that we had a project that had real meaning, and it was important that we chose a language that would be easy to ship. If you do not ship, you do not learn.

And so we started to code. Well, in reality, we started to sketch. On a whiteboard, we wrote about requirements. We talked about a minimum viable product. We talked about what data was needed and what data would get stored. We drew out the workflow and we decided on functionality. And then, once everyone was good and excited and ready to rock, we started to code.

And this. This is where it gets good.

Just for a minute, I want you to remember what it’s like to be a complete novice. I don’t mean that you’re looking at a new language and you don’t understand the syntax. I mean that you do not actually understand that there is a connection between the words that you type into your editor and the words that get printed onto the screen when you hit the go button. Do you remember that? Remember the joy that you felt when you first typed in those words:

print "hello world"

and out came that text, right back at you. And remember the feeling you got when you went beyond hello world:

import sys

print "Hello " + sys.argv[1]

and you pressed enter:

$ python hello.py Jesse
Hello Jesse

and it spoke to you. The computer spoke to you. You told the machine what to do and it did it. In that moment, though the exercise was trivial, and you knew it, and though you knew that there’s an entire lifetime of learning in front of you, in that moment, you moved from being someone who could not, to someone who could, and did.

That moment is empowering.

And the ability to gift that moment to someone is something truly special. To be responsible for that feeling, to be there to watch as their entire face lights up with the understanding of what they were just able to accomplish. That moment makes you better. It makes you want to run off and make discoveries of your own. It reminds you that anything you want is within your reach, with a little bit of imagination and a little bit of magic.

Hello World, indeed.

Filed under: Personal, Technology

At 8:44 pm on 08.29.11, Randi Miller said,

This is awesome! I wish I had people around here that wanted to learn together.

At 11:46 am on 08.30.11, Nora said,

Jesse – you are the most awesome teacher, thank you for the empowerment, can’t wait for the next class:)

Leave a Reply: