Contrary to the situation in India where everybody is dying to be a computer engineer whether they like it or not, the situation in the US is quite opposite. Computer science has been plagued with major recruitment problems, many factual and other mythical. Almost all universities struggle with student recruitment in the IT field, a scenario that was as amusing to me as somebody actually wanting to be darker than they are :-) As I have crossed over to the side of academia, I realize the seriousness of this problem and the solutions being proposed to address it. My take on the whole thing is that it is a largely perceptual problem, and at least some solutions, according to me, seem to address it by creating other erroneous perceptions.
The first major hurdle in convincing someone to take up computer science as a career is its difficulty. Indeed, subjects like operating systems, algorithms, system programming and even flat-out application programming are not for the faint-hearted. My take on the issue is: that is precisely what makes them so special. The reward of mastering something that is inherently difficult is great! The question is, how does one convince others of this?
There have been great efforts at making computer science more "fun" in the classroom, almost all of which I support. There is teaching algorithms through games, programming through commodity applications like multimedia, programming using the iPhone or Droid both of which are immensely popular among consumers, etc. All of these examples represent the "coming out" of computer science, from a field based in mathematics to a field that is responsible for all the digital fun in this world. The fact is that even the biggest bully on the block who would ridicule nerds cannot go one day without some digital gizmo. So why not make the connection between using it and creating it? I wish we had some of this when I was in college.
But efforts to portray computer science as "easy" or commodity defeats the purpose. Are we really sending the correct message by saying there is something that is simultaneously lucrative and easy? College education should be as much about personal prestige as it is about getting a job. It is a great feeling to hold a college degree: why would it be if "anybody" could do it? A college degree is and should be the result of consistent hard work and about mastering skills that are worthy of the money that they will bring in.
One of the subjects that is simplified and diluted to make it "easy" is programming. Programming is like what mathematics is in school: everybody says its important, but it just appears too difficult. In every programming class that I have taught or been a part of, there have been people who struggle throughout the semester (and many more after it), and others who snap their fingers on their way to an A grade. Many introductory programming courses start by taking a "word processing" approach to programming: click here, drag that and you have a running program. It does make it look easy, and there may very well be some who are attracted towards computer science because of it. But it portrays the field incorrectly, as these students realize in more advanced courses. Instead of portraying programming as "so easy even a caveman can do it", why not portray it as "its difficult, but look what you can do once you know it"? I think an honest introduction of the subject would be that it is tough, but always enjoyable. My personal experience has been that programming simply fortifies that age-old truth: "no gains without pains". You want to act smart and make money: you have to work hard. Isn't that true of all lucrative professions?
Another myth about computer science is the seeming dullness of those who adopt it. Nerdy bespectacled people working in their dark cubicles and talking to nothing but their monitors, seemingly without a life in general. Now I know all the computer scientists of today will readily debunk that scenario, but that is what the rest of the world really thinks about us! I have a two-pronged defense against this myth.
First, the seemingly sedentary nature of this job is also its strength. We are one of the few types of engineers who can work very hard in the comfort of a chair and a controlled indoor environment! It is what makes this field perhaps the only one to offer "remote" jobs: people working for a company in a setting of their choice. This has become an increasingly popular option both for companies and for employees.
Secondly, "so what"? In this day and age, can you honestly find even one person who has daily access to a computer (but is not an IT professional) and who does not spend hours on drivel like facebook, twitter or other social networks? How is that life any more exciting or adventurous than spending the same amount of time and actually earning money for it!
So for all you skeptics: computer science makes a great career! Yes it is difficult, but that is what makes it worth every hour you will spend struggling with it and every penny you will spend mastering it!