How working as a cook helped me be a better developer
When I was younger, I searched (as 99% of teenagers I guess) for a summer job to get some money. I ended up working as a cook in a retirement house, in one of the best work experience I ever had.
What started as a way to get money became a hobby, and I would put my toque on each time vacations would come (even on New Year’s Eve :)) for three years.
I keep this experience in mind even years later, and I can’t spend a week without mentioning it as an example. In fact, It even helped me get my new Job!
Here are some points I’d like to share with you :
I love the worflow you can find in kitchens. You always find yourself either working like crazy or in a ‘cool’ state. I have never seen any other environment with such peaks and variations in the daily workflow. This make hours fly, and you feel like you can work for days before feeling tired.
I got addicted to this way of working and think it really efficient as a developer. I always try to switch between states where I can burst hundreds of lines of simple code (like preparing the architecture for my core code, or designing a quick proof script for a method) and others where I can stay one hour without commiting any line of code (like searching for a better architecture, of enhancing my methods capabilities).
These alternate circles have to be made up (as you have to think which tasks to do beforehand), but they are awesome because they avoid bareness and keep you focused.
Writing a lot of code is no hard task for a developer, while searching a proper solution may be. Switching between low and high complexity tasks permit to keep your brains at its top level all day.
Workflow optimization, tasks switching
In a factory restaurant, most of the tasks are highly repetitive. My typical work day would start with something like cutting 60 kgs of tomatoes into pieces, or peal 45 kgs or potatoes. 200 cups of marmelade would also have to be prepared, together with 35 plates full of cheese.
Believe me or not, after several days you learn what optimization means ! Morning after morning, I would search for ways to save some time and perform those tasks a bit faster. As your hand becomes surer, you also learn that it is possible to perform several tasks at the same time as long as you do not need to OPERATE them at the same time.
Converted to the dev world, my question is : What do you do during compilation time? Where is your ant script?
If you find yourself waiting for something in front of your screen, you’re doing it wrong ! There must be something somewhere that you can be doing.
Clean up you mess, real time !
This is one of the first things my chef teached me when I started working in his kitchen. Whatever is used to prepare food should be cleaned right away. This seems easy, but can be really life saving when cooking. While in the rush, cleaning should NEVER be considered as optional and the “I’ll do it afterwards” idea must be seen as really dangerous.
A kitchen can become a huge mess in 20 minutes and you will soon find yourself surrounded by trash and dirty plates (if you are lucky enough not to slip on the tomato that was lying there, just waiting for your feet!).
You find yourself with 2 minuts free to help your collegue in the kitchen? Wash his dishes, you’ll definitely save him some time!
The same rule applies for software development : Let’s write some dirty code, I’ll clean it afterwards . . . Bad idea! When I write dirty code (everyone does, isn’t it?), I always constraint it in a method and don’t let it spread everywhere ! And if my collegue is struggling with deadlines, I try to help him by cleaning up all those elements that he hasn’t time enough to perfect. Doesn’t take much time to get into it (as it is constraint), and it will definitely help him work faster.
Which one . . .
Do you prefer?
From a more social point of view :
As a cook, part of my job was to operate a factory restaurant. I would be alone in a remote location, preparing lunch and serving 30 to 60 people. I will never forget what direct customer contact is. If you feel yourself bored in your dev job, find a way to see your final users and discuss with them.
Customer contact is a fuel that keeps you motivated, and make you give the best of yourself every day. What reward is better than a smile on someone’s face after you spent the whole morning preparing him lunch ?
Of course, with cooking even more than with software customer contact also means that if you screw up there is nowhere to hide (especially when you have a plate in your hand :)). I had forgotten about that feeling until some days ago, when Ignacio contacted me about FaceMovie. It gave me a great push of motivation. Customer contact is really the best fuel on Earth !
One last thing though : As cool as customers can be, never forget that you have to make money from them! At the very beginning, I had a tendancy to please them as much as possible, reducing my margin as a side-effect. . . Not a really good idea in the long run.
Not everyone uses a computer 8 hours a day
This is more a side note compared to the rest of the article, but still worth mentioning. I really think spending as much time as we do on the computer tend to bias us. While working in the kitchen, I met people for who computer was a strange and frightening beast.
They would not know how to copy-paste, would fill up an excel sheet while doing all the costs calculations by hand, and so on.
I think this effect tends to disappear (in fact my boss was pretty good at creating macros), but it still true though.
This can be a good point for you, as long as you take this into account when talking to your customers. And this also means that user experience is really the main key to enter those niches.
As I said, being a cook also helped me get my last Job. More people that you think are really into food, and this is one of the reasons I like to keep this experience in my resume.
At the end of my interview process, I met my big boss for the first time. The interview went pretty well, and the cook experience went on the table after some time.
We discussed about food for almost 40 minutes, and he explained me that he was actually using cooking as a ‘psychological’ tool for years.
When meeting big clients, he would rent a house instead of simply choosing an hotel. Everybody would work there for several days, but also live . . . and cook together.
Cooking is a social experience that definitely tie relationships; and it also shows what kind of person people are . . .
Who tends to manage, follow orders or simply fit at its place naturally? Cooking is both pleasant an reveals a lot about people.
I found the idea excellent, clever and elegant at the same time. It amazed me !
Needless to say today won’t be the day where I remove the word cook from my CV !
And you, what past experience makes you a better developer ? Do you love cooking, how do you feel yourself in a kitchen ?
I’d love to know more about your opinion and experience !