Cooking & Coding
I love to code. I love to cook (and eat).
Masterchef Australia is one of my favorite TV shows, because of my love for the latter. And because of my two loves, it was quite natural for me to draw comparisons between the two - Coding and Cooking, and more so between the format of Masterchef & how the technology team of at Glitterbug works.
In my opinion Masterchef has one of the most brilliant set-ups when it comes to reality shows. They don’t have a single dictator who fires the contestants at his whimsy, nor do they fire contestants based on votes (which are always decided by ‘beliebers’). They take their time to test each cook, give them ample time to learn & shine, before the panel makes a call. I really do believe, it’s a good model to have in a company. Not for firing people, no. We’re don’t believe in the policy of firing our people. But for testing any new technology or a new data storage or a programming language or even just a piece of code. For the sake of sanity, I’d be referring to these as STUFF.
Getting the Basics right
Cooking:The first thing that Masterchef does is, take a test of basic skills - Slicing, Shredding, Boiling, Frying, etc. Anyone who fails the basics is out.
Coding: If stuff doesn’t meet the basic bare-minimum needs or doesn’t solve the basic problem, it’s out. Stuff needs to work.
The Mystery Box Challenge
Cooking: The test to see how do the chefs thrive, when they are asked to cook with unfamiliar ingredients.
Coding: Stuff has to go through a similar test - How will it fare when the input isn’t what you expect it to be? Right now, you may be liking one feature of a particular language, but how will it fare in the longer run? Will a particular database hold up, while scaling? It’s hard to design a mystery box for oneself, because, du-uh, it’s supposed to be a mystery. But it’s foolish not to try and cover bases.
The Invention Test
Cooking: The invention test gives you an open pantry to pick any ingredient you want and come up with a fabulous dish that is very you.
Coding: The same goes for Stuff. If you have the complete freedom to pick any technology stack you want and the freedom to drive a project in whichever direction you see fit, what would you create? If that thing can not be done a better, faster and more stable way by any of the existing stuff you know, then may be this is THE STUFF for you.
Fix That Dish Challenge
Cooking: Chefs have to fix a dish that’s been badly prepared by someone else.
Coding: Every coder prefers to write a hundred lines of fresh code, than to fix ten lines written by someone else.
The structure of Stuff becomes paramount here, because if the Stuff isn’t easy to read and understand, then it creates a dependency on the person who writes it. A dependency, no organization wants. The support from the community also comes into picture, coz if you can’t identify what’s wrong with the system, and have no help from the community, chances are you’ll have to rewrite the entire thing, which is not always an option.
The Pressure Test
Cooking: It’s a test to see how chefs handle situations of extreme pressure and create a fabulous dish in crunch time.
Coding: In every coders life, comes a time (often many a times) when he must meet unrealistic superhuman deadline, or fix a piece of code that’s already live. The stuff must be easy enough to use, that you can implement things fast, and efficiently. If there are no frameworks, libraries, plugins, apps, etc that support the Stuff you want to use, chances are you’re going to fail the pressure test.
The Celebrity Cook-Off
Cooking: The winner of last task, gets a chance to test his cooking skills agains a renown celebrity chef.
Coding: You can do all that is discussed above, build a case that why your Stuff is the best Stuff out there, but it’ll always be hard to convince someone that your stuff is better than theirs (no pun intended :) We, at Glitterbug, put such debates to rest by a cook-off or a code-off challenge. Where the participants code it out in their favorite stacks and decide for themselves, which is the better solution to implement.
People can draw analogies in whatever they feel like, but I do believe this system works. It works to make us MasterCoders, and it ensures that the Stuff we use or create - works.
P.S. We have Browser Cookies, CherryPie, Django Recipes, Buildout Eggs, CakePHP, etc for a reason. :)