If there are ever constants with which we must grapple with in the world of engineering, change and challenge figure heavily in the overall equation of the career. It is they that attract the wide eyed and those seeking wonder within the complexities of algorithms, finding beauty in what may otherwise seem mundane (but often account for the overall structure of the system). Stubbornness and perseverance are oft found qualities among my peers for this reason. I recently had a brush with both in an abrupt direction change that threw me into a different welcomed path. Abrupt change behind me, challenge ahead.
Challenge has always been a central theme in all that I have done in my life and in my career. As I began early in my life with development, I always found myself in the most desperate of challenges (most of my own creation … drop the cord through the hole as opposed to pushing it up … it’s a long story).
I found early on that the best and most thorough way for me to learn was to start from the beginning, break everything along the way, and build it up again. The intent was to, at the very least, produce something that resembled that which I tore down. The bonus would be if it were better.
I was reminded of this again yesterday as I approached an especially challenging and exciting problem. I have been given 3 disparate pieces of equipment consisting of a well designed PCB with an accelerometer, rtc, and temperature sensor, a PIC micro development board, and GPS device.
When you’re in the prototyping or research and development phase of a project, you often have a version of the project that is grossly exploded and does not in any way represent what will eventually become your finished design. This happens whether designing hardware or software.
Armed with a functional specification and some previous work done on the device, I am to have it communicate with each of the pieces and perform a specific function (which, for our purposes, could be arbitrary). Connecting each of these pieces together was a harness that was in quite a state of disrepair.
It quickly became apparent that I cannot trust this harness to perform often enough for me to get reproducible results and have to resort to creating a new one.
Sometimes during development, we are given some pieces, and often times we are not. When we have a given, we often take it for granted and do not fully respect the prior knowledge that was required in order for that thing to be ported from one place to another. I’ve seen it in framework use, computer language use (Ruby … ugh), scientific explanation, and now in a harness.
What one would assume would be a relatively simple task to complete, soon became several hours for me to get correct. As I labored on each piece of the harness, however, I came to the startling realization that I was, in fact, learning more about each component that I was tasked to put together than I would have ever learned had the harness worked flawlessly from the beginning.
It brought to mind staying up late into the night during my formidable years of high school staring at printed sheets sparking my imagination into the inner workings of modern computer systems as opposed to being more studious in my school work. I remember how I labored for countless hours getting nothing more out of it than the sheer joy of the increase of knowledge (seeing X for the first time on RedHat 5 was nice, too).
I eventually created the harness and it is now performing well enough for me to move forward with my design. The knowledge I gained during the pursuit as a result has been priceless.
All of this has served to help me remember a central lesson when tackling complexity. You can look at all of the flow charts, schemas, and documentation that you want and get a relatively clear picture of the system you are attempting to understand or design. Sometimes, however, you may learn the most by simply rolling up your sleeves and digging deep.
Disclaimer: Despite my best efforts for it not to, my inaugural post on this site seems to have come off as a sort of a play on a Doogie Howser impart. Oh well … no one’s perfect 🙂