Teaching basic lab skillsfor research computing

It's Not Just the Tools that Differ Between the Two Cultures

In the conversation that followed Philip Guo's
blog post on the
two cultures of computing, most on focused comparing the tools used by
those two cultures, as discussed by Philip to create a contract. Some even
wondered if Software Carpentry instructors should perhaps become more versed
in MS Excel to meet potential students where they are. In so doing, we lost
the fact that even with the same tools, the two cultures would likely use them
differently. It's not about the tools, but about the users.

The convenient and powerful interactive interfaces available for many tasks do
more than enable users to easily accomplish those tasks. They also rely on
a separation
between the model and the view that creates a sense of magic for the user.
In fact, I would argue that software vendors trade on this sense of magic:
marketing increasingly complex capability to users without requiring any
additional understanding of the underlying models. I believe this has
fundamental consequences in how those users approach computers and how they
approach the community of programmers:

It allows cognitive disconnects about how things actually work (my own
teenage daughter still believes that shaking her iPod will cause her
browser to load faster), especially with respect to determinism in how the
computer behaves. I know many users who are not convinced that a computer
will give identical output each time it is provided with identical input.
They may agree that it should when pressed because they have been told so
and they don't want to appear foolish, but their personal experience as
seen through these advanced interfaces does not always support that.

It perpetuates the myth that the programmer community is made up of
"magicians" with skills that are unattainable by themselves. For
those of us that identify with the programmer community, most (all?)
of us can imagine the code and/or algorithms that allow the magic to
happen. Even if we couldn't reproduce the magic trick exactly, we
have a deep understanding of the slight of hand that enables it to
happen.

In combination, these two issues create a bifurcated sense of the
robustness/fragility of their computing platforms: all tasks for which a
sophisticated interface is provided are presumed to be robust while all
tasks that require lower level interaction are presumed to be fragile.
Moreover, since users rely so heavily on their computer for so many
aspects of their lives, they are reluctant to try anything that might
break the system. Hence my rallying cry to "awaken the hacker within" a
few years ago to my own research group.

I raise these points because if we really want to understand how to
better motivate our audiences, we need to better understand how they
think about computers beyond their preference for easy-to-use tools. We
need to understand that today's new graduates students have always lived
in a world in which computers were tools for the masses and not
specialized tools for science and engineering. Many of us, lived
through a time when nearly every use of a computer required some
understanding of how it worked.

So it's not just about the tools... in my experience, members of the
programmer community use high-level tools like Excel in fundamentally
different ways than members of the user community. We have mental models for
the data and operations that are different than the mental models used by
others. Perhaps we need to understand the differences between those mental
models, be sure which differences really matter (some may not), and start
thinking about how to revise and extend learners' mental models to enable them
to embrace the tools we are presenting to them... and all in a 2-day bootcamp!