For the relentlessly curious and those moving faster than the speed of communication (a metaphorical sound barrier), self-education is a necessity. As someone with an education in programming and who often worked just behind the cutting/bleeding edge I’ve experienced both sides. Formal education, at least up to the graduate level, is largely Just In Case education. No one knows the future, so here are a lot of things that might be useful. After we leave school, learning is largely Just In Time, what programmers call Page Fault Learning: work until you hit something you don’t know, stop, take it into memory from wherever you find it, and continue.
In a conversation with the son of a friend, he complained about having to learn biology in high school. He didn’t need to know that. He was going to be a bicycle mechanic. He is now a doctoratal level computer scientist across town. We both are 1800 miles from where that conversation took place.
The down side of self-education is that our education has holes in it, sometimes serious holes. At best it means “re-inventing the wheel”, except of course we aren’t the original inventor and may have a false sense of ownership.
Indeed, one of my major complaints about the computer field is that whereas Newton could say, “If I have seen a little farther than others, it is because I have stood on the shoulders of giants,” I am forced to say, “Today we stand on each other’s feet.” Perhaps the central problem we face in all of computer science is how we are to get to the situation where we build on top of the work of others rather than redoing so much of it in a trivially different way. Science is supposed to be cumulative, not almost endless duplication of the same kind of things.
Richard Hamming