Cooking Up a Storm Makes You a Better Coder

Sidenote: A companion piece to this post, entitled “Family Dinner: Cooking it and Making it Important”, can be found over on my spiritual blog.

(Re)Learning to Cook

In a recent post, I talked about being a Jack of All trades. I love to learn and do new things. One thing that I’ve forgotten I loved to do was cook. Last year, I travelled a lot. I rarely had time to cook other than some occasional grilling on the weekends. However, now that I work from home, I have time again to cook.

In addition to having time, I also want to start cooking more of the food that I eat. See, I created my own diet called One Minute Bite.(Yes, I really did create my own diet!) The diet requires fewer bites so I need to make sure each bite tastes good! Plus, if I’m eating fewer bites, I want to make sure I’m eating more real foods vs preservatives. I know, it’s a crazy notion, but I’m a crazy guy. LOL

The Books

When I want to learn a new tech, I go buy a book. I figure the same should apply to cooking. To jump-start my skills, I bought this two-volume set from Julia Child: “Mastering the Art of French Cooking”.

Julia's Books
Julia’s Books

Now, I’ll be the first to admit. I’ve always loved the French for their food. Sadly though, good French restaurants are hard to come by; particularly in the sticks of Arizona, where I happen to live. Therefore, I decided it was time I learned how to cook like the Frenchies.

The Menu So Far

A few weeks in, I have to admit, I’m loving it. Below is a list of all the things I’ve cooked so far and the results of said meals:

  1. Cream of Mushroom soup – I was ill prepared for this lil adventure. I hadn’t adequately built up my ingredients pantry. The missing item was one of the most important: a good stock. I tried to use bullion instead and that wound up being too salty.
  2. Roast of Pork with Au Gratin Potatoes – This time I was prepared: I had all the ingredients plus new Cutco knives we got for Christmas. I had to debone the Loin End roast myself, which was definitely new. I lost about a pound of the roast because of that, so I learned next time to buy a bigger roast. In regards to the potatoes, I also was scared of using too much Gruyère cheese because I had never eaten it before. It stunk to high heck and I didn’t want to ruin the potatoes by putting too much. After the potatoes were gratined and I tasted them, I realized Gruyère may smell gross when it’s cold, but it’s delicious when melted. My pork roast wound up being dry and my potatoes under cheesed. The only thing I was lacking this time around was time. I was doing too much at the same time.
  3. French Onion Soup – I followed the recipe pretty good, but the soup was just okay. I thought, “Hmm…that’s weird.” I even thought about maybe throwing it out and starting fresh. But then I remembered, I like my onion soup like they serve it at restaurants, with soggy croutons and cheese. Julia has a variation for that, so I did that. It was delicious. Finally, this French cooking thing was starting to work out.
  4. Roasted chicken with Onions, Bacon and Potatoes served with a fresh Béchamel Creme sauce & Asparagus with an Orange Bernaise – Everything in this meal was simply DIVINE. I had found my groove and I was in it.
  5. Fettucine Alfredo – While not French, it was made from scratch: I made the fettucine myself as well as the Alfredo sauce. With no recipes in hand, I sorta hunted and found things to help point me in the right direction. The meal was a hit with me and the kids.

Where’s the “Better Coder” Bits?

For those who’ve made it this far, now’s the part you’ve all been waiting for. How does this all tie-in with being a good coder? Well, let me take each recipe above and show you the lessons learned.

  1. Know your tools/ingredients/frameworks – Don’t go grab some code snippet not fully understanding what it does. A “This will work just fine” mentality may wind up biting you in the butt. Make sure the framework you’re using in your app isn’t going to leave a bad taste in your mouth when your done.
  2. Don’t be afraid to experiment and leave plenty of time to focus – If there is a particular class or tool you’d like to use, don’t be afraid to step away from the project and spend a few hours to learn it. Just like my fears of Gruyère would have been eliminated if I had just melted a bit and tasted it, so to can that new framework or class become a great tool in your arsenal if you learn it outside your project. Also, leave yourself time to focus. If you’re rushing you’re going to screw up. For me, it means I left my roast in the oven too long. What should have been a tender piece of pork wound up being a little dry. Good things need time to do and a clear mind to make sure you do them correctly, whether that’s coding or cooking.
  3. You have to remember your code is part of a whole, not stand alone – One thing I think we coders forget is that our code is part of a bigger picture. At the app level, there’s backend and there’s design. There are users and product managers. Heck at the highest level, there’s even a company. Much like the soup was alright until the croutons and cheese were added, sometimes our code is just alright (we know code can always be better), but that’s okay. Once our code mixes in with those other items, it’s turns into something beautiful. Yeah, the code may not be 100% Object Oriented, there could be a bit of spaghetti code, but hey, at least it’s shipped and out there doing great and wonderful things. Don’t keep tossing code just because it isn’t perfect and amazing, give it the opportunity to shine with the various items mentioned above. You may find that it’s a lot better than you thought.
  4. Things are tough to learn, so don’t give up until you got it – After 3 meals of not really working out, I could’ve easily given up on the whole French cooking thing. 3 strikes and you’re out, right? I knew this was important to me though and I *really* enjoy French Cooking when done right, so I kept at it. The fourth meal was AMAZING. I felt like a true French chef after it. The Bechamel Creme sauce was something that I used in many meals afterwards. Heck, I could just eat the sauce all by itself. LOL The same goes with learning new technologies. It took me a long time to understand the iOS dev system after spending so much time with Flex and ActionScript. However, things have finally clicked there as well. Things are easier and I’m even starting to reuse my own code across different projects. Don’t ever give up on learning something new, just keep at it. One day it’ll all click and you’ll feel amazing.
  5. Someday, you won’t need help to do what you want – The nice thing about Julia’s book is she stresses that she’s teaching you foundational concepts that you must build upon. Someday, she expects you to create your own meals without her books. Coding is much the same way. At first, we learn new ideas and concepts by copying sample code, one character at a time. Eventually we move on to understanding how whole classes work, then frameworks. Eventually, we’re coding 100% on our own, doing things our “teachers” never dreamt about. That’s the beauty about learning from the masters. It is our responsibility to step up and become masters ourselves.

2 thoughts on “Cooking Up a Storm Makes You a Better Coder

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s