24 June 2008

Link of the day: "The Ultimate Code Kata"

At Coding Horror, Jeff Atwood writes about "The Ultimate Code Kata." To quote a quote from his post:
Contrary to what you might believe, merely doing your job every day doesn't qualify as real practice. Going to meetings isn't practicing your people skills, and replying to mail isn't practicing your typing. You have to set aside some time once in a while and do focused practice in order to get better at something.

I know a lot of great engineers -- that's one of the best perks of working at Amazon -- and if you watch them closely, you'll see that they practice constantly. As good as they are, they still practice. They have all sorts of ways of doing it, and this essay will cover a few of them.

The great engineers I know are as good as they are because they practice all the time. People in great physical shape only get that way by working out regularly, and they need to keep it up, or they get out of shape. The same goes for programming and engineering.
The way I interpret this idea is that quality of practice matters over quantity. As Atwood says, you have to be focused (you are telling your mind "I'm practicing this skill right now") and you have to find ways to challenge yourself. Frequently, physicists will think of small problems and try to work them out. I talked to one of my fellow grad students once and he said that when he was tired of research, he would practice programming in Mathematica. For example, he would try to have Mathematica compute the prime numbers between 500 and 1000.

Off and on, I practice hockey shooting by shooting off a board into a lacrosse net. I realized that I didn't want to keep shooting from the same position, so I tried various challenges like moving the board, shooting off balance, shooting from an extended reach, shooting from a squeezed reach, trying to shoot as high as possible, picking a corner to shoot at, etc. I think this is an example of "kata."

No comments:

Post a Comment