So where to start that is always the question. And maybe that question by itself is part of the answer, who knows. As with many things these are the ideas and thoughts that run through my head at the oddest times. So maybe I should start this story at the point of genesis. The point in time when I first had this revelation.
What does Home Improvement have to do with Software Engineering
It was a Sunday afternoon in mid-July, and like most summers in Texas it was hot. I had just arrived at my local home improvement store to pick up an order of lumber, a few hundred pieces of 2×6. When I arrived the lumber was all nicely staged out front in 2 stacks, each stack was strapped up and ready for loading. So I pulled my trailer up, went inside, signed the paperwork and came back out to observe the young men “attempting” to load my trailer.
Now let me set the stage a bit for this. They were using a common forklift and my trailer like most has wheel wells on each side. So their way of loading the trailer was to just barely put the stack of lumber on the rear of the trailer, then put a couple of blocks of wood under the other end that was on the ground. They then proceeded to move the forklift to the end that was now sitting on the blocks, lift it and push the whole stack of lumber into bed of the trailer. Of course I am sitting there thinking well this is not going to work without something getting damaged. Then sure enough the straps snapped and the lumber started falling all over the place. I decided that it would be a good time to ask them what they were doing, and what was their next plan going to be. They looked at me with a blank stare and basically stated this is the way they were trained to do this, and that they would unload it, re-strap the stack of lumber back together and try again. I must have made an audible noise when they said this because they seemed to be annoyed with me. So I stepped back and let them continue with their “trained” way of doing this job. A few, well more than a few minutes later and 2 more failed attempts the leader of the group then decided to tell me that the fault was my trailer. I was like, ok so how is my trailer different than others you have done this with. He looked puzzled by the question and after a few minutes decided to retract his prior statement. So I asked him have you ever considered a different approach to this problem. Surely I can’t be the only one this has happened with. He acknowledged that the problem does happen more than they would like to admit, but said he really had no ideas on another way to solve this problem.
This is when it hit me, like a lightning bolt that hit me in the head and went all the way through my entire body. I was shocked and amazed that with this entire store and all its vast supplies that nobody had any other ideas of how to load a trailer with a stack of lumber. So with that I asked him to go get a couple of 3 inch web straps that were about 20 ft long. He stared at me with that same puzzled look, but after a few seconds wandered off back into the store. A few minutes later he and an older gentleman (mid to late 20’s) came out. The young man was carrying the straps and the older man was looking at me with that look of “What are you doing….”. The older man asked me what was going on, so I explained the situation, he then inquired as to what was I going to do with the straps. I took the straps and made 2 giant loops around the stack of lumber, one at each end about 1/4 the way in from the end. I then asked them to move the forklift to one end of the stack of lumber and put the Forks so they were resting on top of the stack. Once that was done I slipped the straps over the forks and explained to them that they could now lift the lumber. The younger man started arguing saying that it would break the forks on the forklift. That a fork lift can only lift from underneath. I asked him to explain himself, as I knew what he was saying was utter bullshit. He started by trying to say the forks would bend, which the older man quickly told him to shut up and that he was embarrassing himself. He then looked at me and so “ok lets give this a whirl, but if the lumber breaks it is on your dime”. I shook my head in agreement and then he hopped on the forklift, raised the lumber, positioned it on the trailer and set it in place. By this time we now had a crowd of people watching as there had been lots of salty words thrown around over the past hour. We then repeated the process for the 2nd stack of lumber, and we were done. The older guy got off the lift, and looked up and said well that is something my grandfather would have done. I looked at him and asked, “Is there something wrong with that”. He responded, no not at all, just… I was “just what”? He replied, well we are just not supposed to do it that way, we are trained to do things a certain way and that is the way they are to be done. I looked at him and simply smiled and said, “that is why you failed, you can only solve problems with solutions others have told you will work, instead of learning how to solve problems yourself”.
On the drive home I realized this is exactly the same problems we face in the world of technology. We have lots of talented people working in the field, but they can’t solve problems, they can only apply trained skills in the particular manner in which they were trained. They can only create solutions using pre-built products, pre-built design and pre-defined processes. Which got me thinking about how we build everything now days. For instance 30 yrs ago if you needed a part for your car, even if the manufacturer didn’t make it anymore, you could find a machinist who could build the part for you. We have almost lost that ability in our modern world, but more so when it comes to building technological solutions. I talk with lots of “software engineers, product mangers, project managers, architects, etc…”, but the one thing that stands out to me is how much they all subscribe to pre-defined methodologies, frameworks, product platforms, etc… I hardly ever met anyone who can think outside their own box. Does this mean they are not brilliant at what they do, certainly not. It simply means they have restricted themselves whether knowingly or not into a predetermined outcome. And if they stay in their box to long they lose the desire, or ability to move beyond.
Can It Be?
So maybe that is the definition of a Software Engineer is – “A developer who can look at a situation, look at the tools that are readily available, not ask for more things (hardware, software, monitors, etc…) and not whine that they don’t have the ‘right’ tool, but except their reality and in their own mind come up with a solution to the problem at hand”. I mean Archimedes didn’t get to tell people well if I only had this or that I could get water to go uphill. No he didn’t, he used his brain and came up with a solution with the tools he had available to him. He didn’t look at others to solve his problem, he simply looked at others to see what he could “learn” from their successes and failures.
We need more “Software Engineers”, people who can think for themselves and not simply prescribe a solution like it is some drug from a pharmaceutical company that is designed to cure who knows what. We are missing that true spark of invention, that moment of “Eureka” that is paramount to each of us if we want to be real Engineers.
That is Why I Care!