The Doing-Things Divide

From 2014 to 2018, I worked with some talented people on a project, DH Box. The originator of the project, Steve Zweibel, was then a librarian at Hunter College who often taught technical workshops. At that time, workshops were pretty dependent on desktops housed in computer labs that tended to be tightly controlled by IT. This was frequently an issue, since technical workshops require that you install a bunch of software, and often exactly the kind of unrestricted, do-anything software that keeps IT people up at night. DH Box was a cloud-based toolset that did a bit of an end run around this issue, and let learners skip the installation process during a class or workshop.

DH Box was ahead of its time, which is a self-congratulatory way of saying that the concept of a computer lab in the cloud is now obvious and ubiquitous. Projects that we rolled into DH Box, like Jupyter (then IPython) notebooks, themselves invested more heavily in the cloud, and now have offerings such as Jupyter Hub. Even the Jupyter folks are a bit nervous now that Google offers their own Jupyter-derived offering, Colab, that is incredibly resourced in developer time and computation.

When I teach a one-off workshop these days, I often reach for resources such as Colab. You share one URL with learners, and they're in an environment that makes them comfortable, one that has little animations and nice pop-up documentation. A hosted Jupyter Notebook, or Colab, has a lot fewer weird things to explain at the beginning of a workshop. Participants can't type the wrong thing and wind up in vi, an ancient program that is almost impossible for beginners to escape. I don't have to deal with all the problems caused by Windows, which every six months makes some kind of change that hinders or confuses beginners to coding. I get nice feedback on my workshop. People say things like, "Hey, that was a lot of fun," or, "Awesome, seems like we got a lot done in ninety minutes. Where do I learn more?"

The more I teach these kinds of one-off workshops, however, the more I feel like I'm doing something of a disservice to learners, even given the fact that they tend to be happy with the lessons. I sense that, broadly, this type of lesson kicks the can down the road. Everyone is happy during the workshop, because, in choosing a comfortable environment, we avoid a lot of the pain and confusion that is typical of gearing up to do some programming. But that pain is still out there, lurking in wait for my learners. If they continue along the path to becoming technical, it will leap out at them.

Oh, you want to use the cluster and you think you're going to use Jupyter for that? Oh, you want to use that powerful library that requires a full-folder setup, juggling multiple files in many locations? Oh, you want to get that program that your advisor passed down to you working? Sorry, but you're back to square one. And, yes, you will open vi without meaning to. And, yes, you will be really confused.

Many years ago, the big barriers to getting started with programming were different. (I'm talking here about the developed west, as these are still very much barriers in much of the world.) First, you needed access to a computer. Second, you needed to know that programming was a thing. And third, you needed access to people or literature that would show you the ropes and get you going. When I was growing up, I didn't know any programmers, and didn't realize that programming was something you could sit down and learn. By the time I started, there was a whole internet of resources to learn from, and I happened to be part of a community that encouraged my early efforts.

Today, the barriers to learning technical skills in the developed west are quite different. I know many people who get started learning coding, and actually get pretty far. They have computers, they know that programming is a thing they want to learn, and they have resources and sometimes even people to learn from. Still, many, and perhaps even most, stall out. The learner, for a few months, gets on CodeAcademy, or on the service that used to be called Linda and is now owned by LinkedIn. (Sorry, Microsoft, not linking to you.) They learn all the major syntax of JavaScript, or Python, or PHP. They can assign variables and write a for loop. And yet, somehow, it doesn't quite come together, and they don't move on to the part where they can sit and write a program. They don't cross the doing-things divide.

A lot of this is just the reality of trying to learn something difficult. Right now, I can play five or six chords on the guitar I stole from my brother (thanks for the early wedding present), but it remains to be seen if I'll get to a stage of greater fluency, or even if I'll play something resembling a song. Learning is hard, and programming is also hard. But when I teach, my main goal is not for the people who are there to have fun. As enjoyable as the workshop might be, I want as many of those people as possible to start a journey that will take them to a place where they can build and do with the skills I'm trying to impart. I tend to teach people who come from a diversity of backgrounds, and I want to put this fire directly in their hands, and see what they do with it.

I do think there are forms of teaching that help learners cross the doing-things divide. In a few roles now, I've worked to build an ecosystem or a community that encourages sustained practice. I also think helping learners discover issues they urgently wish to address can get more of them across the gap. In choosing what to teach, I tend to prefer tools and skills that can be a little less comfortable at first, but which learners can grow into, like the command line.

Fundamentally, I sense that the doing-things divide becomes wider as we do more for our learners, and also as we, as a society, develop platforms, devices, and tools that allow us to do more while understanding less. In a world in which we have Squarespace and Facebook, it becomes more difficult to see why it might be useful to make your own website, and the early use cases for learning HTML and CSS seem wasteful when the same task can be done with a few clicks. And yet there is much that can only be done by crossing the divide and building with relative autonomy and independence. I do not wish to live in a world where we must ask the permission of a corporation, or even of a skilled but disinterested expert, to create places to gather and speak, to store our knowledge, or to teach and learn.

Whenever I teach, or write new curriculum, I'm thinking about the best ways to smooth the path for my learners. But at the same time, the path must not be too slick, with too much done or hidden. The goal is always to get as many learners across the divide as we can.

This Week on Iota

You might have noticed a gap in sending out these newsletters…but it's for a good cause. On October 2nd, I married my partner of fourteen years! The wedding was truly an amazing time, and we also had some fun adventures during our honeymoon in Puerto Rico.

This week I've returned refreshed to Iota and the Techne newsletter. I've started work on a new Python tutorial for beginners that is focused on gaining understanding and insight into how data is represented. The curriculum will be structured as an interactive conversation with Python, and will prepare learners to jump into further tutorials on web scraping and exploring data.

On the platform side, now supports featured images on curriculum pages ("iotas" and "sequences" in the parlance of the platform). So now there's no excuse not to share the posts on Twitter, and they'll come up looking nice with an attached image card. I've also created some infrastructure that should make it easier to build and send out these newsletters.

On the newsletter side, I'll be shifting to sending out a regular update every two weeks. This is so I can prepare some writing for other venues, and to give me some space to pitch some larger writing projects. If all goes well, however, I'll be able to send out updates that link to writing appearing in other places, and also to share new curriculum and information on offerings.

I'm really enjoying writing these updates! At any time, please feel free to hit reply and share your thoughts.