In this post I’m going to be talking a bit about the paper Epistemological Pluralism, by Sherry Turkle and Seymour Papert—two researchers into education and technology that I deeply respect—and how I think it ties into a lot of ideas I’ve been having from studying more about the phenomenology of mathematics & my own writing on the phenomenology of computation.

The point of this paper is that it sets up a dichotomy between how programming was often taught as an entirely formal & linguistic activity but programmers actually demonstrate a variety of approaches and relationships to the act of programming—some much more exploratory, informal, and driven by subjective feeling than others.

Turkle & Papert relate this observation to Piaget’s theory that sophistication of thinking is a progression from concrete, context-laden, reasoning to abstract thinking centered around frame-of-reference-less views of objects. To put it in another way, we move from engaging objects as they are in front of us to abstract universals, things we interact with through our expectations of what they are & how they behave.

Their disagreement with Piaget’s theory is that while, yes, they think these differences in thinking exist they argue that it’s not a progression but mere difference. There is no reason to believe that people who start out at as concrete thinkers will or should necessarily become abstract thinkers as their life goes on.

The problem is that we do teach like abstract thinking is inherently better than concrete. Abstraction has a privileged position in the western canon. It’s hard to deny that. Of course, I have to go back to the observation I love so much from Weyl that the “objective” is always relative and the “subjective” is actually the absolute. You could argue that the phenomenology that I care about so much is all fundamentally centered around how to put the subjective-absolute back into the ways we do mathematics, science, & logic.

Coming back to the paper, the reason why they end up focusing on programming in particular is that programming has this aspect of being both abstract and concrete at the same time. We can run programs and engage our sight, our hearing, etc. in a way that will make it easier to connect the abstract nature of a programming language to the concrete and the sensual.

I love that they make this observation because it’s been something that I’ve been thinking about since reading Tieszen’s paper Mathematical Intuition and Husserl’s Phenomenology. Tieszen spends this paper arguing for Husserl’s approach to abstract, mathematical, intuition as being analogous to perceptual intuition. I’m not going to get into the weeds on the argument here, I’ll be saving that for another blog post, but I do want to say that one of the interesting things the paper leads to is that the constructive part of mathematics—which I think we can essentially identify with computation—also has to rely on potentially countably infinite mental acts to gain total information about an object, the same way you’d need to engage with any physical objects in an infinite number of ways learn everything about it.

Now, I go a bit further than both Tieszen and Turkle & Papert in that I think we can argue that code is both an abstract and a perceptual object. Code is language and abstraction, but it’s also something that can be run. The act of running a program and using it is engaging our perception, but in a broader sense than Turkle & Papert are arguing. It’s not just because programs can make sound or be visual. It’s that the engagement with code across time is, inherently, perception. We feel it with our body.

So from this framing, I think I can make the argument that Turkle & Papert’s bricoleur programmer vs. structured programmer is one of degree to which someone is engaging the abstract vs. perceptual nature of code. The bricoleur programmer is one who understands code by anthropomorphizing, putting themselves into the code imaginatively, or by using metaphors with physical objects they have experience with. It’s a very experiential kind of programming that comes from exploring the possibility space of programs like it’s a physical thing to be navigated rather than something equational to be manipulated & reduced.

So what’s the point of this paper. Mainly, it’s to argue that neither the bricoleur or the structured programmer is a better programmer than the other, but that they’re simply different from each other. Epistemological pluralism means that we need to allow space for students to learn in whatever ways they find comfortable, not forcing a particular kind of style or structure to code.

Now, where I want to follow from here is in how we deal with epistemological pluralism in mathematics. In particular, if we focus on constructive mathematics can we find ways to make math more accessible to many different kinds of people, can we make math a more perceptual thing open to experimentation, the construction of metaphor, and embodiment?