Wednesday, August 7, 2019

Midsummer Thoughts on the Fun of Coding, Obvious Secrets, and Whether Plumbers Plumb on Vacation

A recent documentary shown on american television (https://www.golf-films.com/hogan) told the story of the life of Ben Hogan, the greatest golfer of the 1950’s. Hogan is a fascinating person, not only for his success as a professional athlete, but his overcoming personal tragedy. His father committed suicide when he was a child. Years later, as an adult, when he reached the pinnacle of his sport, he was nearly killed in a head-on collision between the car he was driving and a bus. After multiple surgeries and months of recovery, he was once again able to become the top athlete in the world for his sport. He became so proficient, in fact, that he was rumored to have found “the secret.” 

Every athlete searches for the secret to better performance, but in reality, “the secret” usually comes down to a combination of talent, hard work, and perseverance. In Hogan’s case, it was definitely a combination of the second and third of these factors. To a great degree, he invented modern practice where repetition in practice was the key to success performance under pressure. It has been an obsession lasting decades to try to discover Hogan’s secret. The answer may have been obvious. If he had a true secret, it was hard work coupled with the fact that he actually enjoyed practice. It was never work or drudgery to him. For him, practice was actually fun.

But, what does this have to do with software engineering? Fast forward to this week. 

We had taken the family to the beach for a week of vacation. After returning from a day at the beach, everyone in the family was relaxing their own way. My wife poured herself a glass of white wine and became engrossed in FaceBook.Grandma tuned the TV to the Golf Channel and complained about the beach traffic to anyone who would listen.The kids tortured each other over a game of ping-pong And me? I put my feet up and was unwinding by downloading an open source project that I had just discovered on github. Later on, my daughter remarked to me, in her usual subtle manner, “Geesh dad, you’re always on the computer. Don’t you ever want a break? Do you think that plumbers do plumbing when they are on  vacation?” She does have a point. For a lot of people after working a full day, the last thing that they want to do is to look at or work on anything job related in the evening, especially when they are on  vacation. I tend to doubt that very many plumbers do a lot of plumbing when they are on vacation. 

But, software engineers are different.

What is is about software and software engineering that makes us always wanting more? One reason may be that rapid changes in technology are interesting and frequently exciting. Another reason might be that given the rapid rate of change it’s important for your career to stay current with the latest  developments. 

These are all valid reasons, but I think that the "secret" for us, just as it was for Hogan and his practicing, is obvious, that we actually enjoy reading and writing code. 

In other words, for us, it’s fun!

Part of the fun comes from the nature of software itself. When you're working with physical media such as with steel, or concrete, or beach sand, the limitations of what you can do are based on physical limitations of that media and the physical environment. In contrast, with software, you can face limitations of memory or CPU speed or environment, but you are primarily only limited by your imagination. This is what makes software engineering so rewarding, and so much fun. You are basically building virtual structures out of ideas. And, unlike physical media, you can easily tear down, redesign, and rebuild structures in software. 

Wishing everyone a fun end of the summer!