Software is like Cooking

In a previous post I mentioned that software development is a creative process.  In this post, I’m going to expand upon that a little, add some metaphors and later, if I’m feeling wild, I might even add a simile or two!  I’m sure F. Scott Fitzgerald is turning in his grave, given that I knowingly “laughed at my own joke” then.

 Coding is like cooking.  It is important that the flavours blend together to look and taste like they are part of a single entity.   It’s not really ideal to find a whole lemon buried inside a cake.  Or a stew.  Sadly, I see this kind of thing all too often in coding.

The recipe calls for a hint of lemon, so Engineers being Engineers, think “if a hint of lemon is a good idea, then think how awesome it would be if we had a whole fruit in there, from which we could squeeze the right amount of lemon juice from whenever we wanted.”  At which point there is now a lemon bolted on the side of your mixer and you find that when you try and bake a different variety of cake, the machinery forces you to have lemon in there.  Or more likely, it is a multi-flavoured juice dispenser, which is so heavy the mixer can barely stand up on its own any more.  And it leaks.

Which doesn’t at all lead me to my next point, so I’ll just jump to it awkwardly.  Something I find myself doing quite a bit is cooking blind.  Which is ironic, because sight is the main sense I actually employ when doing this.  What I mean by that, is that I don’t taste my food before serving.  It’s a bit inexact, and I admit, also somewhat hit and miss.  And largely, when it’s a hit, it’s due more to experience of knowing the right colours, textures and combinations of flavours that work.
So I guess what I’m saying with this post is dressed up prettily, but blindingly obvious.  Experience mitigates some of the worst sins, but if watching altogether far too many cooking shows on telly has taught me anything at all, it’s that life is infinitely better if one tastes food before it is served.