3 Parallels Between Web Development and Golf Instruction

Before I became a web developer, I was a golf instructor.

My golf career spanned 5 years, took me up and down the east coast of the US and to Beijing China. It was fun for a while, but golf is best left a hobby for me.

After golf instruction, I wanted to become a web developer. Coding was always interesting to me so I gave it a shot. I’ve been a full stack developer for the past 4 years and the more code I write, the more I enjoy it.

After 5 years in the golf industry and 4 years as a full stack developer, I’ve noticed a few interesting similarities between the two.

I wanted to share them here. I figured it’s a perspective you might not see very often.

1. Tool Dependency as a Measure of Competence

The same principle holds for golfers. Good players can use almost any brand or style of club and play well, while less experienced players will fall to pieces if they have to change.

When I was teaching golf I would have at least one student a month come to me saying something along the lines of:

I got this new club and now my swing is all messed up

My response to the student was diplomatic:

well let’s have a look and see what we can do

as opposed to what went through my head:

no, your swing fundamentals need a lot of work. All you did was change the tool that was covering it up

In my first years as a developer, I would dread being asked to change front-end frameworks. I was focused on learning the syntax of the framework instead of the principles that drive it. Now that I’m more experienced with Javascript I’m confident that I could switch to any framework and be effective.

In both disciplines, the tool is only as effective as the person using it.

2. Small Changes Can Have Big Impacts

One misplaced comma can break your whole application. Similarly, a slight change in grip pressure or weight distribution can send a golf ball to all sorts of undesired locations. Even a faint unfamiliar background noise is enough to ruin a swing.

Golf instructors need to be very deliberate when suggesting fixes for a student. If you aren't careful in how you give instructions you will create more problems for the student in the long term. The same is true for web development, guessing as a policy for bug fixing will lead to more headaches in the future.

Conversely, small changes can make substantial improvements.

When I was teaching golf, there would be students whose entire game could be transformed by just a slight rotation of their grip or a small change in their spine angle when addressing the ball.

In recent memory, some of the biggest improvements to my projects have come from small config changes or simple alterations in how functions are written.

Being able to make alterations to a person's swing or a web application without breaking everything can be a daunting task.

It takes hard work and discipline to craft a great piece of software or swing a golf club effectively.

3. Debugging is an Art

My boss in Beijing was the best golf instructor I ever knew. Originally from West Virginia USA, he had 25 years of experience teaching and could predict the outcome of a student's swing just by looking at their setup. His knowledge of swing mechanics was impressive, but to me, his most effective coaching tool was always looking for the root cause of an issue. Every so often he would call me over to look at one of his students to get my take on what they were doing wrong. I would give my answer and he would usually respond with “keep going” or “your on the right track but there's more”. He would proceed several levels deeper into the swing until we reached the real problem. It was impressive to watch.

I see many of the same principles when I watch the senior developers around me now. Their ability to get to the root of an issue is quite inspiring. I hope one day I can be just as effective.

Conclusion

Enjoy your algorithm for the next few days.

Former golf instructor turned software engineer. 4 years ago I left my job teaching golf in Beijing to pursue my passion for writing code.