Techne and Programming as Analytic Philosophy

This week, as I was assembling furniture — my closest approach to a traditional craft — I was listening to Peter Adamson interviewing his twin brother Glenn Adamson about craft and material intelligence. Given that this interview was on the history of philosophy (without any gaps) podcast, at some point, the brothers steered the conversation to Plato. In particular, to Plato’s high regard for craft or — in its Greek form — techne.

For Peter, Plato “treats techne, or craft, as a paradigm for knowledge. And a lot of the time in the Socratic dialogues, you get the impression that what Socrates is suggesting is that we need to find a craft or tekne for virtue or ethics — like living in the world — that is more or less like the tekne that say the carpenter has.” Through this, the Adamson twins proposed a view of craft and philosophy as two sides of the same coin.

Except, unlike the carpenter and her apprentice, Plato has Socrates trying to force his interlocutors to formulate their knowledge in propositional terms and not just live it. It is on this point that I differ from Peter Adamson.

The good person practices the craft of ethics: of shaping their own life and particular circumstances into the good life. Their wood is their own existence and their chair is the good life. The philosopher, however, aims to make the implicit (or semi-implicit) knowledge of the good person into explicit terms. To uncover and specify the underlying rules and regularities. And the modern philosopher applies these same principles to other domains, not just ethics. Thus, if I had to give an incomplete definition for this post: philosophy is the art of turning implicit knowledge into propositional form. Analytic philosophy aims for that propositional form to be formal.

But this is also what programmers do.

In this post, I want to convince you that it is fruitful to think of programming as analytic philosophy. In the process, we’ll have to discuss craft and the history of its decline. Of why people (wrongly) think that a professor is ‘better’ than a carpenter.

Let’s start with craft. When I think of a craft, I think of working with my hands — usually on some particular material. Producing a practical and useful result. This work requires skill, a skill that develops with time and practice. It is a skill that is adaptive and dynamic, adjusting to the particular features of a particular material. After all, no two pieces of wood are the same and have to be worked slightly differently. And a particularly important feature of craft-skill is that it is often tacit. It is impossible to learn a craft from just reading a book or even watching somebody else do it. You need to actually participate in the craft. I’ve learnt this first-hand: after watching a YouTuber easily drive masonry nails into a brick wall, I picked up some masonry nails from the store and tried my hammer — the result was a chipped wall and a lot of bent nails. And so I switched to a drill.

From this highly embodied and physical conception of craft that is tied to particular materials, we often use metaphor to extend craft. We can talk about a well-crafted sentence, the craft of poetry, etc. The physicality disappears, but the particular and tacit nature remains. It is hard to give specific rules for crafting a good sentence. And the goodness of that sentence will be dependent of the specific context. I can read all I want about writing well or examples of good writing. But that won’t help me craft a good sentence without building up tacit knowledge through actually writing. Through trying and trying again. And even after 279 blog posts, my sentences can still be just as bent as my masonry nails.

For Glenn Adamson, this tacit knowledge of craft is a sort of material intelligence. An intelligence that he sees as currently in decline. He sees this decline in both how little material intelligence most people have and how little they respect it. This is very easy to see in how people talk about technical schools versus universities, for example. Or plumbers versus professors. We don’t see the same disdain for craft in Plato.

What changed?

Glenn sees a turning point around the industrial revolution. As machines take over the production of previously hand crafted artifacts, say chairs, the associated skills start to seem more quaint and old-fashioned. Is it really intelligence if a mindless machine is doing it? And the carpenters start to lose their prestige. And this isn’t limited to the material intelligence of craft. In more recent years, we can see it with the slippery definition of intelligence more generally. Would being good at memorizing make me intelligent? Maybe in the 1800s, but not when my laptop can load Google. Would being good at chess make me intelligent? Maybe before Deep Blue beat Kasparov, but not when my laptop can run a chess program that beats grand-masters. Would being good at Jeopardy make me intelligent? Maybe before IBM Watson easily defeated Jennings and Rutter. The common trend here seems to be that as soon as machines outperform humans on a given act, that act and associated skills are no longer considered central to intelligence. They lose their prestige.

But how did machines come to build chairs, memorize books, play chess and Jeopardy? We built them. We programmed them.

To teach a machine how to do these activities, we had to turn our tacit knowledge of those activities into explicit formal knowledge. In fact, I would consider this to be the central job of a good programmer today. To understand the task that needs to be done and then find a way to express that task (often presented in a tacit way or through examples) in a formal way. After all, a computer program is just a logical encoding of know-how.

This brings me back to Socrates asking his interlocutor to define Justice. Part of the exercise, is — of course — to make the interlocutor doubt their own confidence in their tactic knowledge. This is an important aspect, but it doesn’t seem as central to the work of a modern analytic philosopher. The other part of the exercise is to find a definition of Justice that we can discuss explicitly. This seems more central to the analytic philosopher today. Finding a formal definition and devising tests for its correctness — trying to answer if it is the ‘best’ definition and how we should act on it. Similar to how a programmer wants to find a good formulation of a process, test its robustness and then optimize.

Of course, philosophy isn’t limited to ethics. One of the best features of it is its recursive nature: doing philosophy of philosophy, for example. We see the same with programmers and machine learning: teaching a machine the art of formalizing tacit knowledge. Unfortunately, the current trend is to formalize that knowledge as a series of activation weights that aren’t easily interpretable by people. But I digress.

Why is it useful to think of programming as philosophy? One hope is that recognizing the kinship might encourage more programmers to engage seriously with philosophers — at least as case studies of how to approach formalizing very messy tacit knowledge. It seems less important to get philosophers engaging with programming, since there are better motivations for that. However, we can benefit philosophers, too. Computer science has an arsenal of tools for reasoning about programs and their properties. Many of these tools don’t exist in philosophy. We can consider adding them to our toolbox in a sort of algorithmic philosophy.

While the Adamson twins view craft and philosophy as two sides of the same coin, I want to suggest a third side: programming.

I’ll leave figuring out that geometry for another time.

Advertisements

About Artem Kaznatcheev
From the Department of Computer Science at Oxford University and Department of Translational Hematology & Oncology Research at Cleveland Clinic, I marvel at the world through algorithmic lenses. My mind is drawn to evolutionary dynamics, theoretical computer science, mathematical oncology, computational learning theory, and philosophy of science. Previously I was at the Department of Integrated Mathematical Oncology at Moffitt Cancer Center, and the School of Computer Science and Department of Psychology at McGill University. In a past life, I worried about quantum queries at the Institute for Quantum Computing and Department of Combinatorics & Optimization at University of Waterloo and as a visitor to the Centre for Quantum Technologies at National University of Singapore. Meander with me on Google+ and Twitter.

4 Responses to Techne and Programming as Analytic Philosophy

  1. Rob Noble says:

    You write, “To teach a machine how to do these activities, we had to turn our tacit knowledge of those activities into explicit formal knowledge.” But often this isn’t the case. For a human to memorise thousands of digits of pi necessitates [sophisticated algorithms](https://en.wikipedia.org/wiki/Art_of_memory), exploiting intelligence to overcome limitations of longterm memory retrieval. But a machine has no need of this craft. On the other hand, we admire computer programs that can recognise human faces, which children can do without special training. Thus programming often involves either discarding knowledge or creating new knowledge because of fundamental differences between the workings of mind and machine. Making sense of the human world is an explicit goal of philosophy but only an occasional happy byproduct of programming.

    • You make a good point, Rob. I shouldn’t have used the word ‘turn’ but instead something closer to ‘create explicit formal knowledge in domains where we have only tacit knowledge’.

      But, I don’t think it is a problem for the analogy that the transformation between tacit and explicit knowledge is creative. A lot of philosophy is normative, and in so far as it is normative, it often prescribes a specific way to do things that differs in some way from our intuitive approach. We can see this often in ethical theories or political philosophy. It is super explicitly almost anywhere where Marx gets quoted.

      In the process of doing this, I think that philosophy also discards knowledge (or at least tables it for later consideration) and it definitely creates knowledge because of fundamental differences between the workings of our lived experience and formal language.

      As for human faces (or walking, etc): I think that really highlights the difficulty in the transformation between tacit and explicit knowledge. It shows us just how different formal language is from our lived experience. This is philosophically significant. And I think there are lots of examples in philosophy of where our explicit knowledge lags far behind our implicit knowledge.

      Now onto your final sentence:

      Making sense of the human world is an explicit goal of philosophy but only an occasional happy byproduct of programming.

      I think that ‘making sense’ might be too passive of a term. To again turn to Marx, I think it’d be fairer to say that ‘Understanding and/or transforming the human world is an explicit goal of philosophy’. But once ‘transforming’ is included, I don’t think programming becomes as easy to exclude. Of course, given our current social organization, it might be the case that academic philosophers more often aim to ‘understand’ and only ‘transform’ as a happy by-product, while programmers more often aim to ‘transform’ and only ‘understand’ as a happy by-product.

  2. Pingback: Overcoming folk-physics: the case of projectile motion for Aristotle, John Philoponus, Ibn-Sina & Galileo | Theory, Evolution, and Games Group

  3. Pingback: Methods and morals for mathematical modeling | Theory, Evolution, and Games Group

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.