(This post was sparked by a conversation with my colleague Lauren, so I can’t take full credit for all the ideas herein!)
What stops people from doing computing? Is it installation? Knowing where to start? Lack of training? Lack of confidence?
I would hypothesize that not being able to see what you’re doing is a huge barrier to computing novices. I prepared a short presentation on R/dplyr last week and realized that the hardest sell for the tool might not be the installation or the syntax, but the simple fact that I was asking people to leave a tool that allows you to see everything (Excel) for a tool where you can’t see anything unless you ask specifically (R/dplyr).
And most other Software/Data Carpentry tools are the same way: you leave the comfort of your folder icons for a wall of text (shell), a track changes button for arcane diffs (git), and visible spreadsheets for lines of text that print out bits of your data (R). But this is a price that has to be paid: to really drive a computer, especially at a large scale, you have to give up what you can see.
When I say it out loud, it seems totally obvious–most advanced computing tools are text based and eschew a graphical interface, of course you have to give up visuals to do work!–but perhaps that’s the point. For those of us who have spent enough time in this invisible world (to the point where we “see” data using R more effectively than “seeing” with our eyes in Excel), it’s too easy to forget that this transition from “seeing with my eyes, pointing and clicking” to “seeing with a bunch of text commands” takes time and experience. The shift from visible to invisible can itself become invisible to the expert, making it hard to teach novices.
If this really is the case and I’m not just making up mental blocks, I think there are two implications for pedagogy:
- Draw pictures. Give learners something to see visually, so that it’s not all text commands.
- Use “seeing” commands often and draw attention to them. What do I mean by
a “seeing” command? Something that makes the invisible visible. For example:
git status; for branches,
git branch; for remotes,
git remote -v
- any programming language: print statements
SELECT * FROM table;
All of these commands allow someone to “see” the data or changes or location that otherwise might be unnoticed.