Lazycoder

8Feb/081

Head programmer or head chef?

I’ve been reading a lot of books about the science and craft of cooking lately. One series that I’ve really enjoyed as been Michael Ruhlmans exploration of what goes into making a great chef.

The Making of a Chef
The Soul of a Chef
The Reach of a Chef

One of the things that Ruhlman discovers as he talks to some of the worlds greatest chefs is that there is some quality beyond just technical expertise that these chefs possess. And he seems to think that it can be learned. At some point, cooking a vegetable perfectly just comes naturally to a great cook. The posses a sixth sense about what is happening in the kitchen.

Ruhlman also notes that cooking is a craft.

“Poetry is an art form. Cooking is a craft. (Oh, I know how the foodie blowhards – and even a lot of chefs – love to talk about food as art! But I’m sorry, noodles spun into towers and designs on plates with different color sauces do not equal art, so don’t talk to me about food as art or chefs as artists.)

A lot of what he is saying about Chefs I also see in programmers. We’ve all had that moment when we’ve been stuck trying to find a bug in our code and we call “that” programmer over. The programmer who always seems to find the bugs really quickly. The programmer who always has an easier/better way to write your code. He/She comes over and looks at your code, then points out the off-by-one error in your code almost immediately. I’ve found that as I’ve worked with code over the years that certain things just come naturally to me. I start to get itchy if I write “too many” lines in a method. I notice when code starts to repeat itself, and move the code out into it’s own method. I notice this in other experiences coders. Some coders never reach this point, they are still overcooking their meat and scorching their sauce.(to stretch a metaphor).

I also believe that programming is a craft, and not a science. Oh science has it’s place in programming. After all, all we are really doing is manipulating numbers at a high level. And the only reason these chips work as well as they do is because some really smart people understand physics. When it comes right down to it, you’re making something new out of raw materials. Sometimes you’ve made your stock ahead of time and prepped your veggies before you start to cook (e.g. using a library). But you are still using known standards and languages to create your output. Even the best way to learn how to program is still via an apprentice/mentor relationship.

  • http://www.xnadevelopment.com George Clingerman

    Very interesting observation. I’ve often described programmers as artists, but maybe you’re on to something with it just being a craft. I’ll have to think about that one.

    Nice post!