Engineering lessons everywherePosted: November 29, 2014
Writing software is a very interesting and odd pursuit. It’s not like the more physical forms of ‘engineering’, where you’re measuring, cutting, reaming, nailing, etc. Much to the chagrin of my fellow software engineers, I will typically describe writing software as similar to creative writing. Contrary to what most people think, I find leveraging communications and language skills far more useful than math and science skills.
I’ve been doing this for a few decades now (I can say that since I’m now 50!), and I have found that since writing software is a very cerebral pursuit, it needs to be balanced with more physical forms of intelligence. One example from a few years ago, I found it useful to take up baking arts. I bought several books on artisan break baking, cake making, and the like. I spent quite a few months, late nights, and long hours in the kitchen baking up goodies to foist upon my poor unsuspecting workmates. It started with innocent little tea cookies, but then exploded into lemon chiffon cakes, holiday loafs, fondant, and all manner of unspeakable mini, fluffy, mariner soaks goodies. The madness didn’t end until I moved to India (baking supplies left behind).
Bread making was a very challenging affair as well. Whereas cake making is largely about getting ingredients right, mixing well, and a properly tuned oven, break making is a lot more iffy. How much flour? Well, it depends upon the amount of moisture in the air, and how hot it is that day. Making some sourdough from scratch? Well, what kinds of naturally occurring yeasts are in the air around you? How much kneading? How long, how much punching down, all very soft skills.
But, I find these pursuits very similar to software design, oddly enough. There are some portions of software that are fairly well defined and precise. You can writing code for a micro controller, in assembly, and get down to fairly exact timing details to blink your christmas lights appropriately (like cake making). On the other end of the spectrum, you can try to build a multi-tenant web service that scales to world proportions. (more like break making). I found the pursuits to be fairly similar. You start with some recipe/pattern, you try to apply it, you make some adjustments along the way, and you cook up something that’s unique, but recognizable.
Recently, with garage reclamation, I’m finding the same thing applies. Even better, with the advent of youtube, I’m able to get lots of recipes, and learn a lot faster than purchasing books. I’ve been following this one guy downtoearthwoodworks. He’s an older guy, at least older than me I think, looks very experienced, and he cranks out these very nice step by step multi-part videos about how to do and make various things in the shop. Recently, I’ve started following a project to build a sanding station. The cool thing about this project is the very first video in the series is the design criteria. Well, I’ll be darned if that isn’t exactly the same thing as software development. Even better, he knows the weight it will have to hold, that it needs wheels, what kind of storage, etc. From there he draws up plans and begins to execute. Of course not everything will work out according to plan, but he is equipped to improvise, and doesn’t design himself into a hole.
I’m going to build that sanding station, even if I don’t do a lot of sanding, because when I do engage in any sanding, I want it to be easy, so the right tool for the right job.
If only software were similar. Old geysers with slow voices, and tons of experience, taking the tools from their shops, and showing us how to put together interesting and useful things. Something to consider.