TITLE: Getting Worse in Order to Get Better
AUTHOR: Eugene Wallingford
DATE: January 15, 2007 11:45 AM
Tiger Woods recently won the PGA's
Player of the Year
for the eighth time in his ten-year professional
career. Since 1990, no other player has won the award more
than twice. He is widely considered the most dominant athlete
in any sport in the world -- which is saying a lot when you
consider the amazing runs that tennis's Roger Federer and
cycling's Lance Armstrong have had during Tiger's own run.
Woods is great, but he also stands out for something else:
his remarkable efforts to get better. Now, most
pros are continually working on the games, trying to improve
their skills. Woods has taken this effort to a new level,
by completely rebuilding his swing twice during his professional
career. Sportswriter Leonard Shapiro
describes Woods's most recent reconstruction,
back in 2004 and early 2005. In 2004, a lot of commentators
thought that Tiger had perhaps peaked, as other players on
the Tour had been winning the majors and left him as just
another competition. Tiger wasn't striking the ball as well,
and his tee shots were errant. He seemed to have gotten
worse. But suddenly in 2005, he returned to the top of the
leaderboard with a vengeance and had one of the all-time
great years in PGA history.
You see, while Tiger was seemingly getting worse, he was
actually getting better.
A golf swing is complex mechanical act. There is very little
margin of error between a great shot and a merely good shot.
At the top level of golf, the standard deviation is even
smaller. When Tiger decided that he had reached a plateau
in his game with his current swing, he knew that he had to
develop an entirely new swing. And while he was building
that new swing, using it on every shot for nearly eighteen
months, he performed worse than he had with the old swing.
Only after all that repetition, feedback, and adjustment
did he have the swing he needed to regain his peak. And his
new peak was even higher than the old one.
This progression from plateau to valley to new peak is not
unique to Tiger or to golf swings. Any complex skill that
depends on muscle memory requires the sort of repetition
and feedback that usually results in degraded performance
during the learning phase. The key to improvement in this
phase is patience. Learning a new skill takes time, while
we train our brains and bodies to execute their tasks in an
accurate, repeatable way.
Mental skills, even ones that we carry out with more conscious
attention, have this feature. Sometimes, we can make only
small incremental improvements from our current skill base,
but an effort to learn something radically different can
alter our skill base in a qualitative way -- and result in
radical improvements in our performance.
Many programmers know this. The last couple of years, a
common new year meme among bloggers has been to learn a new
language. Often the language is something very different
from their daily tools of Java and XML and C. Haskell, Ruby,
Scheme, and Smalltalk seem to show up on peoples' lists
frequently precisely because they are so different. They
offer the promise of a radical improvement in skill because
to master them requires looking at problems and solutions in
a radically different. You can't speak fluid Haskell or
Scheme without coming to grips with a functional mindset.
Even if list comprehensions, continuations, and tail recursion
are not part of the programming language you use in your day
job, understanding them can help you use that language in a
new way. And who knows, those features may ultimately make
their way into your day job's language -- either this one,
or the next one.
Martin Fowler writes about his own experience crossing the
on the way to new mastery. He even quotes Gerald Weinberg,
whom I've mentioned occasionally since I
first began blogging.
Martin points out a couple of key insights. One is that
sometimes the new thing doesn't work, at least for you.
Worse, there is a
complicating matters: you can't be sure if the technique has
failed for you or if you just need to stick with it a little
longer. The best hope for circumventing this problem is to
have a good teacher working with you, whether in a classroom
or one one one. Tiger had his coach, Hank Haney, to help him
assess the state of his swing and decide to keep going, even
during the darkest days of 2004. Working with colleagues or
a trusted friend can also serve this purpose.
I think another key to this process is a sort of courage.
It's hard to be patient while you're failing, or while you're
struggling with a new idea. In this context, your teacher
coach, or friend plays the important role of support system,
encouraging you to stick with the process. As with almost
anything, doing it over and over helps us to have the courage
we need. Tiger's 2004 rebuild was the second such publicized
episode of his career, and I'm guessing that having succeeded
in the first helped him to remain steadfast during the second.
One requires less courage as one feels less fear. But I think
that I will always feel a real fear anytime I step way outside
my expertise in an effort to get better. Maybe even a great
one such as Tiger does, too. Courage will always play a role.
This notion of getting worse for a while in order to get better
is on my mind right now because I have just begun a new semester
in which I will try to teach Scheme and functional programming
to a bunch of students who probably feel pretty comfortable
in their imperative programming skills with Java, C++, and Ada.
I have to help them see that mastering such a different new
language, and especially style of programming, will require
that they feel awkward for a while. The tried-and-true syntax,
operators, idioms, and patterns no longer seem to work. That
is scary. But it's worth going through this scary
phase, practicing "the real thing" as much as they can. With
practice and time, they will soon learn the new syntax, master
the new operators, appreciate the new idioms and develop some
of their own, and finally discover the new patterns that will
make them better programmers than they were before.
My memory is always drawn back to two former students in particular
who approached this in a Tiger-like fashion. They went home
every night for three weeks or so and just tried to write good
functional programs in Scheme. They read my examples and those
from the textbook; they experimented with small modifications
and then large ones, eventually trying to write whole programs.
For a while this was painful, because their programs broke and
my evaluation of their homework didn't result in the easy As to
which they had become accustomed. But suddenly -- or so it
seemed -- they got it. They were excellent functional
programmers. The rest of their Programming Languages course
went smoothly, as they could focus on the language concepts
without having to worry about whether they could make Scheme
work for them.
If the greatest golfer in the world, the most dominant athlete
of a generation, can take the time to get worse for a while in
order to get better, I think we all can. But do we have the
patience and courage to take the chance and stay the course?
And do we have the teachers and coaches who can help us along