Showing posts with label design patterns. Show all posts
Showing posts with label design patterns. Show all posts

Saturday, April 4, 2009

Penmanship

Recently, I have been trying to improve my penmanship. In so doing, I realized why I always seemed to have trouble with cursive writing; I don't think my teachers were teaching it correctly.

Look at any turn-of-the-century penmanship handbook, and you will see hundreds of exercises simply to train the hand and arm movements required to write quickly and legibly. Hundreds of identical strokes, all at the same angle, with the same pressure, moving always with the arm, not the fingers. These train the muscles of the arm to produce consistent letter forms, quickly and smoothly, which is essential to penmanship.

This was never taught. Instead, we took the printing we learned in earlier grades, added tails to the letters, and mashed them together. Each letter was distinct, without flow. Strokes were taught only as they pertained to an individual letter; when a letter was broken down into its component shapes, those shapes were immediately assembled back into that same letter, without touching on re-use of those shapes in similar letters.

I see this same problem in software development. A problem is broken down into smaller problems, but these small problems are rarely studied in isolation. We break the problem down, solve the small problems, and re-assemble them. Forgetting that we already solved two-thirds of the small problems elsewhere in the project, we solve the same problem in five or six different ways, some better and some worse, some beautiful, some sloppy and unmaintainable.

What we need to do is solve these small problems. Solve them over and over again, so that we may refine them and practice them. Eleven letters in Spencerian script share the same initial stroke; practicing just that one stroke will improve the implementation of each and every one of those letters. Perfect solutions to common sub-problems, and all problems that share them will improve.