Building an Understanding

Recently I've been working with some students as they debug their programs and reflecting on their approaches.  Most thrash wildly when something doesn't work, sure that if they just do this-one-thing, or that, everything will work!  They cast madly about for the magical StackOverflow- or Google-incantation that will put their code back on the rails.  When it doesn't come, they blame themselves instead of their process.

First, let's begin where we all begin: lost.  I think it's important to call this out, because I see people assuming that only they are lost.  They aren't.  Programming, even when you're an expert, always involves doing something you've never done before, even if using tools or techniques that are familiar: imagine driving your car, but navigating it somewhere new that you've never been.

Second, what is the opposite of lost?  It's an interesting question because it requires one to think about the feelings associated with being somewhere.  To be lost is to not know where you are.  But even when you aren't lost, you are still in the same place.  How you interpret that experience is important.

Is found the opposite of lost?  I think many people assume so.  They imagine a perfect binary inversion of lost into found, a eureka moment that brings everything sharply into focus, all at once.  There are a handful of times where this happens, but for the most part, I've discovered that it's better to give up the idea of finding what I need and instead focus on understanding how to build it.

For me, understanding isn't a switch that starts out in the off position.  Most of the time, I am neither lost nor found, but moving in between.  In fact the space between these two "binary" extremes turns out to be exceedingly large, like sliding along the z-axis in what looks like a simple two dimension co-ordinate system.

Understanding, when it comes, does so in small amounts.  I have to collect it over time.  Rather than walking through a door that separates lost and found, I have to assemble materials needed in order to build a path between them.

Understanding is built, slowly.  You often have to put in a lot of time and effort.  It's usually not possible to take a shortcut.  The length of time it takes, the frustration, the lack of clarity--none of this is a reflection on you.  This is what it takes to build an understanding.

Show Comments