TITLE: Practice, Practice, Practice
AUTHOR: Eugene Wallingford
DATE: July 12, 2004 6:58 PM
DESC: on the value of practice
I began taking piano lessons a couple of years ago. I never learned to
play an instrument as a child, and after several years of being the
"Suzuki dad" to my two daughters, I decided I'd like to learn myself.
Being a student again, especially in an area that doesn't come easily
to me, has helped me to develop greater empathy for my computer science
The Suzuki approach itself has been a source of many interesting thoughts
about how I might teach programming more effectively. I'll blog on that
topic in the future.
One thing about learning piano that seems obviously different from how
my students learn programming is the element of practice. I've
read elsewhere on the web where others have talked about the role of
practice in learning to write programs and build software. The
come to mind. I've lost my reference to their page on this to subject;
if you know it, please
pass it on.
As a piano student, I am expected to practice every day for 20 to 30
minutes. My teacher would like more, but she assures me that a few
minutes everyday is better than a long session one day followed by a
day off. For a skill so dependent upon muscle memory and strength,
daily practice is essential. And I see the damage that lack of practice
can do: my progress as a player has been halting, with conference trips
and busy times at school and home interrupting my practice routine.
Computer science students don't tend to get this sort of practice: daily
repetitions of the same skills until they become secondhand nature, and
then regular brushing up to keep the skill intact. Many of my programming
students plan to do their work for my course on only one or two or three
days a week. The other days are scheduled for other courses' work, for
the work that pays their tuition bills, and for play. Like my piano
teacher, I encourage them to try to work on a project a little each day,
so that they can keep in touch with the material and have more opportunities
to come to understand the material. Their reasons for not doing so sound
an awful lot like my excuses for missing daily piano practice.
One group of students seems the exception to this: all those kids who hack
Linux. I lurk on the local
Linux users group
mailing list, for occasional pointers to interesting new ideas I'd like to
learn about. I am amazed by how many hours students put into installing
Linux, reinstalling Linux, patching the system, adding drivers for new
devices, setting up home networks, upgrading to a new version of the system
... the list goes on. These students get to practice their sysadmin
and use skills over and over, in a relatively artificial setting--but one
that is so important to them at least in part because they see their own
skills grow as a result.
Now, if I could only get these same students to spend so much time playing
with design patterns and algorithms and functional programming and all the
stuff I'm trying to teach them. Maybe I need to figure out what sort of
"killer app" would draw their attention as strongly to my coursework.