Sunday, 13 January 2013

Start of Day

Over the Christmas holidays I was reading a rather strange cookbook by Tim Ferris when some vague ideas about programming and cooking started to crystallise in my mind. Too vague really to turn into a paper or an essay. Perhaps a blog might be a better medium to explore these ideas? Let's see.

One of the vague ideas is that the way we do programming today, the way we build systems, is wrong. Surely we can do a lot better? Think for example of Bret Victor's talk Inventing on Principle or Alan Kay's talk Programming and Scaling. (If you haven't already watched these, you need to stop reading and watch them right now. Go on. Do it!) Is it possible that we could really develop all our programs like this? Is it possible that our programs could be 100 or even 1000 times shorter? Even if the answer to these questions is only "maybe", then surely we should still put a lot of effort into trying, rather than condemn future programmers to suffer as we have suffered?

So part of what I'd like to do here is to review these and other related ideas; to look at "the road not taken"; to understand the ideas better by trying to apply them in practice.

Another vague idea is that programming and cooking have more in common than programming and constructing buildings. Developers sometimes like to call themselves "software engineers" or even "software architects", but the analogy is a bit thin. As Glenn Vanderburg points out, "software engineering" is quite unusual: the term "engineering" is generally reserved for those techniques which actually work in practice. Not so with software. And, despite the popularity of "patterns" in the software world, anyone who has actually read Christopher Alexander should understand that trying to copy the current practice of architecture is not such a clever idea.

Think instead of the organisation of a commercial kitchen, run by a "chef" — literally the "chief" cook — and not by a "culinary architect". Think of the respect for technique and the role of apprenticeship in learning those craft skills. Think of a more domestic scene, maybe on a Sunday morning. You break off from hacking some code and you go to the kitchen to put together a chili for lunch. Are these really such different activities? Can we learn something from the comparison? Whatever their medium, hackers like to understand how things really work, and relish the opportunity to practice their skills. (Perhaps the main difference between food and coding is that it takes a hacker to appreciate someone else's code, but anyone can appreciate food.)

So another part of what I'd like to do here is to see what we can learn from the comparison. But Nathan Myhrvold is not the only hacker to find food interesting in its own right. So I'll also take the opportunity to look at tools, techniques, ingredients and of course recipies.

Let's see how this goes.

No comments:

Post a Comment