The ugly (or wonderful, depending upon your perspective) truth: Teach Yourself Programming in Ten Years. These days I think back on applications I worked on just two or three years ago and marvel at how crappy the code I wrote was. I hope that ten years from now, I’m still scoffing at code I wrote not long before, as it’s an indicator of improvement.
Update: Bruce Eckel’s post on generics in Java is a concrete illustration of why it’s better to know many programming languages. Oddly, I was just talking about generics with someone this morning, and thought of them mainly as a way to create type-safe collections. It’s interesting to see that their real use lies elsewhere.