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!