I should start this post before the center-piece of it gets too far out of date. On December 12, the Austin-American Statesman published an article about the lack of people with software development and design skills in the Austin area. It was somewhat interesting, to me, that in this article that the Greater Austin Chamber of Commerce is trying to encourage the University of Texas and the Austin Community College to do more to produce skilled programmers. A number of questions came up in my mind as I read the article.
My initial thought to this claim is, "What about Texas State?" Texas State University is a 30-45 minute drive from most every place in Austin (depending on how Austin's infamous traffic is). Why isn't there interest in the computer science majors coming from the University I just graduated from. The computer science department at Texas State has an Industrial Advisory Board. Admittedly, they could do a better job of promoting it, but I'm sure the folks from industry who are participating in it are providing good feedback about what they need from the students that Texas State is producing.
Something interesting in the Statesman article is that is seems like the companies who are in most need of hiring developers are ones that are least likely to want to train people to do the job. I am in agreement with academia that there is only so much knowledge that can be taught to students. That knowledge needs to be somewhat generic in nature. There is no way that a university can provide specific knowledge in programming the latest and greatest programming language. Instead, it can provide a student a good foundation in programming so that the student can take that foundation and apply it to most any programming language.
Having first learned programming in C/C++ (from Texas State, ignoring that I was first programming in BASIC when I was 8 years old), I feel that I was given a good foundation of programming basics. I am familiar with pointers and memory management (something I would be unlikely to learn if I was taught Java as a first year programing language). I've spent the last two years working in Java with my research job which I think has given me good experience in a language that is in decent demand by industry today. The transition from C++ to Java was not difficult. It was mostly a matter of learning slightly different syntax and being able to ignore memory management (freeing up memory that I dynamically reserved), and some new built-in libraries (Collections.sort() .... ahem). Over the course of this year I've learned different aspects of web programming and Java frameworks (Wicket, Groovy on Grails, and 'plain' J2EE after initial difficulty wrapping my head around Spring). Again, this was largely an extension of my work with Java.
Anyhow, from the Statesman article I wonder how they are going to find skilled developers to work on their projects, at the price they want to pay, but don't want to train their new employees. The training process shouldn't be a difficult one, assuming they hiring someone with a decent foundation and a willingness to learn new things. In some ways I feel that companies would be better hiring someone who can be trained to take their existing knowledge and apply it to new technologies. The alternative (albeit possibly an extreme one) is to hire someone who is already familiar with the technology the company is using today and may be unwilling to learn or transition to a different technology next year as technologies improves or demands from clients changes. ... But what do I know? I've spent all my time in academia. 
Now that classes are more than over and my professor has no new work for me, I've been thinking about what to do with my time. I still have access to the University library and I checked out a number of books this week. I figure I want to attempt to fill in the gaps I recognize I have in my education, at least in regards to software engineering. So, I'll be reading up on those areas. The books I have for now (and may write about in the future) are: