My son is about to start college and he is, for the forseeable future, interested in computer programming. He has already done some Python and some C. (But not a huge amount.) This summer he is exploring Inform and GNU Lilypond on his own initiative, and he also figured out on his own how to use apt-get and a few other Linux tools. One of the questions on the college applications that was easy and hard at the same time asked how he planned to use his college education. It was easy to say, a career in software development. But what kind? The college applications are all in the past now --- he got into a good university --- but I don't feel that we know all that much about realistic answers. It will be his choice, by a mile, but I would want to be able to give realistic advice.
My question is, what kinds of software development are in high demand? Certainly you should seek a career that you enjoy, but you should also seek a career that exists. For instance, when I was my son's age, all I knew about was computer games and computer graphics. Obviously that works for some people, but I would expect there to be an ocean of wannabe game developers. Or my own career, research math professor, is fine for me and many people, but it is deeply competitive even for a ho-hum salary.
So what kinds of software development careers have greater demand than supply? (Of qualified applicants.) What programming languages are used, and what does the software do? E.g. I could conjecture business data mining, or numerical analysis for engineering, or embedded devices, or biotech software, etc., but I don't really know.
Note concerning programming languages: I understand entirely that programming languages change over time and that serious programming skills are not tied to specific languages. (In my hobby career I have written in a half dozen languages.) I am not asking a "which language is king" question. I ask about this detail to get some sense of what the work is like.
I'm accepting the answer by Adam Crossland since he was the most helpful for the question. But I would still be interested in more discussion. There is a drift in the answers that "all" areas of software development are in high demand, and that any well-prepared software developer can have a good career in any kind of programming that he truly loves. I understand this advice and I agree with it up to a point, but it is just not that simple! In another StackOverflow question, the author said that he was interested in algorithms. At least part of the reaction there was that a lot of low-hanging fruit has already been taken in the field of algorithms, that it's not easy to get a job just studying algorithms; rather you also have to respond to real-world needs of corporate employers. The off-the-cuff reactions to that question and this cannot both be entirely correct.
I'm also glad that the question was reopened because I think that the expertise for my real question is here and not in "careeroverflow.com". But maybe I don't mind trying it to see how well it works.
One theme that is emerging in the answers is that an acute shortage of developers in specific areas can dissipate into a general shortage across all areas, if developers are willing to travel with their skills. I hadn't thought of it this way, because it's not the same as academia. In academia, capable people travel in geography space; they travel in skill space; they don't travel as much in project space. In research, people expect that it takes a long time for your understanding of one subfield to mature. There are researchers who do serious work in more than one subfield, and that's fine. It's common and widely admired to learn new skills for an old project. But it's a bit suspect to say, "Oh, I only did research in 3D graphics for a year; I switched to MEMS because I saw the demand."
If I have it right, then it means that your are far more employable as a software developer if you are loyal forever to your skills, but adaptable to new types of projects. Otherwise, you might set root in a narrow market even when demand for it subsides.