The Experience Trap
Friday, March 12, 2004
On a recent speaking tour, I had a chance to meet with several university professors in a few different countries. These professors, like me, were mostly in their mid-40s. We had all learned computer science in a similar way, starting with C and Unix, then moving up to more modern object-oriented technologies as they appeared. The natural tendency, I found, is to teach people in the same way that we learned.
For example, I spoke with a couple of professors who argued vehemently that C was the best programming language to teach new students. After all, it was what the professors themselves had started with, and it’s also the foundation for today’s most widely-used languages. Even better, I was told, C lets us teach students about pointers, a fundamental concept. Yet which is more important today for a software developer to understand: pointers or classes? If you chose pointers, I would suggest that either you work on low-level code, which is an important but increasingly niche area, or that you don’t understand how rapidly your knowledge ages. None of today’s dominant languages—not Java, not C#, not the current version of Visual Basic—rely on pointers, while classes are fundamental to all of them. Teaching students in the same manner that we were taught reflects our experience, but it doesn’t reflect reality.
The difficulties faced by teachers of computer science provide one example of the problems experience can cause. But the challenge certainly isn’t limited to professors—we’re all in danger. And since the experience trap isn’t much of a problem at the beginning of a career, it can sneak up on you. When you’re twenty five, you don’t rely much on experience because you don’t have any. When you’re forty five, however, it’s tempting to rely too much on experience. The truth is that experience is useful only if the future is like the past
. In software, what will be important next year is often very, very different from what was important last year. Realizing that a significant part of our hard-won knowledge becomes valueless every year is a necessary part of moving forward.
After teaching for a decade or more, I’m sure some of the computer science professors I spoke with wished they’d chosen to teach history instead. History professors don’t have wholly new topic areas suddenly appear, nor do they need to readdress basic pedagogical issues every few years. But my conversations with these people reminded me of how important it is for all of us—professors and practitioners—to sometimes ignore our own history. Avoiding the experience trap is an essential part of making real progress.