Wax On Wax Off

Learn the fundamentals first.

The title of this page comes from the 80's flick TheKarateKid?; wherein a local janitor who happens to be a martial arts master teaches karate to the local 99-pound weakling. But before the karate lesson is to begin, the old guy insists the young kid wax his car, paint his fence, and do a variety of other odd jobs around his place. Precise instructions are given on the strokes and motions needed for each task--for waxing the car, a clockwise motion ("wax on") is followed by a counterclockwise motion ("wax off"). And so forth.

After about a week of this, the kid says he's quitting--claiming the master has taken advantage of him to get the chores done. Whereupon the master reveals that the motions involved in each chore corresponds to a defensive move in karate--what the master has tricked the student into doing is not just chores, but practicing karate moves.

How much resemblance the movie bears to actual karate I have no idea. Hollywood has its way of putting a spin (and grossly oversimplifying) everything...

If you're teaching or learning a musical instrument, you start with the notes and chords.

If you're teaching or learning carpentry, you start with nails, hammers, saws, and such; then move on to framing.

Apprentice artists many years ago spent a great deal of time learning how to mix and formulate paints and pigments before putting brush to canvas.

Similarly, apprentice barbers used to start out as the kids who swept out the barbershop.

If you're teaching or learning programming, you start with the simple elements from which the other, more general, more abstract things are built. There is real value in learning the low-level stuff first.

Sure, you can short cut the process. You can drive a car without knowing how to check the oil, fill the tank, change a flat, and all that stuff, too. Just point and click.

Wax on, wax off, GrassHopper.


I've noticed a tendency to use this phrase to put down viewpoints of perceived "pop philosophy," turning it into a derisive epithet ("oh, yeah, childish WaxOnWaxOff thinking") which misses the point.

The point was always "learn the basics first" and there's nothing childish or foolish about that.


When I created this page, I wanted to include a little TongueInCheek? remark about a car wash that I know of.

Unfortunately, when I mention it to most people, I get a "yeah, right, you're making it up" look. Recently I was in Las Vegas for the Perforce Users Conference and had the opportunity to gather a little photo evidence that such a car wash exists.

Here, therefore, is the link: http://www.noisyroom.com/public/carwash/CarWash.html

-- GarryHamilton


However, this attitude very quickly degenerates into EatYourSpinach? mode, where all fun is drained from the activity by a bad teacher who insists the student endure massive tedium before being allowed to do anything interesting.

In the case of the martial arts, this was done to help ensure that the very dangerous craft was only taught to those with the character to use it responsibly. Presumably, would-be students intending to use the skills for nefarious purposes would lack the patience for the tedium, or would otherwise reveal their character by how they handled it. Obviously, this was before the invention of firearms.

Another degenerate form is the insistence that if there is an easy way and a hard way to do something (that produce equivalent results), the student must do it the hard way. For example, hackers who believe students should learn a language with manual memory management (such as C) first.

-- MattChaput

There is some merit in that style, in that the student then learns details about the underlying system that are useful if not necessary for greater understanding. An example from life - I once worked with someone who had come into computers during the boom, and who did not know what parity was (during a discussion of modem settings). Because nearly all devices using modems have standardized on 8-N-1, nobody ever has to set values, but knowing what parity is seems (to me) to be vital to an information processing career. --PeteHardie

I know what parity is, but so far in my twelve years in IT I've never had occasion to benefit from that knowledge.

You've never transmitted data and used a checksum or CRC? Inconceivable!

He said he never used parity. Checksums and CRCs, while often used for the same purpose as parity, are not the same.

Knowledge of how parity works is the most elementary form of error correction, which leads to checksums, CRCs, and on into MD5 checksums for files, etc. Not knowing what parity is means one might develop a data transmission system that used lossy lines and then not know why no data ever was correct.


Starting a subject from first principles (e.g. starting CS with assembly or (god help you) machine language) is certainly a recurring theme in TraditionalWesternEducation?, however I'd argue it's completely wrong. You should teach the easiest, most useful method of doing something first, and only delve into the underlying levels if the student is interested in the subject. It's completely absurd that math students in North America spend months learning long division, but only hear about the fast, easy method (synthetic division) if they have a good teacher who teaches "outside the box."

This principle is usually recognized outside of the traditional education system. For example, you aren't required to master the physics of the internal combustion engine before learning how to drive.

Similarly, studies indicate that students learn history better when the teacher starts with contemporary history and works backward, because the students first become engaged with events with which they are familiar and have opinions about, instead of long-ago events they feel no connection to whatsoever. (See the book LiesMyTeacherToldMe.)

I hope to God that the next ship I sail on isn't crewed by people who learned sailing "TopDown" rather than "BottomUp." I've sailed with both types. There's just nothing like knowing every weld and pipe, every vibration and knock, every quirk and quibble.

You can get away with this to an extent in non-critical contexts, but there's a really good reason why pilots learn aerodynamics as part of the basics. You can do useful programming work while treating the OS and CPU as SomebodyElsesProblem, but when the outcomes matter I hope you paid attention when interrupts, registers and addressing were discussed. Especially if your code wants to land on Mars.


EditText of this page (last edited May 18, 2005) or FindPage with title or text search