One of my favorite books on the approach to software development is The Pragmatic Programmer. I refer to many of the concepts in the book in my course lectures, conference presentation, and even hallway conversations. One of the things that Hunt Thomas say in this book is that "pragmatic programmers" should try to learn a new programming language every year. I think it's a pretty good idea, and I applied this theory toward learning Perl, Ruby, Python and C# (can't remember the order) between 2001 and 2005. I'm certainly not an expert in any of those languages, but I know them well enough to get by, and may even be able to get a job writing with one of those languages if Microsoft fell into a giant sinkhole or something.
My "bread and butter" languages are C and C++. I know Pascal and Basic well enough, but I don't know if I'd want a job where those were the required main languages. One huge whole in my knowledge of programming is anything to do with web. Given that the Internet seems to have enough popularity to become significant (that's sarcasm for those of you reading without a sense of humor), I'm feeling a little out of the "cool loop".
My worry grows when I recall that I used to be one of the cool people who wrote web pages in notepad. For a brief time in my career, I was a tester on IE. I tested rendering of non-US characters and related functionality on IE2 and IE3. I tested every html tag that existed. I tested CSS before it ever worked in a browser. I wrote IIS extensions for the first version of IIS. I've written UI automation in javascript and vbscript, and written dozens of ActiveX controls to aid in this effort.
Today, I can barely create an html "Hello World" application. ASP is a mystery to me. Although I know how to exploit cross site scripting, I don't think I could create a web page that had the vulnerability. If local software applications disappeared, and everything went to the web tomorrow, I couldn't be the apprentice of an apprentice web developer (thank goodness I know how to test this stuff!).
This is all leading somewhere, and this is it. Tonight I thought it would be fun to convert one of my little utilities (basically a timer application - details unimportant) from a c# app to a Vista Sidebar Gadget. At the time I started searching, of course, I had no idea that the stupid things are web based. Still, I thought it would be fun for some reason, so I went to work. In the end, I discovered that the gadgets have very little HTML, but do require a bit of javascript (I'm sure vbscript would have worked too, but for some reason, I like js better). Over the space of an hour or two, I searched the web, I cut and pasted code, I cursed, and I clapped. I wrote some code and learned a lot of new things. When I was done, I had exactly what I wanted, and the gadget now sits proudly on my sidebar.
I haven't done anything new with programming over the last two years or so, and this experience reminded me how important (and fun) it is to try to make computers do something a different way. I'm certainly not off to be a web developer anytime soon, but I will find a way to stay sharp on web technologies.
I think I may finally learn how to use SQL next year.