Can creating software be like cooking?
by Andy Sylvester Sunday, April 24, 2016

Let's talk about cooking first. Someone wants to try something new, so they go look for a recipe, maybe consult several cookbooks, maybe do some online searching. Once a recipe is selected, the ingredients are found or purchased, the equipment is gathered, and the cooking gets started. If this is the first time for this recipe, there might be some mistakes, but hopefully the result will be okay. If the cook likes it, they may try to make it again.

Now let's shift to creating software. Someone wants to make something new, so they go looking for example code, maybe look at several websites. Once the survey of existing examples or tutorials is complete, the developer starts putting code together and creating an application. If this is new for the developer, there might be mistakes, but hopefully the app will do what the developer wants. If the users like it, more features might be added.

Cooking and creating software have a number of similarities. A recipe ingredient list could be thought of as a list of requirements for software (what does the software do?). The recipe is the instructions for how to assemle the ingredients. This could be equivalent to build instructions, or how to use a tool or library.

Some people might say “Well, anyone can cook, but not anyone can create software.”. I would disagree with that statement. When someone starts learning to cook, they start with simple recipes, and usually have some help from someone who has cooked before (mentoring? pair programming?). Similarly, someone who starts creating software starts with small programs, then moves up to bigger and more complex programs.

I think that people could be afraid of trying to create software (I can't do it, it's too hard, I don't know how, insert other reasons/excuses here...). I think the same excuses could be used for cooking – what do you think?