An Inquiry into Values of Software Engineering
I headed down the parkway parallel to the ocean through a hot summer breeze. My engine slowly revving by keeping a legal speed limit. I was taking it all in on my motorcycle, with thoughts of inspiration and some doubt of a nagging preservation. “Should I have checked that thing? What about this detail? Ah, whatever it is, enjoy this ride.” Unfazed, I looked over to my right, nothing but sand dunes. On the left, the Great South Bay. There were wispy clouds in a blue sky and a bridge in the distance. I was making my way down to OBI, a parking lot in the middle of no where abut against the Atlantic ocean.
Once I parked, I removed my immediate gear… my helmet, gloves and jacket. The sweat from my padded kevlar jeans ran down my legs to my riding boots. I sat by my bike, on the shaded side. I wanted to just think, but instead I flipped out my phone and stared lonely at the emails and social posts.
Some time passed. Finally, a bike pulled up, looking and inspecting if it was safe to park close. She did. An older woman jumped off her well worn bike. I looked over and had a judgement. “Hmm, she’s all geared up. My kind of rider.” She slowly approached, admiring my bike and me admiring hers.
We chatted about bikes and philosophies of riding. She had much more riding experience than I and spoke vividly about her adventures. Then she asked about my profession.
But what is… software programming?
Me: “Well, in the most simplest terms we are readers. And more rarely we are writers of code. And when we write, we likely follow checks.”
Her: “What kind of checks?”
Me: “First, of course we have T-CLOCS (tires/wheels/brakes, controls, lights/electrics, oil/fluids, chassis, and stands). Before we write, we read to understand if it makes sense to add to what we are reading. We may have to wrench through issues first. Once we have something we can add, and this can take some time, we can jump on safely.”
Me: “But before we jump on we must wear gear. ATGATT (All the gear, all the time). In our writing, we wear gear to help protect us. Let’s call them tests that check our writing. Tests won’t protect us from everything but it places us in a mindset that we could get hurt and are taking precaution to avoid future injury.”
Me: “From there, we are worried about visibility of that writing. We want high-vis on our code. We have others review and check it before it is added to our system.”
Her: “Ah, kind of like look twice, save a life?”
Me: “Yes, but we take the onerous on us to make sure that the code will work well. We have high-vis, continuously move to be seen, and even throw down the hand signals to make absolutely sure we have clear intentions.”
Her: “Are there programmers out there that write code and avoid these checks?”
Me: “Of course. Even if it’s legal, they are the lane splitters. They go fast past others, and they win sometimes. But eventually, their odds run out and they hurt themselves and others.”
Me: “My respect of the machine is of front of mind, always. Just like I know that bike over there can hurt me and others, I know that the respect I have will keep me in check so I can live to ride another day.”
Her: “You really got a good head on your shoulders. But back to this software programming thing. So you are readers, and sometimes writers. Apart from these checks and tests, how do you read and write… well?”
Me: “Just like we should practice our figure eights, stops, swerves and our finesse, we really do need to practice our reading and writing. We should do this continuously regardless of how long we’ve been in the game. I didn’t believe this until I recently had a very close call. I was too lazy, but I learned that if I practiced the skill continuously, it would have been mundane.”
Her: “Yeah, it’s about seat time. But it’s also rider attitude and risk assessment.”
Me: “But here is the thing. Practicing has context, and we must be deliberate on how. It must be a campaign of focus. There is quite a bit of hype all over and you can get dragged over reading and writing things that become irrelevant. You really do need to ride your own ride.”
Me: “Sometimes you need to follow the advice of David Hough or Ken Condon, but sometimes Maria Costello or Keith Code. Lots of time you have to go with data, like the Hurt or MAIDS report. And sometimes you have to go with your gut. But it’s the attitude in learning that matters.”
Her: “Got it. And the computers read these writings (code)?”
Me: “Indeed, and hence how these programs work. Just like motorcycles, software is everywhere! But it’s mostly about people. The machines can handle all the writings just fine. They can optimize, such that they bounce over edge traps, navigate sand, and handle all sorts of unique weather and traffic conditions. But the humans cannot always. Sometimes ego gets in the way.”
Her: “Kind of like those riders who never throw down the peace sign after you threw down first?”
Me: “Yes. But there are others out there that are oblivious and need to learn what it means to throw down that peace sign. We need to mentor well, and take the opportunity to show them our programming craft. And learning to read a lot and writing a little is a very difficult thing. It gets even more difficult since what I described is mainly performed in teams. And you know how difficult it is to keep group rides together.”
Me: “Just like motorcycling, programming cannot be mastered.”
Her: “So, you are teams of readers and rarely writers. The machines handle the optimizations and quality is paramount to the profession. Mentoring is an important aspect, just like I have shown others of what I know and how to ride safely. Sounds to me that after all this you can enjoy… the ride?”
Me: “I do. This is just my opinion but others may see it differently. Quality? This reminds me of that book, Zen and the Art of Motorcycle Maintenance.”
Me: “Whether I’m a classical or a romantic, I am not sure. When I read or write code or I perform an oil change or replace a stator, I keep looking at the gauges like a manic. ‘Did I do it right? How can I be sure? Research… apply and trust!’ I am stuck looking into all the details of how to do things well.”
Me: “But, I… we must do more than look, we all must see and be seen.”