TITLE: Practice, Practice, Practice AUTHOR: Eugene Wallingford DATE: July 12, 2004 6:58 PM DESC: on the value of practice ----- BODY: 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 students. 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 Pragmatic Programmers 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. -----