xavier roche's homework

random thoughts and sometimes pieces of code

Coding Is Like Cooking

Many people try to compare coding (ie. “programming”) with more understandable concepts. Developers are sometimes compared to rock stars (some people would say divas, too), artists, rebels, gardeners and sometimes, err, obscure geeks typing on their keyboard (yes, peasants, unlike the all-mighty business guys, cough cough cough.).

I consider myself as a chef – yes, as in cooking. My interest in cuisine (I am French, I admit) has probably something to do with this comparison, but I have always found it adequate for multiple reasons.

The ingredients.

  • python: want to cook something quickly and without too much hassle ? try ready-to-cook products, such as mexican-style food. you won’t win a cooking prize, but you did not have the time for something better anyway (and hey, you washed the tomatoes and the salad, so it’s technically cooking) (Note: I’m going to be flamed for this one – guys, I swear I love python too!)
  • java: want to make a pie, but you don’t want to prepare the dough: use a ready-to-use pastry crust. yes, this is not as good as the real one, but hey, the blueberry tart is good anyway.
  • c: you want to prepare everything, including the sauce, vegetable cutting/cooking, etc. after six hours of hard work, and having burnt twice your dough, you can at least eat a decent meal with pride.
  • assembly: you want to make your own flour because, err, you don’t want to use someone else’s, and your flour will be better. and you want also yo make your own butter for the same reason. after one hard day of work, you have some butter, but did not have the time to grind the flour, but the cake will be the best one ever after you finish it next month.

Of course, there’s always a simpler solution:

  • configure && make && make install: hey, I don’t want to cook, let’s call the pizza delivery service! too bad I can’t order one with blue cheese.

Some people will also find themselves unable to cook anything without specific instructions. Other will never follow any recipe, but will only write down rough steps of what they want to do.

But there is an even better reason for comparing coding and cooking: comparing the food industry with the IT industry.

There are basically two trends when you want to work in the food industry:

  • The fast food chains: neither food nor salaries are great, but it’s a good way to start if you know nothing about cooking, and/or do not want to be cooking for the rest of your life. If you are good enough, you’ll start to do more interesting things as flipping burgers, such as management, running your own business, etc. And no, you won’t be a chef, ever.

  • The restaurants: food is great (at least if this is a decent place), salaries CAN be great too (especially if you’re famous), but prepare yourself for hard work and pain. You’ll start peeling potatoes, and if you’re good enough, in few years you’ll become a useful aid inside a brigade. And maybe, one day, a great chef inside a three-star restaurant!

The two career paths are quite different, but most people understand that you may choose one or another depending on your motivation toward food. I mean, if you REALLY love food, you’ll try to become a chef. And nobody is going to consider this as a weird choice, or even less desirable. Most people will actually think the contrary.

In the IT industry, you may choose to work for a company focusing on management, business, and not at all on software engineering – think of contractors and integrators. You will attempt to stop coding as fast as possible, because, err, only looser still code after few years in these companies.

But for those who like to code, want to excel at finding new algorithms, discovering new technical challenges, the path is not quite the same, and the company profile radically different.

That’s why focusing on the good types of companies is absolutely vital for a newcomer in the IT industry. Working in small startups or in obscure software editors can be a great choice. You will learn, and you will learn by coding. And after few years, you’ll still code, design great algorithms, and lead incredible technical projects. And if you don’t feel like coding in few years, maybe you should choose the other path.

TL;DR: comparisons are always a bit lame, but, err, this one is not that bad. Achieve excellence in your code as a chef can in cooking!