Programming and the Recession
Back in April of last year I wrote about job numbers and trends for programming languages. Since the newspapers tell me we’re all doomed to the soup line in the near future, I decided to compare the job numbers from last year to what we have now. Here’s the result:
All the numbers are from Dice.com, a rough measure to be sure, but useful nonetheless. The average decrease in the number of jobs was 40%, which seems pretty bad. I don’t know what the supply side looks like, but I imagine we now have more job seekers as well. Here is the % decrease in number of jobs, by programming language:
Interesting to see how Python and Ruby held out a bit better, while Perl declined the most. But despite a rocky short term, the overall picture for software engineers looks great according to the US Bureau of Labor Statistics:
- Computer software engineers are one of the occupations projected to grow the fastest and add the most new jobs over the 2006-16 decade.
- Excellent job prospects are expected for applicants with at least bachelor’s degree in computer engineering or computer science and with practical work experience. (…)
Employment change. Employment of computer software engineers is projected to increase by 38 percent over the 2006 to 2016 period, which is much faster than the average for all occupations. This occupation will generate about 324,000 new jobs over the projections decade, one of the largest employment increases of any occupation.
Not bad huh? Back in 2001 I pestered the BLS economists about this, asking them what they thought offshoring effects would be and so on. They came across as truly bullish on programming, which makes sense to me. The degree to which society depends on computers and programmers will only grow from here. Meanwhile, there is a natural barrier to entry when it comes to programming. When explaining the folly of projects that aim to develop software to replace programmers, Scott Westfall put it this way:
Programmers think more logically. Working through if-then-else conditions is a core capability for any programmer. While working with business teams on requirements, I have often run across cases the where same ability was lacking. (…)
Programmers have a superior ability to analyze problems and come up with solutions. They excel at analyzing preconditions, sequences of events, and outcomes. Certainly, this is a key skill in programming, but it is also useful in troubleshooting and business case analysis.(…)
While people typically think of programmers as coders, whose main talent lies in writing the arcane syntax of programming languages. I think that their main talent lies in their ability to analyze, troubleshoot, and solve problems. Code is just the physical manifestation that culminates the thought process of the programmer.(…)
I see two major consequences of this. First, the supply of programmers is constrained because the work requires a fair bit of aptitude that cannot be replaced by training. Second, programmers have a lot of professional options due to these skills, which further hurts supply. I think the economics is in our favor and we’re still lucky to be programmers, though we must be careful during the recession. What do you say? How does it look out there?
Update: you guys have brought up a number of points about the ‘methodology’ behind the Dice.com job numbers. For example, there are seasonal effects on hiring, so it would have been better to compare the two same months. Also, there may be a drop in the usage of Dice.com itself, rather than a drop in the number of available jobs. Besides, many good companies and applicants have turned away from Dice because of poor results for both sides. That is all true. I look at the Dice.com figures as a rough metric. But as a large tech jobs site I think Dice reflects the market at large, albeit imperfectly. A drop of 40% is significant enough that I find it likely it’s a real phenomenon.
Comments
26 Responses to “Programming and the Recession”
Leave a Reply
Teach a man to program, and he’ll have a job for life.
Looks good, Are these the number of new positions or the number of openings? Both?
Is there any metric for the number of actual jobs? I work on a fairly small team, and we are full, so we dont have any job openings… We did in April, but we don’t now. That doesnt mean 40% of the team has been layed off.
@Robert: that’s basically it.
@Tristan: These are just open positions at Dice. You’re 100% right that it doesn’t reflect layoffs, just less open jobs.
The best numbers for layoffs are the payroll numbers that people fret about (X claims of unemployment insurance), but they aren’t broken down by profession as far as I know.
The BLS has data on the ‘total’ number of jobs for different professions.
Interesting write up.
It might be more useful to compare to last January instead of April, as that would be a more accurate comparison. For instance in April there are many college students about to graduate so I would imagine a lot of companies would be posting more job offers around that time. Though then again January is the start of a new year, so many companies may be in a better position budget-wise to hire.
I’d caution anyone from reading too much into Dice.com numbers. My consulting firm, which is still hiring even now, stopped using Dice & Monster in 2008. We found that we spent a lot of time weeding out good software engineers from bad ones, and rarely found a compatible hire from these sources. The best hires we made were almost exclusively via referals, so these days we focus on drumming up employee referals the old fashioned way, as well as utilizing social networking tools like LinkedIn to find the right people. I’m sure we weren’t the only firm to make the jump out of the Monster & Dice world.
@Nick Brown: agreed, comparing the same two months would have been better. Seasonal effects come into play here. But still, 40% is a pretty big dip, so I think we have a real drop.
@Chodeo: agreed again, I am no Dice fan myself. But I do think the number of jobs there at least moves together with the overall job market, and with such a huge drop I’m pretty sure it’s a real effect.
I’d caution against blogging ever again. The lack of methodology and data here indicates that the blogger just wanted to sound important rather than try to intelligently deal with the issue.
@9: get used to disappointment
Gustavo,
Dont they need c programmers any more:(
@Deepak: oh they do, plenty of good C gigs out there. It’s just hard to search cleanly for C since C++ and C# get in the way.
Gustavo,
I agree with your inclusion of C++ but not C#. I want to know how about this part of software - drivers and firmware development is set to thrive in this recession.
I think Scott Westfall made a mistake here: “cases the where same ability” (-:
It will be difficult to get unbiased information from the readers of your site, because we are people for whom logical thinking and problem analysis are “standard features”. For example, when I go shopping - do I stop thinking logically because it is a non-computer related problem? No, no matter what I choose: vegetables, the colour of the curtains or the type of a variable, I’m seeing it as an engineering challenge and an optimization problem.
It is the same for other types of people (it is hard to imagine that they randomly select a product or choose the first one they saw), but they are far more concerned with the result than with the way they obtained it.
This applies to engineers in general; electricians, plumbers, etc. A fresh example is a recent problem I had, actually two recent problems: one of them with the lights in a room - 3 bulbs, 2 switches; 1 switch should turn on one bulb, the other - the other 2 bulbs. But in practice the switches worked differently, when I turn the second switch it overrides the effect of the first one, turning off the bulbs that correspond to it.
I quickly pictured it as “XOR is used somewhere instead of OR”, then represented the circuit as a logical diagram using 1 and 0 as “power” and “ground”, then continued tinkering with it. At the same time, my dad (who is not a programmer, nor officially an electrician :-), examined the physical circuit itself. Then we discussed the problem using my chart, which he had no problem understanding, then he showed me his chart - which was basically the same but he used a different notation.
The other problem was with water pipes with cold and hot water from several sources and several taps controlling the flow; it was solved using the same approach.
So I can say that I respectfully disagree with Scott Westfall, the skills he refers to are standard features for non-programmers too. Among the numerous folks for whom logic is a primary instrument, programmers happen to be the lucky ones still in “demand”. I won’t be surprised if this boils down to plain luck - we just happened to choose the right field at the right time.
I offer customised software and web solutaions.
To be honest, it has been “business as usual” for me. I have cut down on costs “just to be sure” but if I can offer any ideas as to what has been successful for us in these uncertain times it is:
1. Stay on top of your game and NEVER let up on delivering a GOOD product.
2. Promote, Promote, promote.
Companies should not simply “give up” during a recession.
They should think of effective promotion - but not slow down promotion. Advertising on the internet is one option.
There are a lot of sources of information on how to go about it for first-time internet advertisers.
“Besides, many good companies have turned away from Dice because of the bad quality of job applicants. ”
More likely many good applicants have turned away from Dice because of the number of low quality companies and Recruiters and HR that represent them.
@Alex: cool example, the lights one.
I do think this extends to other engineering disciplines, and then to some other fields. When it comes to trades, then it’s hit and miss. I’ve met electricians and plumbers who I’m sure could have been programmers (in fact, a plumber I knew had a brother working for Yahoo as a dev). But as an _average_ I don’t think the trades are on par with engineering because there are too many people who do _not_ have this analytical mindset at all.
About the timing thing, being lucky with the timing, yes, for sure. I think of it as the ‘demand’ side: we’re lucky demand is so good. But I also think from now on, this demand will keep growing, barring a complete catastrophe.
In general, as society gets more complex and computers take over, analytical ability becomes more and more valuable a resource, and there’s no way to ‘produce’ it. We see some of this effect on the starting salaries for the different professions. Oh well, we’ll see how it goes
My basic point is “don’t sweat it, programming should be fine for a while as a profession.”
@black cat: yes, there’s definitely that too. I’ll update the update.
With a loss of almost 40% for every language, I think that people who are just playing “programmer” will find that they are losing their places in the workforce to people who know what they are doing - and love it. This should help programmers take more time to learn in order to stay on top.
[...] Ak sa chcete naučiť nový programovací jazyk alebo zdokonaliť sa v niektorom odporúčal by som ruby, python alebo javu. Ak ste programátor pozrite si tentozaujímavý graf. [...]
Gustavo, on a personal level, which language do you between JAVA , C++ and C#?
@Sukhbir: good question. Here’s my take on it:
I enjoy low-level programming, so I like C a lot. With that said, I think almost EVERY programming task should be done in a programming language with automatic memory management. There are only a few places where C/C++ belong, IMHO. In those places, I normally prefer C to C++ due to its simplicity and complete control over what’s happening. In general, I think if you don’t need the extreme control of C, then you can afford to go higher level than C++.
Nowadays I much, much prefer C# to Java. While they used to be very similar in the first couple versions of C#, starting with C# 3.0 the language has changed a lot. It has borrowed heavily from functional languages and became a joy to program in. I think they did a brilliant job on it, they’re riding a sweet spot in the tradeoffs between static/dynamic typing and functional/imperative. I’m a fan.
I enjoy scripting languages too, like Ruby and JavaScript. I’m a huge JS fan. Being a math head, I like stuff that tastes functional in general.
hope this helps
@Gustavo:
Thank you for your detailed reply. Your explanation on how the kernel manages the memory summarized my entire chapter of Tanenbaum’s Operating Systems in one beautifully explained blog post.
I am good with C++. However, since most of the projects these days are .NET based, I was wondering whether I need to change my strategy, which I don’t want to. I think C# makes your aspects limited, (in the open source arena and otherwise). C++ is universal in the way that it can be used anywhere. (Not taking Mono/C# into consideration)
So what would be your recommendation? Do I have a future coding in C++? Or do I need to make the transition to C#?
And BTW, thank you for your blog posts. I have forwarded the link to many of my classmates and they simply loved them.
And another thing, please suggest something based on the fact that my dream is to work for Google.
@Sukhbir: that’s a great point about C#, it really does limit you since it’s MS-only pretty much. It’s true there’s Mono, but it’s quite a bastard project when you look at it: most people working in an open source stack don’t want to even touch Mono, it’s always lagging behind the MS .NET framework, and so on.
I was thinking only languages, without taking into account these various other aspects. Now that you mention you want to work for Google and you bring these other issues, here’s what I think:
1. You mention Google. Last I heard Google has 4 primary languages they use in house: C++, Java, Python, and JavaScript. So you’re good with C++ there :). Python is a great language, do you know it? You need some high level stuff too, so maybe that’s a good one to learn.
2. Even though I MUCH prefer C# to Java as a language, you’re absolutely right that Java has a huge plus when it comes to platform availability.
3. The proportion of interesting C/C++ projects relative to the total # of projects in C/C++ is MUCH higher than interesting C#/Java projects relative to the total # of projects in C#/Java. Most C#/Java projects are soul-crushing IT department jobs you must AVOID LIKE THE PLAGUE.
I can’t overemphasize how horrible your average IT department project really is. Stay clear, and live below your means so you don’t have to take crap projects to pay your bills.
4. If you enjoy C/C++, there’s definitely work for you out there. You need to do what you like, seriously, do what you have a passion for. Sounds cliche and all, but it’s true. You’ll be better at it, you’ll end up making more $. Find an intersection of something you like, are good at, and has reasonable prospects of $.
Keep your mind open to C though, since there are so many good open source projects based in C.
Also be careful with C/C++ because having to worry about memory and pointers and such slows you enormously. You _must_ know a good higher level language. Maybe python since you’re interested in Google? I have a very harsh view on C/C++ for most things outside the kernel and systems software. I think MOST usage of C/C++ is a bad idea (ie, they should use a language with automatic memory mgt).
You didn’t mention your interests. Are you into OS development? Compilers? Security? Or are you up for any project as long as it’s interesting? I’d say define your goals and then figure out the languages. Also remember that picking up languages is pretty easy, it’s much harder to migrate platforms (ie, Windows to Linux or the other way around). I’d play with Lisp and other functional languages as well.
Finally, you mention having the dream of working for Google. I’ll just play Devil’s advocate here:
Don’t tie your dreams to a corporation. Seriously, as nice as Google may sound, in the end it’s another faceless organization legally obligated to maximize profit. Might be a cool place to work at, but don’t tie your dreams to such an entity. You might end up in a project that’s failing, or with a manager who doesn’t work well with you, or in a number of other corporate mishaps. It’s too much out of your control for a significant portion of your happiness to be placed upon it.
And at the end of the day, do you really want to sell ads?
There’s a big world out there, so much to discover in biology where they need lots of smart CS types.
Maybe concentrate on your personal development for dreams: to become an outstanding computer scientist, to start a business, to be financially independent, that type of thing :). Maybe a startup?
I think Google is a great place to work for, so I’m not trying to discourage you from it, just giving you a look at the other side.
In short: there’s definitely a future if you want to do low-level development, but I would not tie myself to one language.
Anyhow, sorry for the preachy tone, but since you’re in school and wondering about these things, well, there you have it. haha. And thanks for the feedback on the blog.
@Gustavo:
Thank you for such a clear and precise reply. Truly.
First of, Google. Yes I agree that I have in many ways limited myself to a single corporation only and I am not seeing the potential problems that I will face. I agree now. I was not looking at it from that angle. Thank you for the enlightenment. I will look at it from a more realistic way.
Judging from what you have read, I think it would be wise to stay with C++ only and another HL language such as Python. (Google loves Python ;)) And yes, I fully agree with you in regard to what you said about C#/ Java. Most of these projects have no scope for fun and as such are done with $$$ in mind (which is not bad), but I think programming is an art and if you don’t have fun doing it - there is no sense.
Anyways, thank you for all your help. You have helped me in my biggest dilemma! Please continue writing such articles.
And you are from Brazil? I wanted to visit Brazil BADLY after I saw the movie, Cidade de Deus. Ha ha!
And PS: It was not at all preachy. A sincere advice may look like preachy, but is worth a lot.!