Thoughts on cast-iron seasoning, programming and everything…

Testing and the Structures of Learning Environments

| Comments

I’ve been fortunate this last year in getting to spend time in several radically different learning environments in a relatively short span of time. These experiences have gotten me thinking about the relative pros and cons, also about how I respond to the amount of structure the environment offers.

The University

Okay, let’s start off with the most structured of all, the university. “formal education” is certainly the most structured of all the environments I’ve been in recently. Apart from the lower-levels of the same system, I’m having a hard time of thinking of a more structured type of learning. I’ve written before quite extensively about specific problems I have with the established school system, so I’ll just leave it at that. However, university courses are highly structured. They are actually required to by the nature of the system. Even Fairhaven College, a place which essentially strives for less structure only achieves that, less structure.

An excellent symbol (and indeed, a representation) of that structure is the course syllabus. Contained in that one document are supposed to be all the expectations and requirements for “doing well” in the class. I noticed something towards the end of my college career. These documents started getting more formulaic. In fact, they seem to be approaching the type of jargon-ified meanings as “lawyer-ese.” For instance, my university had a policy that no assignments could be given to students during “dead week” - the week before finals - unless the teacher had mentioned that it was possible in the syllabus.

Because of this, many professors simply had a clause in their “stock” syllabus that mentioned that there might be assignments due during dead week, just to reserve the option. First of all, I have a problem with a document that requires so much boilerplate that there can be a “stock” version of it. Second, the system of rules and requirements that caused teachers to always include a certain statement in the syllabus regardless of their plans for the class, made the whole system into a game, pitting students against each other, and often also into opposition with their professors.

I resisted playing this game for a long time (most of my life actually). After taking two years off from school when my mother fell ill, I came back with a conviction that this game was a necessary evil that I needed to play, and play well. So I did. I got excellent grades in my last several quarters at Western in all of my classes, despite taking heavy credit loads of all difficult classes. But I didn’t learn as much.

My normal method of doing school appears somewhat lackadaisical compared to the studious diligence of many “good” students. But part of the reason for this is that I tend to follow my interests, and go well beyond what is being asked of me by the teacher. A classic example was a paper I needed to write for a history class in high school. I needed to do research on some historical topic, but on the way I stumbled upon some fascinating information about dolphins. I spent most of my evening reading and learning much about dolphins, and not researching for the paper. My high school pre-Calculus teacher summarized my attitude towards school by bestowing an award on me at the end of the year: “Highest Learning to Grade ratio.”

The Recurse Center

At the opposite end of the structure spectrum we have the Recurse Center. It is often difficult to explain to people exactly why I chose to go to the Recurse Center last fall. I usually fall back on paraphrasing the tag line from their website:

The Recurse Center is a free, self-directed, educational retreat for people who want to get better at programming, whether they’ve been coding for three decades or three months.

The key part of that statement for me is the “self-directed” portion. The vast majority of what I learned during my CS degree came from entirely self-directed exploration so it seemed like a natural fit.

But they are serious when they say self-directed. The structure of their environment is at a very bare minimum. About as bare as you can get I think and still build a sense of community around a shared experience. The structure and workings of the Recurse Center have been written about by many of the students as well as the people who run it. But for comparison’s sake, I want to mention the few structural elements that make up the Recurse Center.

First, they spend a half day at the beginning of the batch with a welcome meet-and-greet breakfast. This is followed by talks by the founders and facilitators to “set the tone” and people’s expectations for the batch. These mostly consist of talking about what they want the Recurse Center to be, and the lightweight social rules that they follow to help achieve that. After that, there are a few logistical matters like keycards and access to the chat client, but then you are thrown head-first into being at the Recurse Center: i.e. sitting in room with about 60 other people, and learning about programming.

There are a few more things, like the Monday night talks by the current resident or other interesting person, or the daily checkins with other RC’ers. But other than that pretty much everything is up to the participants of the batch. If people want to organize a daily reading group you can do that. Or you can find someone interested in pairing on a project with you. Or you can go to a short presentation/talk someone has decided to give.

If this sounds vague and confusing it’s because of the lack of structure. It sounds like a platitude, but spending three months at the Recurse Center really can be whatever you want it to be. A lot of people take some time to adjust to this looseness, and there are facilitators whose job is precisely that, to facilitate people in their self-directed learning. Whether that means brain-storming about projects to work on, or giving code review, or pairing on a particularly difficult problem their whole job is to be available to help RC’ers make the most of their time their. As a bonus they get to spend their days doing their own self-directed learning.

The structure - or lack thereof - of the Recurse Center was inspired at least in part by the unschooling movement as talked about by Grace Llewellyn. I’ve written before about how I fell in love with the idea of unschooling. But my time at the Recurse Center was the first time I actually got to fully and intentionally practice it. Three months was not long enough.

Despite the brevity of the experience, it did me a world of good. My last year at college playing their game to the hilt sort of killed something in me. I stopped enjoying programming, and I stopped seeking out learning on my own as much. Killed is a rather strong word but that’s how it felt. Maybe it would be more appropriate to say that it simply wore me out. I had no energy, no gumption left to put into anything. At the Recurse Center though, I built massive amounts of gumption. So much so that I haven’t seriously found myself lacking it since. If for only that reason, the Recurse Center was the perfect antidote to my time at university. And I rediscovered my joy in programming.

8th Light

Now I’m an apprentice at 8th Light. I sought out 8th Light primarily because of their apprenticeship program, and the remarkable similarity it bore to my own idealized conception of how to teach someone how to program.

It is sort of a fascinating and fortuitous coincidence that the amount of structure here is in between that found at the Recurse Center and in universities. Whether it is actually “just right” remains to be seen. So far the balance between guidance and self-directed exploration has been fairly ideal. Having weekly check-in’s with my mentors puts a firm bound on how long I might drift without purpose. Though I haven’t found that to be a problem here, it was definitely something I needed to be mindful of during my time at the Recurse Center. I also find it helpful to have a direction set for me, with concrete and achievable tasks to mark the route.

One interesting thought I’ve had recently is an analogy between the structure of these various learning environments and software testing. I think that the Recurse Center is much like the undisciplined hacking on a pet project. There may be tests, but they are impromptu and somewhat haphazard. More projected onto the structure of the code after completion than designed into it from the beginning. You can get a lot done in this fashion, but it’s also easy to get lost in the weeds (though this is largely the point as far as many RC’ers are concerned).

A university degree program is then more like poorly executed TDD. The tests are written first - mostly. But they are written with a mind to how the task will be accomplished and are tightly, almost inextricably, coupled to the implementation. They define a rigid but currently stable and verified system. But woe betide the person who tries to change anything, because much of the code and all of the tests will break.

8th Light then is TDD done well. The tests are written first and they specify the behavior of the system, not the implementation. The desired goal is achieved through (rapid) iteration and feedback.