Back in high school, I had a friend who was deeply interested in the martial arts. He told a story of a martial-arts student — I’ll say a karate student — who had started out as a “White Belt” and earned different-colored belts as his skills progressed — yellow, orange, green and so on — until he was finally awarded the coveted Black Belt. When he received his Black Belt, the student said, “Now I truly know karate!”
His teacher said, “No, the Black Belt means you are finally ready to begin learning karate.”
I’ve remembered that story for decades, now, but I never really understood it until I was learning to program computers. I’m a “self-taught” programmer; I never took classes, but I read books, studied programs printed in magazines, and talked to a more knowledgeable friend when I got stuck. I started with the BASIC programming language, but eventually I learned assembly language, which is much closer to the native ones and zeros that are the computer’s true native language.
With assembly language, I could create routines that worked ten, a hundred, or even a thousand times faster than similar code written in BASIC. That’s a good way to impress a BASIC programmer.
If you don’t know how to do it, assembly language programming is a dark and mysterious art, and the people who can do it look like wizards. When I set out to learn it, I thought it would make a pretty lofty capstone to my education in programming. But when I’d learned it, and used it for a while, I realized assembly language wasn’t a destination; it was a starting point. Everything I’d learned formed only a foundation on which to build a real education. Assembly language was a Black Belt; it meant “Now you are ready to begin.”
I’ll bet it’s the same way in many other fields, as well: the apparent goal is only the starting point. I’d guess that, even if you attain the top rank beyond Black Belt in karate, you look at what you’ve learned and say, “Oh, now I see how to begin.”
It doesn’t end.