As many of you know I’m doing a part time degree course (Politics, Philosophy and History) as well as being a self employerd web developer. One of the best things about this course is that I can go to extra lectures which complement the course. A couple of weeks ago I had the pleasure of going to one of these extra lectures, “The Philosophy of Wine Tasting” by Barry Smith. I must say, it was fantastic. I’ve never really thought about wine tasting before but this lecture was so interesting and Barry was so passionate and eloquent about his subject, I ended up wanting to buy a vineyard.
During the lecture Barry took us through the journey of a wine tasting, contrasting the difference between a novice (like me) and an expert. A novice finds a nice bottle of wine, likes it – it works for them – and that’s kind of it, thinks that all this “it smells of blueberry leaves” is a load of crap. Whereas the expert goes beyond their personal preference and analyses the multitude of components the wine has. The grape, the age, the weather, the process, even the earth, the people and history that all go into making the wine what it is. This started me thinking. Now, I’m a bit of a geek and pretty addicted to my job of coding. And I began thinking:
Wine tasting is a little bit like programming
Now run with me on this one.
When you first start, you’re a novice. You’re looking around for what you like, and when it works, you’re pretty pleased with yourself (at least, I was/am). But there is no background to it.
When I first started programming, I was one of those copy/paste kids that wasn’t quite sure why it worked, but it did, and I was pretty pleased with myself. This is like most people. They have no idea how or why Google works, or Word, or email, it just does. At the same time, people aren’t quite sure why they like a nice bottle of Jacobs Creek, any concept of what’s gone behind it, the effort put in.
But then people start to get more interested, start asking how it works, or why it tastes like it does. Then they get hooked. At this stage most people really go for it. They buy countless books, they read hundreds of articles, but most of all, they start to try out lots of new things. First they start with the foundation, either the language: Ruby, Java, PHP, C#, or the grape: Chardonnay, Cabernet Sauvignon, Pinot Gris and Noir. Each of these have different philosophies, concepts – call it methodologies, behind them. Dabble in these, test them out, see what works for them, try them out for size, for example OOP or “under ripening the grape”.
By now, an appreciation is being formed. Irrelevant of whether you like it or not, you can distance yourself from the actual “flavour”, but instead focus on the inner working of the code, or the wine. You can come to appreciate a well made wine, or well structured code. But also you can come to appreciate the history gone into producing the product in front of you. The age of the vine, the good summer it had a decade ago, or the frost suffered last year, the problems faced by people using the language, the particular itches that had to be scratched, experiences gained from other projects. Once you’ve truly immersed yourself for a few years you can come to appreciate the nuances, the culture, for want of a better word, the soul of a language or of a wine.
At this point, go for it, taste everything, try everything, become an expert. Know the most obscure syntax or date and time functions, know that if you have a cheap bottle of bubbly you can make it taste like the most expensive champagne you’ve ever tasted by complementing it with a little slice of Parmesan cheese on the side. There is so much out there to find out, to sample and to learn.
I have to admit, I love it. I love wine and I love programming. But the most important thought that struck me during this lecture was this: both the best wine in the world and the best programming most likely originate from the garage or shed of someone who is truly passionate about what they are doing.