— Cooking, Coding — 2 min read
I used to work as a pizza cook at a restaurant in Cary NC called Pizzaria Faulisi. While I was there I got to work under a true chef, Zach Faulisi. I had been a cook before, and most of what I did was following recipes. There was some room for judgement, but mostly you did what the recipe said. Zach showed me that there is a lot more to being a chef than a cook.
Zach would follow recipes, usually when they were his own. But there was always a point when he would start deviating. He would taste the food, then change up his strategy. Or something would come up that was extra fresh and he would throw everything planned out the window and start again. The recipes were there, but more as a guideline. There wasn't any recipe that wasn't worth breaking if it meant making something different and fantastic. He wasn't just a cook, or even a chef. He was an artist in the kitchen.
It reminded me of a when I worked in a camp kitchen five years earlier. The camp baker, Ally, often told me that baking bread starts off with some guidelines but you need to be flexible with what the dough is telling you. Maybe it was extra humid and it needed more flour. It could be hotter than usual and you need less yeast to avoid over proving the dough. She said if she had followed the recipe every time,she would make bad bread nine times out of ten. Every batch of bread was different and unique, and it needed different things. To try and apply the same patterns to every batch of bread was asking for trouble.
Today, I still cook and try try and emulate Zachs artistry. I still bake bread and remember what Ally taught me about being flexible and listening to what the dough is telling you. But sometimes I wonder if I could apply those lessions outside of the kitchen and in my day to day job as a Software Developer.
I sometimes find myself on the stuck between science and art when developing. We have so many patterns for all our problems. Recipes on what to do in every situation. Add functionality on top of an existing object with the Decorator pattern. Refactor that legacy API with the Strangler pattern. Use Monoids to concatenate results in a composable way. The list goes on and on.
I use these patterns every day at work. But there is something to be said about thinking outside the box; thinking like an artist rather than a scientist. I'm quick to apply a pattern I know when something else might be more appropriate. More importantly I'm quick to apply a complex pattern when a simpler one might do, usually in the name of avoiding complexity down the line.
As I have grown more experienced as a Software Developer, I have tried to be more like Ally, more like Zach. Recognize that each problem is going to be different and might need different solutions. I won't be able to do the same thing I have always done before. Be willing to try something new in the pursuit of something great, but recognize that newer does not always mean better. I think I would be a better developer for it.