Knitting Code

Last night, I watched Greg Wilson‘s excellent talk “What We Actually Know About Software Development, and Why We Believe It’s True” – which I now think is perhaps the most important video about software development that I’ve ever watched:



I watched it with Gill, which is quite unusual, because most “tech” talks hold no interest for her. But actually, most of it is perfectly comprehensible to somebody with zero programming experience. Not just comprehensible: also interesting, informative and, in its conclusions, hugely relevant.

Watching it was fun. It prompted loads of conversation. We paused it regularly as I explained certain concepts, and Gill offered her opinions – opinions which, by some strange voodoo, would often be echoed back by Greg Wilson further into the talk.

Despite all that I felt that, at some level, I struggled to articulate what exactly it is that developers do, how best to describe the arcane rituals of bending machines to our will through the use of symbols. In particular, I got caught up trying to explain what “high-level” and “low-level” languages are, and how they differ.

Today, reflecting further on this, I stumbled on the perfect analogy that brings programming into her world: a computer program is a knitting pattern. And a programmer writes those patterns. A low-level language requires that you describe each motion of the needles, or perhaps that you “knit one, perl one, knit one…”, whereas at a higher level you might – I don’t know, my knowledge of kitting breaks down a little – issue a more general instruction which describes in a single sentence how to knit many rows.

I’m sure this analogy has been used before – in fact, I’ve been aware of the link between knitwear and code since Access Space’s 2007 “Open Source Embroidery” exhibition where I took this photo:
Crocheted computer cover, by Lisa Wallbank

…still, it pleased me to stumble again on the similarities between computer-instructing and textile-instructing.

Today, fired up the talk, I bought the Greg Wilson-edited O’Reilly book Making Software: What Really Works, and Why We Believe It (I already own and love the companion book, Beautiful Code: Leading Programmers Explain How They Think). So far the book is dryer than the talk, but promises some really useful (and evidence-based) advice.

And now, my brain is stretching – in a way that it has on-and-off ever since I read the fascinating semi-scientific paper on promiscuous pairing and beginner’s mind and subsequently signed up to the Psychology of Programming Interest Group – thinking of ways I can revisit my now-rather-dated bachelor’s degree in Psychology and combine it with my subsequent 20+ years’ in software development. I have ideas. Let’s see where this goes…