For the last year I have been teaching passionate beginners about programming at DevBootCamp. In this time I have come to realize that one of my primary tasks as teacher is to process the patterns and idioms of the computer and of programming languages (as I have experienced them) and rareify them into metaphors that my students can grasp experientially and/or emotionally. Having found an emotional or experiential connection to the rareified metaphor, they are able to condense it back into the universe of text-on-screen where I show the praxis of the metaphor.
The primary advantage to this approach, as I see it, is that even if the praxis of “what to type” or “what is the computer doing” is unclear, having a series of metaphors whereiwth to communicate or reason about the praxis greatly faciliates understanding.
Given my own philosophical bent, one question I have been pursuing in discussion with my students is this: “What is the the metaphor that describes data’s nature?”
Data’s Sine Qua Non
It all started rather simply. I was a bit chagrinned to see my students
reaching for incorrect tools (e.g. sublime) when attempting to get information
from their server logs or from large files. Realizing it was my duty to make
sure that machine navigation was as well covered as
SOLID programming principles, I assigned work on researching the Unix primitve utilities:
sed, et al.
These utilities’ functions are generally described as the following:
|`cat`||Display the contents of a file on the screen|
|`head`||Display the first 10 lines of a file on screen|
|`tail`||Display the last 10 lines of a file on the screen|
|`less`||Display a “page” of screen data from a file|
While this synopsis certainly works for those learning to use a Unix system, it fails philosophically as one starts to learn more of the features of some of these commands.