Developing software is like participating in MasterChef

Written by crazydiv | Published 2017/09/26
Tech Story Tags: tech | technology | software-development | productivity | self-improvement

TLDRvia the TL;DR App

Yesterday night, I ended up watching MasterChef Australia while shuffling channels on TV, while a selenium scraper was taking it’s time to build a image dataset I needed. Even though I have absolutely no interest in cooking, I observed a lot of similarities with how I work on a software project.

I’ve heard people frequently saying that coding or getting into a specific domain like AI is not everyone’s cup of tea. My response is inspired by the movie Ratatouille:

Anyone can code, one just needs to be passionate about it!

Below are a couple of similarities which I’ve observed while working on different stacks and with a different variety of clients over the years.

Why do you cook?

A contestant, crane operator by profession, was asked this question and he responded:

This helps me relax, clear my mind and most importantly I genuinely feel happy when the food I prepare brings smiles on the faces of people who eat it.

We obviously don’t feel good when people get frustrated or get sad after using a product which we’ve built. It’s about solving something. Anything. It’s about making the end-users happy.

Must-know before cooking

You don’t start cooking, unless you have thought your dish through

People who rush into the pantry for ingredients are the ones who tend to lose out at the end of the competition. Knowing what you’re getting into, planning sprint accordingly and selecting a suitable technical stack to avoid a mid-project or a go-live crisis is imperative for a good development team. Here’s a good take on understanding the one of the most misused term in our industry: Premature Optimization

Its usually not worth spending a lot of time micro-optimizing code before it is obvious where the performance bottlenecks are. But, conversely, when designing software at a system level, performance issues should always be considered from the beginning.

Cooking is different than Ready-to-Eat

It is easy to plate-up a ready-to-eat dish but it gets very difficult to enhance it. While it doesn’t make sense to write everything from scratch, we should not misinterpret it and use a ready-to-eat/do-it-all product which promises to solve all the problems like a magic wand.

“A tree without roots is just a piece of wood.” ― Marco Pierre White

I always prefer using libraries and frameworks over ready-made products, especially the ones which are open-sourced. And while I’m using them, I try to spend time to understand how they work behind the scenes. I feel that having a good core-knowledge always helps.

It’s also about mentoring and helping each other

Once a contestant accidentally dropped her entire bowl of sauce she had prepared. A “competitor” who had almost finished her dish came to her help and both of them worked together to make the sauce. Software development is also similar in this sense. We make time to help fellow developers, to collaborate, discuss and learn.

Push, Push, Push!!!

There’s ALWAYS a time-limit

Given enough time, we might be the best cook out there. But we don’t have the flexibility of cooking endlessly. Getting the best possible dish out of the given time requires powerful time management, planning and dynamically adapting to situations as they appear. Productivity hacks can provide a boost in utilising the available time.

Cook what you’re comfortable with

When given a choice, contestants always prefer a base ingredient they’re comfortable with. Looking at what the competitors are doing kind of distracts us from doing what we can do best. Also, we don’t need to pick up each and every new shiny piece of tech and plug it into a live project. It’s important to understand and evaluate the benefits the new piece will bring and not do it just because everyone else seems to be doing it.

Improvisations come at a risk, but sometimes are inevitable

Halfway down the allotted time, contestants realize that something is not correct and they have to re-think the dish. It always has a huge risk factor associated. It also means intelligent use of available resources. Need vinegar but it isn’t available? No problem! Use lemons for the acidity. One contrast here is that sometimes we can choose to extend the delivery timeline if we believe that given the extended time, we can put the dish back together in shape.

Some dishes require you to prepare X hours straight

It is a test of endurance and focus. Contestants usually have a 100 item check-list under very hard deadlines and missing a step cuts points. They sometimes also have to take a hard decision to leave some elements off the plate, if they’re too time consuming and not absolutely critical. We too, often face requirements where we have to stretch ourselves physically and mentally to get things done. However, there is a limit to this. One obviously can’t cook all-day.

One inspiration from MasterChef is to always keep a check-list before starting and keep checking the boxes as they get completed. I’ve been in this situation a lot of times, where after pulling an all-nighter, in the morning I get the feeling that you’ve completed everything. But I find something always gets missed when I come back the next day. Keeping a checklist helps reduce chances of this happening.

What makes a good dish?

Stay happy!

“Happy cooks cook happy food.”― Marco Pierre White

Stay happy. Enjoy what you do, and eventually good dishes will start churning out. :)

Perfect blend

A great dish usually, is a perfect blend of multiple elements and textures and not just a single one. One difference with respect to development is that a hierarchical team is preparing a dish and multiple sub-teams prepare components in parallel, and later, merge and integrate it together.

Each component has it’s own taste and flavor, the key is to establish the final balanced taste when we add it all together.

A well-presented dish isn’t necessarily a good dish

A bad-tasting or unbalanced dish can still look pretty from a distance. But when it comes to taste and judging, those get eliminated. Similarly, a perfectly good tasting dish if presented poorly, cuts points. Presentation and preparation are interlinked. In context of web/phone development, users should find the UI/UX comfortable and pleasing and the product should also deliver on the expectations in terms of functionality.

I might be good with Chinese dishes, but what if judges prefer Italian?

It is also about doing something I’ve never done before. It’s about exploring uncharted territories and hoping to get the best out of it. Again, this does not imply plugging shiny tech just for the heck of it!

Clean kitchen

Even during a fierce competition, contestants try to take time to clean their table every once in a while, before proceeding further. The same dish could be cooked by stumbling across the kitchen, burning things, keeping unclean plates and utensils. But if the code practices and the processes are not in place, there always will be difficulty serving the dish to a large scale of customers.

Don’t Panic

This brings me to my last observation. There’s a lot of practice and rehearsals done over the years, before the contestants are able to come up with a fine delicacy. Follow the hitchhiker’s guide and Don’t Panic. No matter how tough or unrealistic the deadlines seem sometimes, the only way to plate-up a beautiful dish is by keeping our calm.

As a side note, if anyone is interesting in getting into ML/AI , here’s some inspiration

How can beginners in machine learning, who have finished their MOOCs in machine learning and deep…_Answer (1 of 3): Courses are a very very efficient way to learn, so starting there definitely makes sense. After…_www.quora.com

“Every world class ML researcher I know has spent a lot of solitary hours implementing algorithms, tuning hyperparameters, reading papers, and figuring out for themselves what does and doesn’t work. I still find this type of work fun, and hope you will too.” — Andrew Ng.

Thank you very much for your time. And, until next time, have a great day! :) If you enjoyed it, hit that clap button below as many times as possible! It would mean a lot to me and encourage me to write more stories like this

Let’s also connect on Twitter, Linkedin


Published by HackerNoon on 2017/09/26