Over at Daily Speculations, Alan Corwin writes about database programming jobs that will never return. The gist of Alan’s piece is that the tools for databases are basically so turn-key and so easy that those who were trained to build their own database code by hand will be unlikely to see those job returns. He ends his article by noting: “For my friends in the programming community, it means that there are hard times ahead.”
Turn the page.
Here is a report from UCSD on “Hot Degrees for College Graduates 2010.” 3 of the top 5 are computer science related, and number 3 is “Data Mining.”
Now I know that database programming does not equal data mining. But it is interesting to contrast these two bits of data (*ahem*), especially giving the dire prediction at the end of Alan Corwin’s article. Besides my tinkering with iPhone apps, simulations for my research, and scirate, I’m definitely not a professional programmer. But I am surrounded by students who go on to be professional programmers, many of them being immensely successful (as witnessed by alumni I have met.) And when I talk to my CS students about job prospects, they are far from doom and gloom. So how to reconcile these two views?
Well, I think what is occurring here is simply that those who view themselves as a set of tools and languages they use to get their jobs are misunderstand what the role of a programmer should be. There are many variations on this theme, but one place to find a view of the programmer as different than someone whose skill set defines them is The Programmers Stone. And indeed, in this respect, I think a good CS degree resembles a good physics degree. Most people who come out of physics programs don’t list on their resume: “Expert in E&M, quantum theory, and statistical physics.” The goal of a good physics program is not to teach you the facts and figures of physics (which are, anyways, easily memorized), but to teach you how to solve new problems in physics. For computer science this will be even more severe, as it is pretty much guaranteed that the tools you will be using today will change in the next few years.
So doom and gloom for programmers? Only time will tell, of course, but I suspect this answer is a strong function of what kind of programmer you are. And by kind I don’t mean a prefix like “Java” or “C++”.
(And yes I realize that this is an elitist position, but I just find the myth of the commodity programming job as an annoying misrepresentation of why you should get a degree in computer science.)
Update: more here.
Hmmmm …. “It is pretty much guaranteed that (in CSE) the tools you will be using today will change in the next few years” … we can ask, in the immortal Ferengi phrase: “What does that mean, exactly?”
Well, we can replace (CSE) ‚Üà (biology) and it still holds true.
And we can replace (CSE) ‚Üà (systems engineering) for sure.
And even replace (CSE) ‚Üà (finance), most definitely.
So perhaps we can even replace (CSE) ‚Üà (physics) with reasonable confidence.
Yes but can you replace (CSE) with “plumber”, “cashier”, “soldier”, “preschool teacher”, “nanny”, “bricklayer”? Sure you can, but as a matter of scale, these are much slower that CS (no E, since engineers are so slow to change,heheh)…as are the ones you list 🙂
Dave:
I agree with you 100%.
My father was one of the very early computer people (yea, he used 0’s and 1’s) in the 1950’s. And until the day he retired in the 1980’s, he would complain that he needed to completely “re-invent” himself every five years.
Back in high school, I did some nighttime temp work as a Kelly Girl Keypunch Operator. What’s particularly amusing about this sentence is that neither Kelly Girls nor Keypunch Operators still exist! (And sex change operations didn’t exist back then either….
I have acquaintances who are Stanford CS types. They have a comprehensive command of the computer that, say, my coworkers do not. One guy in particular is a year younger than me, but I think of as ten years older than me technically.
I agree completely with you in every way. After forty-odd years in software engineering (from before it was even called software engineering) I have had to learn two new languages in the last two years and I expect to learn more new tools and techniques as I go on.
However, and it’s a big However, employers don’t agree with you. Employers ask for C/C++, Java, SAP, .NET, C#, VB, CoolGen etc. etc. programmers. The programmers who define themselves by their skill sets are the ones who get the jobs (for now anyway; Cobol, CICS, RPG experts can tell stories), the “I can solve problems using the most appropriate tools” programmers, or even the “I can solve problems using whatever cruddy tools the employer provides” programmers don’t get a look-in until the employers are scaping the bottom of the barrel.
I know this is very short-sighted of employers and they can sometimes be unreasonable, for example, requiring ten years experience in a technology that’s only been around three years, but very often skill set is the only criterion they have for choosing a programmer.
So, what does the CS instructor do? Teach skill sets and tell the students, “You’ve got five years, ten if you’re lucky. Either get into management or into some other profession.” Or teach problem solving and include a semester on writing job applications.
Sharing a planet with 9,999,999,999 other people … short on natural resources … and getting to be too hot … is no joke. That’s why the job/career challenges that Dave describes are ubiquitous across disciplines … it’s because we are all of us (together with our children) in that shared sobering situation.
There’s not much utility in whining that previous generations “had it easier” … because, although that’s true in a (very limited) sense … on the other hand … in the 21st century we are uncovering resources that present opportunities beyond anything that previous generations dreamed of.
Not the least of our planet’s newly discovered/newly created resources—in fact, among the greatest of our planet’s resource treasures—is the amazing depth, and (as we are beginning to appreciate) the even more amazing breadth, of quantum systems math, science, and engineering.
Just thought I’d write an optimistic post … which also happens to reflect my considered opinion! 🙂
Keith, you’re completely right, but there is a third option: the instructor can teach problem solving and the principles of computer science using whatever the trendy language of the day is. Then everyone’s happy: employers wanting to tick boxes can do so, and students can demonstrate evidence of having a deeper understanding, in the unlikely event of being interviewed by someone competent.
Hmmmm … not much optimism in view hereabouts.
Are the younger QIS folks taking to brooding over Robinson Jeffers’ The Purse Seine, and posting on Dark Mountain?
Gosh … isn’t QIS supposed to be providing a viable alternative to these—nowadays sadly common and sadly dark—post-peak-oil meditations?
I’m working in medical records rather than financials, but I’ve been involved in a lot of code generation projects and they have generally been a bottom-up initiative in my experience, since nothing is more soul-deadeningly boring than banging out dozens of mildly different SQL reports for hours on end. What kind of programmer wants that job?
Dave,
in my experience the difference between a really good programmer and the rest is the willingness and ability to work on/with the code of somebody else.
Most people prefer to write new stuff and in their own way, unfortunately in reality a large code base usually already exists and people who are able and willing to do something with it are the most valuable and very rare.
And as a follow up, I offer these thoughts.
An employer advertises that they are looking for X,Y,Z demonstrated skills as initial barriers. These are basic qualifications meant to keep, for example, the ColdFusion guys from applying for systems jobs [Hey, I can spell L-i-n-u-x, I’ll put it on my resume].
Those requests [however misguided they are; eg, way back when they were asking for more years of experience with Java than Java had existed], make for the first round of disqualifications. Then they bring you in and interview you to see if you are at least capable of doing the actual job.
They aren’t looking for the *top* candidate. Top candidates are expensive. They want a good candidate that they can afford. Paying for anything more is frilly and wasteful in a competitive environment. Most companies can only see themselves a year or so out. How long will it take to realize a return on the difference between a top candidate and a competent candidate? This is the calculus of the business world.
Okey, guys, I’m a young person who happens to read a lot about programming and computers, and talk to people who used to be programmers, but technology moved so fast that they got left behind. So, in contemplating my future prospects; it seems to me, not a good idea to stick to programming, or anything that changes and moves so fast. I want to eventually have a family, and kids, and technology seems not to provide much security in the job department(I know, asking for job security is like believing in the toothfairy). I mean, who knows what king of computers we might have in,say, fifteen years,quantum computers, perhaps. Thus, I been thinking that something physical or that deals with people more directly would probably be a better career choice, like Medical School. I thought of finance, but with the stock market collapse, and the bad reputation financiers have lately, eeh, wouldn’t be a good idea. Would any of you agree that Med or something that is not extensively technology originated is a better career choice, or, like some of my friends say: it doesn’t matter because the Singularity will make all jobs obsolete.(Which I doubt on bad days.)Thanks.