Cooking and Coding – Mixing My Passions
I’m reflecting on two of the things that truly define my character: cooking and coding.
One I do for pay and the other I do purely for the love of sharing. Both passions have surprisingly overlaps. Because I enjoy being intentional about my craft of coding, which is admittedly young, I think about it in terms of the relatively mature learnings of culinary history.
Let it Rest
Great chefs have told me on many occasions that the finishing touch for preparing a dish is letting it rest. We must not slave on preparation, sauces, cooking, and assembly to quickly serve it to a patron. Let the food rest. As the internal temperature slowly declines the juices and seasonings combine offering the final complex flavor people seek.
My QA has said nearly the same thing about a feature we’re building. She won’t give it final sign-off until she sees complete assembly with an opportunity to test all the functions working well together.
Reuse
Smart chefs don’t throw away the bones from a baked chicken. They submerge it into boiling water creating a stock that’s the foundation of soups and and sauces. Stuffing is obviously cornbread in a different shape.
Don’t cut and paste some code to quickly get a feature done. Think it through taking the proper time rolling up the common code into a library, plugin, or module.
Looks Count
Judging people by outside appearance is bad, but looks count in many other ways, and that’s expected. Fine chefs realize that plating techniques are the final touches assembling a lovely meal. Diners first consume a meal with a feast of the eyes before any food hits the tongue. Presentation counts.
Fantastic presentation elevates expectations showing pride in craft raising the all around quality. Coding standards and conventions assure code looks good, consistently. Code that’s well modularized, indented, formatted, and named in a way shows pride of work. That raises the level expected quality for every teammate working in the codebase. Maintenance and improvements are so much easier and joyful to do. Serve your customer and community.
Play!
Do we visit restaurants ordering from a menu asking chefs to simply cook their same set of recipes offered since opening their doors? Do they only pull from a box of recipes now and forever served? Of course not. Chefs have a lab. Generally it’s off-site and dedicated to playful experimentation. The invite change. Whatever crazy spontaneous combinations that turn out delicious constantly informs their menus. Don’t forget that old phrase, “it’s a matter of taste”, implies that tastes change over time. Experimenting is crucial for satisfying diners constantly seeking delightful surprises. Experimenting is also crucial for creative chefs satisfying their curiosity. Don’t get bored from routine.
Creativity and experimenting are key traits of programmers. We don’t learn everything that we’ll ever use at university, or an online certification. We have curious minds that must be exercised along non-linear paths. Research and development rarely happens during the day job. Sadly there’s too much building product and attending meetings for that sort of uninterrupted flow. Instead it happens in the off hours, or while like-minded individuals gather in community attending user groups and conferences.
Pride in Craft
Chefs know they must serve the very best to their diners. Cooking is a job, but the people sitting down at your tables are craving a fine experience. Serve them well.
Programmers aren’t simply writing lines of code, we’re crafting an experience that will help people. Serve them, their expectations, and their needs.
Locally Sourced and Organic
Fresh ingredients make the most delicious meals. How does a chef know when they’re fresh? He sees the person who grows, harvests, and delivers the ingredients. A good chef never turns to a faceless mega-company using sketchy chemical techniques and opaque processes. Chefs must seek out local suppliers seeing what’s done to ingredients used in their meals.
Same idea with code. Do truly great apps get done by using monolithic frameworks delivered by faceless international enterprises pushing proprietary languages? Would you rather pull in open source libraries where you can see directly into the source code? Nothing opaque and mysterious in a GitHub repo – we can look and see exactly what’s happening. Building an app on open source code is phenomenal because anyone who tries can participate directly using, promoting, and improving it.
Thanks for Reading
After reading this do you have an opinion to further along this article? Hit me up on Twitter with your thoughts. In the meantime have a coffee, and let’s do something awesome today.
I want to give a nod to my colleague Tri Noensie. Our recent thoughtful conversations have inspired this article.