By Jason Down March 9, 2016

What Programmers Can Learn from Golfing Legend Moe Norman

If I were to ask you “Who is Tiger Woods?”, chances are you would tell me he is the greatest golfer in recent history, or maybe even the greatest of all time. Or, you might mention his fall from grace at the turn of the last decade.

Either way, you’ve likely heard of him whether you are a golf fan or not. Perhaps you’ve also heard of other legendary golfers such as Jack Nicklaus, Ben Hogan, Gary Player, Sam Snead or Arnold Palmer.

These are all extremely skilled golfers who not only carry legendary status in their sport, but have also become famous to some degree off the links.

There are many programmers who fit this status too. I’m willing to bet you’ve heard of Bill Gates, Mark Zuckerberg and Linus Torvalds. While they are well known in programming circles, you don’t have to be a programmer to know these names.

Now what if I were ask you “Who is Moe Norman?”

NA-CC077_SP_GOL_DV_20140725163624

Unless you are a hard-core golf fanatic like myself, I bet you would stare at me with a blank look on your face. Who?

First, let me share just a few of the accomplishments Moe achieved in his lifetime:

  • Shot 33 course records (some sources even say he had over 40)
  • 17 holes-in-one
  • Shot 59 three times (once with a bogey, at the age of 62!)
  • Won back-to-back Canadian Amateur Championships
  • Won 55 Canadian Tour events
  • Dominated the Canadian Senior PGA Championship, winning from 1979-1985, coming in second in 1986 and then winning by 8 strokes in 1987

In addition to these reaching these milestones, Moe Norman also drew accolades from some other golfing greats:

  • Tiger Woods: “Only two players have ever truly owned their swings – Moe Norman and Ben Hogan.”
  • Tom Watson: “I'll tell you about a guy who can hit it better than anybody. His name is Moe Norman, up in Canada.”
  • Sam Snead: “He has the best hands in golf.”
  • Lee Trevino: “I do not know of any player who could strike a golf ball like Moe Norman, as far as hitting it solid, knowing where it's going.”

There are many more praises from golfing professionals, but most people still don’t know who Moe was. In this post, I will explore how he received such legendary status among the elite golfing professionals, but never broke through to the rest of the world–even the average golfing community. I’ll also look at what we can learn from this from a programming perspective.

Why Talk About Golfers on Simple Programmer?

I see a lot of parallels between golfing and programming–this is probably why I love both so much. For example, you can spend hours struggling on the golf course, feeling frustration and despair. This can instantly be forgotten in a moment of gratification from a single, great recovery shot. Similarly, an elusive software bug can run you through the mill, prompting bouts of profanity and fist shaking. Once you track down the bug and fix it, that feeling of misery is expelled by a great satisfaction.

There are many more similarities between golfing and programming, so I thought it would be interesting to write a post that somehow involved the both. If you’re a fan of programming analogies, I recommend Saeed Gatson’s post on What Software Developers Can Learn From Arnold Schwarzenegger, here on Simple Programmer. Saeed did an excellent job on covering many of the great things the Terminator did that we can learn from.

Like most successful programmers, Moe did some ridiculous things to achieve great results, which we can emulate to help us to improve ourselves.

However, there are also many things he struggled with that held him back and prevented him from reaching his full potential. We can learn from these things too!

What Moe Norman Did Well

Learn Through Experimentation

John Sonmez advocates self-teaching through experimentation as key to the process of truly grasping something.

Norman is proof that such a strategy is quite effective. During his teenage years, from age 14-19, Moe spent nearly every day on the driving range trying to find his swing.

It was through this five-year journey of self-teaching and experimentation that he came up with his very unorthodox looking swing. Indeed, if you compare the elegance found in the swings of many professional golfers with Moe’s swing, words like ugly and weird come to mind.

However, there is a hidden elegance in what Norman discovered.

His extremely wide stance provides extra stability and less moving parts. Gary Player once said, “Norman's swing has fewer moving parts than any swing I've seen.” Moe stands further from the ball allowing room for his arms to clear his hips easily without needing to compress his spine upward while straightening his front leg.

This essentially allows him to have a single plane swing, which means the club shaft starts and ends on the same plane. Moe’s swing is much easier on the body.

Extracted From: http://moenormangolf.com/

Extracted From: http://moenormangolf.com/

In addition, this makes the swing more repeatable. And in golf, that is the key to consistency. Norman earned the nickname Pipeline Moe because he was able to consistently hit the ball straight via an easily repeatable swing.

As an example of just how consistent Moe was, with his repeatable, biomechanically sound swing, let me tell you about an exhibition he once did. In a little under seven hours, Moe hit 1,540 drives. Not a single drive landed outside of a 30-yard wide landing zone (approximately the size of the average fairway width). Can you imagine hitting well over 1000 drives and not missing your target?

What can we take away from this?

Don’t be afraid to challenge conventional methodologies and experiment.

Mark Seemann, author of the book Dependency Injection in .Net. and the creator of the AutoFixture testing framework is a great example. Mark has been an authority on object oriented programming (via C#) and the Test-Driven-Development (TDD) methodology for many years. However, he recently began to rethink his stance and decided that TDD can actually be detrimental to software design. He has gone so far as to call himself the TDD Apostate because he believes it can lead to test induced damage if you let the tests influence your design decisions.

Seemann has since spent many hours experimenting in the functional programming paradigm, via F# and Haskell, to see if there are better ways to design and test systems. He has discovered that functional design is intrinsically testable, preventing test induced damage.

His experimentation hasn’t stopped there. In addition, he has further discovered and advocates that languages with a strong type system and powerful inference allow you to drive your design with Type-Driven-Development.

Take some inspiration from Mark. When you are playing with a language or technology, whether it is new to you or very familiar, it’s okay to experiment. Following convention is often a good idea, but you may be surprised what you can do if you challenge the status quo.

Dedication is Key

Moe Norman was dedicated to golf (1,540 drives in seven hours – who does that?).

Malcolm Gladwell says in his excellent book Outliers: The Story of Success that to achieve mastery at anything, you need to put in 10,000 hours of practice. So it stands to reason that if you dedicate yourself to spending more time practicing, learning and experimenting, you will reach mastery quicker. There is no magic here, just simple math.

Moe Norman spent five years hitting golf balls for nearly 8 hours a day while searching for his swing. When that five years was up, he reached mastery in ball striking. But Moe didn’t stop there. For nearly the rest of his life, he was either practicing on the driving range or playing between 54 and 72 holes of golf every day. Golf was a passion for him and so the dedication was easy.

This is key for software developers. If you want to reach mastery in any development stack or programming language, you need to be dedicated and put in the time.

If this is the case, working 9-5 is not enough.

I don’t know of any developers that spend the entire 8-hour day working on coding itself. You’re usually lucky to put in half of that on any given day due to meetings, distractions from colleagues, etc.

Let’s break it down:

  • 10,000 hours / 4 hours of coding per day = 2,500 days.
  • Factoring holidays and weekends, we’ll say that we work about 250 days per year.
  • 2500 days / 250 days per year = 10 years.

10 years to truly master any given technology! Many technologies and frameworks have fallen by the wayside within that time frame (Javascript frameworks, I’m talking about you).

If you want to shortcut that 10 year timespan, your only real option is to put in more time every day. In his book, Malcolm Gladwell talks about how Bill Gates had access to a high school computer in 1968, which he used to quickly rack up 10,000 hours of programming experience on. His situation was rare, in that access to a computer was not common at that time. It was the combination of that unique opportunity and his enormous dedication that ultimately lead Bill Gates down the path to becoming one of the most influential people in recent history.

Hopefully you are passionate about software development and it is not just a boring job you do to pay the bills. Spend some of your time outside of work fuelling that passion. It may lead to amazing things.

Have Fun

Even the most dedicated people will have bouts of burnout from time to time. The key is to push through it, because the other side of that wall can be very rewarding. One key to preventing burnout, or pushing through it, is to make sure you are having fun.

Moe-Norman-1950sMoe Norman played a lot of golf. A lot. How could he play so much and not get bored?

One thing he did was to play little side games. For example, Moe and his friend George Knudson use to practice together quite often. They did not putt. Instead, they kept track of fairways hit, greens hit in regulation, and flag sticks hit. It cost $20 every time you missed a fairway or a green and you received $100 for each flag stick hit. This kept things fun and interesting, while still providing even more chance for mastery.

As a side note: Moe hit 6 flag sticks one day, including 3 in a row (all outside of a 5 iron).

It wasn’t just practice where Moe tried to make things fun. He also liked to do interesting things during tournaments and exhibition rounds.

Moe was playing a round of golf with Sam Snead once. Sam told Moe that a creek crossed the fairway about 240 yards away, which was too far to drive the ball over.

Sam said Moe should lay up short of the creek. Moe responded that he was aiming for the bridge that crossed the creek. He then proceeded to drive the ball directly to the bridge about 240 yards away. The ball careened across the bridge and came to rest on the other side of the creek.

Moe Norman loved golf.

“Golf isn’t supposed to be work. It’s to have fun. What do you have to lose? A lousy ball, that's all. If you lose yours, grab another one out of your bag and hit it. That is what the game's about, and that is the first thing I was taught 55 years ago: have fun. Most golfers don't see the bright things. All they see is the bad things.“

As programmers, we need to take a similar attitude. Hopefully, you became a programmer because you find programming itself fun and exciting. Even so, working on the same projects or in the same technology for your 9-5 developer job can sometimes get boring.

You need to find ways to keep things fun and interesting. There are many ways you can do this:

  • Play games to help improve your programming skills. I prefer CodinGame, where you can solve puzzles in a variety of programming languages or compete in contests to challenge yourself.
  • If you are into fantasy sports, perhaps you can try your hand at data analysis and write some tools to help you with your annual fantasy draft with you friends.
  • You could also look into starting a blog. In my personal experience, this is a fun way to help other developers learn, while also challenging you to test your knowledge.

Whatever approach you decide to take, remember that programming should be a fun and rewarding. If you struggle without, maybe programming isn’t for you.

What Held Moe Norman Back

For all the amazing things Moe Norman did, there is a reason many people have never heard of him.

Narrow Focus

Moe Norman was a master of ball striking. Many people believe he may have been the greatest ball striker to have ever lived. However, he spent the majority of his time on hitting balls and much less time on other aspects of the game. One big one was putting. This was the weakest part of his game.

Moe was also known for playing fast. Sometimes, when playing with slower players, he would joke around by falling on the ground and pretending to sleep. This speedy approach to play often translated into rushing his putts.

In anything you do, it is critical to identify any weaknesses you have and try to improve upon them. You can’t just focus on your strengths and practice only what you are already good at.

Both Michael Jordan and Wayne Gretzky were known for attacking their weaknesses and trying to turn them into strengths. Moe Norman could have been even better if he had done the same.

When I talk of focusing on weaknesses in programming, I mean a few things:

  1. Even though deep mastery of one or two technologies or programming languages is important, you must also gain a workable, but more shallow knowledge of a few other technologies.
  2. If you are a great object-oriented developer, you would do well to learn another paradigm to expand how you think of problems and solutions. For example, learn a functional programming language.
  3. If you are good at back-end programming, learn to be a better front-end programmer.

You get the idea. Specialization is good, but you should also be well rounded if you want to be your best.

Confidence Issues

Norman was very confident, but not arrogant, on the golf course.

He was once quoted as saying: “If they had a tournament in the dark, I’d be the only one who could play. I’d know where to walk.”

But for all his confidence on the golf course, he was known to have a severe inferiority complex, confrontation issues, and fear of rejection. There are many examples of these issues, which were ultimately so pervasive, that he never reached the level of success he should have.

Moe once hid in a boiler room after winning a tournament because he wanted to avoid the attention of receiving his golf trophy.

At one point, Moe had made the PGA Tour and was playing very well. However, he was surrounded with golfers that he looked up to, and he felt like he didn’t belong. That, coupled with his silly antics on the golf course, which many of the serious golfers at the time looked down on, lead to a confrontation in the locker room that ultimately ended his time on the PGA Tour.

When it comes to programming, confidence issues are also quite common.

I’ve noticed an ever growing negative attitude toward novice programmers on the site Stackoverflow.com. I’m not the only one, as evidenced by this post and this one. While the harshness is unfortunate and can push people away, programmers would do well to grow a thick skin and deal with rejection and criticism.

In any profession you’re going to have people who tell you what to do, how to act, etc. Don’t be afraid to push back against this bullying. Just make sure you do it the right way.

Software development is a great profession to be in.

By being a software developer, you have the skill that allows you to potentially create so many wonderful things that people want or need. Many of you are highly skilled programmers with deep knowledge in one area or another.

Hopefully, you can draw parallels from Moe Norman’s greatness and faults learn to fully tap your potential. Make sure you not only develop your technical skills, but also your soft skills.

Take risks and remember that failure is ok. It is part of the learning process. Play, experiment and have fun.

Do you have any role models you’d like to share, in the programming world or otherwise? How about fun ways to keep programming interesting? Share your thoughts below in the comments.

About the author

    Jason Down

    Jason Down is a dedicated husband, father of four, life long learner and a passionate programmer. He works for Home Hardware Stores Limited as a senior programmer/analyst specializing in Microsoft Dynamics NAV, .Net programming and distributed version control. Outside of work, Jason enjoys spending time with his family and friends, golfing and blogging at jason-down.com. You can follow him on twitter @jasondown.