You’ve heard it before: there’s a massive shortage of IT workers in the US (the stats are a few years old, but pick your number: 600,000, 578,711, or 425,000 excess jobs). Whether you’ve read the articles or experienced it first-hand, there is a noticeable lack of qualified programmers in the U.S. According to the US Department of Labor, 8 of the 10 fastest growing occupations between 2000 and 2010 will be computer related.
With programmers making up the single largest category of IT workers (around 21%), and somewhere around 60% of software developers having a bachelor’s degrees, a good way to increase the supply of domestic software developers would be to enroll more Computer Science (CS) students.
Are you with me so far? CS enrollment up = more programmers in four years. Easy enough.
But this is where it gets grim: the number of students listing Computer Science as their probable major while entering college has dropped 60% over the past 4 years (you can see this graphically on the first page of this document).
Can you blame them? In 2000/2001 there were layoffs, offshoring, and decreasing pay scales. The reality is that hundreds of thousands of qualified candidates are still needed, but the temporary downturn in 2000/2001 and the dramatic portrayal by the press has left some people wondering if there will be enough computer jobs in the U.S. in five years. Couple this with the image that programmers are geeks that do nothing but sit at a computer all day and the picture becomes clearer; incoming freshman who might have chosen CS have turned their eyes to other majors.
Why We Should Care
So what? As demand rises and supply dwindles our rates will increase, right? It only makes it better for those of us who do have experience in the field.
To a point, yes. However, companies will not sit idly by and watch their profits dwindle because they are unable to find qualified people. They will turn to other avenues, such as increasing H1-B limits and offshoring development (cue ominous music), that have the potential to damage domestic job prospects in the long run. I don’t believe H1-B visas and offshoring are the force that will unravel the very fabric of reality that some make them out to be. But the bottom line is if companies are unable to find domestic developers, companies will find a way to function with or without them, and functioning without them is not good for any of us.
Secondly, on a selfish note, how many of us would kill to work with ultra-qualified, talented developers instead of whoever we can find that has a pulse and once wrote an Excel macro for a junior high class project? While dropping CS enrollment likely indicates that people entering the field are truly interested in CS, it is going to come full circle; people will eventually get hired, with or without degrees and regardless of how qualified they are, because companies will be desperate. And then we’ll be stuck working with folks who can’t find their text editor with two hands and an issue of Dr. Dobb’s Journal.
Given that we’d like to figure a way out of this mess, a good first step would be to graduate more CS students, which means encouraging more people to enroll as CS students. Here are a few approaches that each of us, as software developers, can take that might encourage incoming college students to entertain the idea of enrolling in Computer Science.
Approach #1: Dispel the Myths
From a paper titled Why Students with an Apparent Aptitude for Computer Science Don’t Choose to Major in Computer Science (PDF):
“Most students who gave a description of Computer Science saw it as programming or advanced computer use and were rejecting it because they did not desire to sit in front of a computer all day. The educated student would learn that many aspects of Computer Science require significant people interaction. Along with those listed in the previous paragraph, computers are used for special effects in movies, to improve the quality of life for people with missing limbs, and for allowing communication for people with speech impediments …”
Tim Sherwood, a professor at UC Santa Barbara, talks from his experience:
“… the image of the computer scientist that most people have is one that sits in front of a monitor all day, never interacts with people, codes on some painfully uninteresting and unimportant problem all day (not that they even know what coding is), and are generally geeky, boring people. Clearly such jobs exist, but that is certainly not what gets me out of bed every morning.”
To this, he added:
“… [the] human side of the equation is not understood to people outside the field … they think we’re all Monty Python quoting, Star Trek loving, Cheetos eating, caffeine addicted, girlfriendless freaks … when in fact most CS people barely eat any Cheetos.”
Myths abound … let’s get cracking on sharing the good news about what we really do (a good example from Sherwood’s course description):
“Solving real world problems with computers requires more than just pounding out code as fast as you can type. Just like directors, composers, and architects, a computer scientist needs to know how the low-level parts work but finds an intellectual challenge in how these parts can be assembled together into useful and beautiful compositions. It just happens that in Computer Science our compositions are often solutions to previously unsolvable problems. No wonder CNN/Money Magazine gave Software Engineers an A for their ability to be creative in their jobs; inventions permeate all levels of Computer Science!
You could end up working on self-adapting wireless networks that span the globe, designing systems that recognize your gestures and moods, pushing the frontiers of science and health, building online communities that seamlessly connect millions of users, designing and programming games and entertainment, or constructing systems like Google Search that serve the needs of billions of people across the world in a fraction of a second …”
Pass it on.
Approach #2: Show the Steak, Not the Slaughterhouse
No one cares that you architected an event-based interaction model for controlling page-flow. Especially someone who’s trying to figure out which major to choose.
Software is responsible for MySpace, iTunes, YouTube, and SecondLife; this is what the youth need to hear about. The next time your nephew asks you what you do for a living, don’t say “I write software.” That is the fastest way to kill a conversation.
Instead, say what I started saying about 6 months ago: “I write the software that makes websites work. Have you used MySpace or YouTube? I didn’t build those, but that’s the kind of stuff I do. Someone else does the graphic design and then I write code that makes everything work.” That has elicited more “cools” and “awesomes” in a week than “I write software” received in seven years.
Telling friends and relatives that you “deployed a new Ruby on Rails site last week using a brilliant new database architecture” is like reading them a page from your epic, unpublished novel about the mating habits of flying mammals. But telling them “I launched a new site that helps people upload photos and chat with other photo enthusiasts” might get you a few more questions. Unless, of course, you actually wrote an ASP.NET invoicing system. In that case, lie.
In Motivating Programming: using storytelling to make computer programming attractive to more middle school girls (PDF), the author compares “a storytelling-based approach to programming with a more traditional approach to programming using the Alice system” (a system that lets people build 3-D interactive worlds). She hypothesizes that by teaching girls how to program using a storytelling medium, they will more likely enjoy it and have a higher opinion of Computer Science.
From the paper:
“There is some early evidence that an emphasis on interesting end-goals may help increase the enrollment of women in computer science courses: researchers at Georgia Tech have created an introductory programming course for non-CS majors that emphasizes the use of programming to manipulate digital media; the class is 2/3 female.”
Approach #3: Stress the Positives
Writing software allows me to work from home and live anywhere in the world that has internet access. It allows me to make quite a bit of money, and to look forward to getting up in the morning. Once someone believes that your career comes with a fantastic salary, mobility, non-stop fun, and awesome SWAG, they’ll be asking where they can sign up.
Approach #4: Make Programming Cool Again
If you look at the two peaks in the enrollment curve you’ll notice they happened around 1982 and 1999, at the height of the PC and internet booms.
In recorded history, it has never been cooler to be a techie than at those times. The allure of money and popularity was so great that everyone wanted to be “in,” and for many “in” meant being a programmer. As a result CS enrollment was sky high.
How can we make programming cool again? By building software that runs well, is easy to use, and that millions of people (or even just a few hundred) use on a daily basis. Making software the lifeblood of our companies and of our world is the surest way to ensure we have jobs well into the next boom.
If you liked this article you’ll also like my article Software Training Sucks: Why We Need to Roll it Back 1,000 Years.
[tags]computer science, jobs, programming[/tags]