views:

3498

answers:

8

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.

+2  A: 

Business Intelligence is a good option.

Raj More
Can you elaborate? Does this mean data analysis of sales and market conditions? What sorts of languages/APIs are relevant? How do you tell that demand exceeds supply for this type of work?
Greg Kuperberg
Business Intelligence is a very broad moniker for a great variety of skills and expertise that can be expressed as software development, database design, datacube design, datawarehouse design, report design...it really goes on and on. In the Microsoft world, which is my area of expertise, BI means SQL Server, SQL Server Analytic Services, SQL Server Reporting Services, SQL Server Integration Services and a whole host of other technologies. It's not work that I personally like to do, but consultants with those skills are always, always busy and well-paid.
Adam Crossland
Adam, this answer-in-a-comment is EXACTLY in the spirit of the question.
Greg Kuperberg
Not to rain on your parade, but "BI" is so vague as to be borderline meaningless. I've done a fair bit of BI work, and my impression is that Microsoft isn't a big player in the BI space (as they are in, say, the desktop OS space), and one could easily name a dozen other sets of technologies that are also "BI" and just as popular. I've used many BI software platforms and tools, with no overlap at all with Adam's list -- and that was at an otherwise Microsoft-only shop (!).
Ken
I take your point, Ken, that "business intelligence" can mean anything or nothing. But I think that there is a valid argument here that (in various forms) it is much-needed but unsentimental work that people generally don't dream to do. "I want to grow up to write software that tracks sales!" Who talks that way?
Greg Kuperberg
Greg: No-one, for the same reason that no-one says "I want to write software to convert bits into other bits!". BI is no less or more inherently glamorous than anything else. There are certainly programmers who say they want to write software "enable individuals to make efficient use of their data", for example. (Come to think of it, that would be an accurate description of a lot of Google, and nobody seems to think that Google is lame.)
Ken
I dunno, Ken. When I was a teenager, I went to SIGGRAPH and it was incredibly glamorous. For me at that age, Pixar truly seemed like a dream software career. I would not have said the same about Essbase. But hey, de gustibus non est disputandum.
Greg Kuperberg
@Greg Kuperberg: I know of no one that wants to grow up to write software to track sales. But then, how glamorous is it to write software to search for things? Software for an operating system? Or software to take a picture? Microsoft, Google, Apple are just some of the companies that do this.
Raj More
Well, Google has managed to make a lot of previously boring things like search and street maps glamorous, as well as hugely profitable. Apple has done some of the same, although photography always had a glamorous side of course. As for Microsoft, arguably they have always had a glamor problem; sometimes they come across as pinstripes faking glamor. And maybe it's a bit of a trap for them and it's been holding them back. Well, their game division has some glamor (even back with Microsoft Flight Simulator v1).
Greg Kuperberg
+5  A: 

Let him pursue the branch(es) of software development that he enjoys - the rest are irrelevant.

If he enjoys it, then he will be good at it, and he will find a job.

Dolph
I tried to explain that I already know this answer and I even agree it, but I don't think that it's the whole truth.
Greg Kuperberg
Greg, you are wrong. As Adam pointed out, there is plenty of demand for programmers in all the active fields of programming, so how well your Son will do is directly proportional to his passion for that subject. Hot technologies now can easily become archaic backwaters in a matter of a few years. Ruby went from toast of the town to lost in the wilderness in about a year. Visual Basic was bread-and-butter stuff for years, now it's on the endangered species list. Three years in college is long enough for the careers landscape to change noticeably, and hopefully he'll have a 40+ year career.
Simon Hibbs
Let's aside the personal version of this question --- my son will do fine I'm sure. The fact remains that there are people who are so self-indulgent with computer programming that it doesn't make a career. There are people who get caught up with projects like cellular automata or searching for prime numbers. Maybe you're more likely to see it in academia?
Greg Kuperberg
Prime numbers is very critical for stuff like encryption... even then you've got a niche. And cellular automata can be useful too, but it is more esoteric right now (http://www.mjyonline.com/CellularAutomataUses.htm for a list of some uses-- got that as top result of a google search).
torial
Prime numbers with thousands of digits are important for encryption. Prime numbers with millions of digits are less than thrilling for industry employers. Likewise your cellular automata page is interesting, but you can see how that page points much more to academia than to industry.
Greg Kuperberg
Ruby is "lost in the woods"? LOL
dasil003
My original post had twice as much, and I decided to delete it.. but it seems to be warranted. Greg, you can dismiss lots of things as self-indulgent, and in any field there is a risk. But I think you are looking at this wrong. Perhaps your son is of the temperament that will get lost into academic research -- if so, he will be MISERABLE doing standard development. If he isn't that kind of person, then he will be able to take your cellular automata (if he cares) and make it into something practical because he's a practical person. Your son is the key variable, not the particular field.
torial
If you are concerned about your son being too theoretical, but wish him to be grounded in gainful employment, I strongly recommend encouraging a generalist approach and then have him work for a small company in the field of interest. For example, I work at a Localization Service Provider, and I have plenty of challenges ranging from the mundane to researching MT. I have to support Sales as well as Production as well as keep my company strong against competitors.
torial
Obviously my son is the key variable, but let's not make the question too much about him. He'll do fine, I'm sure. My question, part of it anyway, is about relating life in college to life after college. After all, when you apply to college, they ask how you plan to use what they teach you. The concern is not just about being too theoretical, but more generally about unrealistic expectations for what an employer might pay you to do.
Greg Kuperberg
A: 

The question is rather argumentative, but here are a few thoughts:

  • The programming language is a means not a goal, so which ones he learns is irrelevant. However, a low level language like C and something like Java/C# is always good to know.

  • Design matters: Which software design patterns / anti-patterns exist is important to know beside good knowledge of UML.

  • Demand for qualified people is there in all areas. If you're excellent, you have the choice. If not then no matter which area you are specialized into, you'll have a hard time anyway.

  • How much demand in a given area is there is not a constant. Don't plan it, there's a high chance that you'll be wrong. Flexibility is the solution.

jdehaan
I entirely understand that the choice of language is just a means to an end. I personally have written software in a half dozen languages. I ask about the language to get some feel for what the job is like.
Greg Kuperberg
+4  A: 

Most of the "Most Popular Programming Languages this Year" always seem to include Java, C#, C++, C in the top ranks. Those are good languages to know for almost any programmer. And if you are proficient with one or two of them, chances are that learning new technologies quickly will not be as difficult.

In terms of industry and application, this is really a pretty fair game. There are computer programming jobs available today in most industries, your son should have no problem finding one that he is interested in and can be a valuable member of, if he has done his homework and can prove that he is a valuable programmer to have on any team.

Best of luck.

jordanstephens
I agree that those are EXCELLENT languages to know, but if the kid is good enough at any language, there is demand. For example, banks still need FORTRAN programmers, web start ups need excellent PHP or ASP workers.
HalfBrian
@HalfBrian: If there is one software career that I wouldn't recommend to a bright undergraduate, it's to be stuck at a bank doing deep legacy programming in FORTRAN. Sure, maybe the employment prospects are still there, but talk about a soul-killing job.
Greg Kuperberg
+17  A: 

Virtually all kinds of software development have a greater demand than supply. That varies greatly by region, but on the Coasts, there are few gluts of developers that I am aware of.

Speaking in the broadest-possible generalizations, I would say that it is hard to go wrong with a focus of developing web applications, and it seems as though the emergence of HTML 5 is going to make the web even more powerful and relevant a platform, as it will empower web applications to do most or all of the things that desktop applications really excel at currently.

However, it is also important to note that the industry changes so frequently that the only skill or quality that is really meaningful is a sincere love of and passion for software development. If your son does in fact choose a career in software engineering/application development, he will be constantly learning new technologies and acquiring new skills. Having to work at it so much will be onerous if he has anything less than a real desire to be great.

That being said, your description of him makes it sound as if he already has enough of the curiousity and self-motivation to be successful in the long term. My very best wishes to him and you for a bright future.

Adam Crossland
Certainly an interesting answer about web applications. As for the personal side of this, maybe I made my question more personal than I wanted to, but as you might expect, at this stage he has a real desire to tinker. That's not exactly the same as a desire to be great; and arguably it's too early for that.
Greg Kuperberg
Although there is an irony in the answer about web applications: Some of the most important programming work (e.g. at Google) is web applications; but some of the shallowest and most marginal work, "programming lite", is also web applications. But maybe that's also a sign of high demand?
Greg Kuperberg
We almost all started by tinkering. There are probably a few people who started down the path to a career as a software engineer purely for the (largely mythical) financial rewards, but those people can rarely stick with it. In those for whom tinkering becomes an obsession, there is the potential for a future great engineer.
Adam Crossland
Quite right, @Greg, about the range of work that comprises web application development. If your son loves application development, he will have plenty of options of the kind that he can choose to do. He is not likely to end up with a marginal skill set that forces him to take marginal jobs.
Adam Crossland
I vividly remember the comment my uncle, an electrical engineer made, when I decided to join an engineering school: "you will be learning for the rest of your life"... This is *especially* true of Computer Science, as it is still in its infancy, and there is plenty of computerisation going on. So, as long as you are learning something new (whether it is on the job, or on your own), you can expect to be employed as a software developer.Once you tire of learning, you can explore management opportunities :-)
rmk
Well, mathematics is certainly not in its infancy, but learning for life is certainly a good motto in that profession!
Greg Kuperberg
+8  A: 

"Big Data" is big and only getting bigger as a professional field.

The world is producing more and more data, and the ability to study, munge, and visualize that data will be an extremely valuable skill during y our son's career.

One of the most well known success stories here is Nate Silver and his election polling/prediction site fivethirtyeight.com. Plenty more if you search 'big data'.

Open source technologies involved are R for processing, and large scale data management systems like Hadoop (and open source implementation of Google's Big Table and Map Reduce technologies).

Here are other URls I'd link to if I could (fixed - GJK):

Kurtosis
Your advice is interesting and reasonable enough. Although as far as I know, Nate Silver's data isn't "big"; I don't know why it would even be anywhere close to a gigabyte. What is true is that Silver does really good data analysis.
Greg Kuperberg
True, not big, I was thinking more in terms of his analysis and modeling.
Kurtosis
+2  A: 

I agree with the philosophy that if your son pursues technologies that he's interested in, he will naturally excel and be in demand. There are plenty of programmers out there, but few who can create business value from there skills, and delivering business value will keep people employed for a long time.

Aside from that I can say that after five years of industry experience I benefited from pragprog's The Passionate Programmer. It is essentially a structured way to analyze and strategize ones career as appose to wandering.

I like the book recommendation, enough so that I hyperlinked it.
Greg Kuperberg
+2  A: 

The answer is, to a certain extent, regional. For instance, you'd think that the market for game developers would be saturated, but it certainly isn't in Montreal, where most big game companies have studios and are struggling to find talented game developers.

And niche markets (medical imaging for instance) might seem like a greater risk, but there are so few qualified applicants in that field that the good ones are very sought after.

Kena
I would have thought that if any software development market was chronically saturated, it would be game developers. But maybe the only market that's overflowing with job candidates is really bad game developers. :-)
Greg Kuperberg
I can't speak for other regions, so the market for game developers could very well be saturated in, say, California. And of course, bad (or socially inept) developers everywhere are always complaining about saturated markets and jobs shipped abroad, whatever the domain.But I wouldn't shy away from game development if one is passionate about it. And game development is varied and challenging enough that most the skills involved - apart from AI maybe - translate well to other computationally and graphic intensive domains.I know I'd hire a good game developer any day for my type of work.
Kena
Sure, game development is a fine intro to the profession -- it was my intro after all. But transferring the skills to other types of work is surely a prudent step for many people who start as game developers. I personally think that the world only needs so many iPhone mini-games --- although maybe some folks at Apple imagine infinite demand for it.
Greg Kuperberg