Part of my job is to select technical people to be hired in the company. Few months ago I happened to interview a guy for a developer position. This guy has a degree in chemistry but his career then oscillated between system administration and programming in the java world.
After a while talking about his experience he said that, being in his 30s, he was looking for some stability. In particular, he said, he was frightened by how quickly our knowledge can become obsolete in the programming world. For example in 5 years Java could become obsolete because everybody could move to the next big thing (.net, he said), making Java skills useless and forcing you to learn everything from scratch. He added that system administration and programming skills in the open source world will last longer.
On one hand I agree: open source skills will last longer. In the open source world we never have to push the new thing just to force everybody to buy the new version. We’re not at the mercy of some company’s agenda. We grow software incrementally, evolving technology on top of the existing good old stuff, with continuous innovation and experimentation patch after patch and using Darwinism to select stuff that works and re-use it forever.
On the other hand I think this guy doesn’t understand what programming is really about, on a deeper level. In our world technologies evolve very quickly. Every day new emerging technologies provide better ways to do the same thing and even in the evolutionary open source world, we have to keep up with the fast-pace advancement.
That’s why good schools won’t teach you a specific programming language or a specific application or operating system. Good schools won’t teach you the technology of the day. They will teach you how to learn new stuff quickly, how to be your own self-teacher. They will prepare you for a whole life of research and study.
As Jeff Atwood once wrote “how lasts about five years, but why is forever”