The Continuing American Decline in CS
abb_road writes "America's recent dismal showing in the ACM Programming finals may be more than just a bad year; a BusinessWeek article suggests that the loss is indicative of the US's continuing decline in producing computer scientists. Despite the Labor Dept's forecast of a 40% increase in 'computer/math scientist' jobs, planned CS enrollments have plummeted from 3.7% in 2000 to just 1.1% last year. Other countries, particularly China, India and Eastern Europe, are working hard to pick up the slack, with potentially serious long-term effects for the US economy. From the article: 'If our talent base weakens, our lead in technology, business, and economics will fade faster than any of us can imagine.'"
More demand for me! I'm raising my rates!
Never go to sea with two chronometers; take one or three.
Counterstrike is old.
I graduated in 2000 when life was sweet for Computer Science majors. When the bubble burst, there was a false impression that computer related fields were doomed. I always found that amusing because our whole society is based on technology and will always need people to run it. Media reports and articles on websites like this didn't help either. They gave the impression that Computer Science wasgoing the way of the dinosaur when it truly was healthy.
http://religiousfreaks.com/This is just more of the H1B lobbying to raise the cap on IT staff which is wanted to keep the price of IT staff depressed.
If you look in USA, everywhere but the Valley has an oversupply of IT people, my own employer just recruited a load of experienced staff in Portland, many excellent programmers too.
ACM contest is fun but that doesn't mean that the winners are the world's best CS people. Nope.
I majored in computer science, but I don't feel comfortable entering it as a career field. I spent five years in the military, so I am not as cutting edge as I should be, not to mention a complete lack of experience despite being 27 years old. I buy books and keep up with things well enough to be a good hobbiest, but it is rough being in the tech world post-boom. I will go to law school, and hopefully provide a much needed technical viewpoint to the legal system that is currently strangling technological innovation in this country. I think some of the first things that law makers could do would be to reduce restrictions on people who want to study technology, such as the DMCA. As long as India and China can provide competent coders for less money, we will continue to lose jobs. That is part of globilization, and is no different than factory workers losing theirs in the last century. The key is to find the jobs that Americans can do for less opportunity costs, or that other countries can not do at all yet. Globilization is a good thing overall, as the standard of living will rise throughout the world, but it is very painful now, especially for people in the computer industry.
http://bgcommonsense.blogspot.com
*Of course, this is assuming that the U.S. has an actual shortage and the study isn't some ploy to get cheap code-monkey labor for Microsoft, Intel, et. al. I'll let my fellow slashdotters belabor that point.
It can't be both that the programming field is in danger because we're outsourcing all our programming work, leading to no jobs for programmers, AND be that we're in danger of not having enough new programmers.
1. People still smarting from the tech-bubble popping? Check.
2. New home machines much less accessible to proto-hackers than machines like the C64? Check.
3. Popular culture that denigrates "geeks" and "nerds" and makes it a social crime to get A's? Check.
And people are confused about a decline in the number of student engineers?
Clear, Dark Skies
As a long-time computer professional and contractor, when I went to grad school to get a masters in computer science, the tax law gave me no break whatsoever. I cannot deduct my tuition as a business expense. On the other hand, if I took some vendor-specific courses from Cisco or Microsoft, I could take a business deduction. How messed up is that?
It also seems that there are not very many Americans in my CS courses either, but there are many students from China and India. Does anyone have any comments on the fact that China and India sponsor education in their countries, whereas we in the US barely support it?
Let's see if we can figure this out. American kids aren't going into CS -- why? Perhaps because:
Did I leave anything out?
GetOuttaMySpace - The Anti-Social Network
As a graduating computer science student (and long time professional), I was interviewed on this topic by George Mason University's student newspaper. I also wrote a little piece of my own on the declining number of CS students:
I have two perspectives on this -- one, as a veteran software engineer, and two as a computer science student.
I chose computer science because it seemed to make sense, given my job as a software engineer. However, many years of interviewing and hiring have shown me that a computer science degree is not necessarily going to be of any use to a software engineer. The position "software engineer" could mean any number of things. At my company, it requires a wide domain knowledge of different applications, almost none of which are addressed in GMU's computer science program. The computer science program teaches programming at the most rudimentary level, and is not even remotely adequate for a job that requires programming. However, a computer science degree does introduce important concepts that are necessary for understanding the underlying principles of working with computers (even if it isn't presented that way), and also teaches logic and problem solving, which are fundamental to any technical job.
As far as students not choosing computer science, I think there are a number of reasons. At GMU (and my previous university) I used to hear all the time, "oh, there's too much math required for a degree in computer science, I'm switching to a degree in information technology or business information systems, because there's not as much math." Also, when the Internet "bubble" burst, I think a stigma developed, where people don't think they'll be able to find a job in the computer industry when they graduate, or that they won't be able to get the kind of pay that they would like, or have job security.
I think it's a sweeping generalization to say that the US is lacking computer science students. What the US is lacking is individuals who are sincerely interested in developing their technical skills and solving interesting problems for their own sake, rather than people who are trying to find the easiest way into a high paying position that they care very little about -- having worked with both, I'd choose a British Literature major who does programming on her own, just for fun, over a Computer Science major who hates computers, but just wants a high paying job.
--brian
I think this is a direct result of our colleges encouraging mediocrity and making it very difficult for advanced students to, well, "advance". Colleges are built around helping out the most mediocre students get a passing grade, and just letting the gifted students learn on their own. It is the same thing that happens in our high schools.
My girlfriend is just finishing her degree in Education, and it is horrible just how bad it has gotten. They have dozens of programs designed to helping out disadvantaged children and poor performing students, while the gifted students are left to their own devices. My boss is from Europe, and their schools (at least in Sweden in the 1980s) encourage their best and brightest. The gifted students are the ones that are going to make the biggest difference in the workplace, while the struggling students are simply going to fill up the jobs that dont take much skill.
If we want to keep up in a technologically advanced world, we have to start caring about our gifted students, not just helping the below average ones pass school.
--
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
As a student at a major university (the University of Michigan), I must say that our CS department is extremely lacking. Computer Science must be taken either in the form of Electrical Engineering and Computer Science (EECS) - where CS is combined with EE (lots of useless info) or through the School of Literature Science and Arts (LSA) where the CS program is more direct, but students are required to take the EECS classes. One of the biggest problems is the use of the most basic programming class as a 'weeder' class instead of an actual learning tool. The class is made excessively difficult to weed out students (even though the students may simply take more time that 2 weeks to get acclimated to programming). The problem might be with curricula.
I am not sure what some will think about this but I think one of the reasons that there are not as many CS degrees being given out is people are realizing they do not need a degree in CS to get a job in computers. As one poster already put, he did not even finish his degree because he did think it benefitted him, I will not argue that just point out that there are not many other "professions" that you do not need a degree in to get into the business.
I do not know how many people I've met in my 7 professional years that either a)said they did not have any degree at all or b)said they got a degree in some other program and many of them not even in a technical profession. I think this is the larger problem. Our industry is one of a few where they want highly talented individuals, but also want a break on price. Easies way to do this is let anyone in which drives cost down because it is not specialized. For those of us that are CS Majors think how much more we could demand if someone from outside of the degree program could not come in and take our job. Also think how much more weight might be given to us in project management as well. If someone knows that this person really knows what they are talking about because of his education and experience perhaps those ridiculous deadlines might be fewer and fewer.
Doctors? Lawyers? Try business majors. Someone smart enough to major in CS and willing to do the work might as well just get an MBA, and start out making 30-50 percent more than they would with the technical degree.
Add to that the fact that a CS degree does NOT imply a career in development, and development isn't what it used to be, and you have a bunch of people thinking hard about something completely different.
My little site.
I studied CS in college and got my BA. I got out school and was immediately bombarded with hundreds of requests for 3-6 month, low-paying contractual positions for programming/systems administration/etc. What wasn't being offshored was being outsourced at ridiculous levels. I took a look around and realized the only people with truly stable positions were IT management. I talked to others and they agreed. So I went back for my MBA. When I graduate I'm going to be looking to leave the programming/administration side entirely.
When you're faced with poor, unstable job prospects and declining salaries due to offshore competition, what do you EXPECT us to do? The smart ones are realizing management (unfortunately) is the way to go. The rest will wither and die, unfortunately.
Computer Science != Software Engineering. CS is more research oriented, basically an applied math degree. CIS, IS, Information Management and Software Engineering are more where your day-to-day programmers should be coming from. Unless they are lumping these areas under CS then the statistics may be meaningless. Are we looking for researchers or people who will apply the technology?
Stalin said "Quantity has a quality all its own", which may have been valid in an industrial economy. What is not apparent is whether it is valid in a service economy. I strongly suspect, and some of the numbers I have heard about the best programmers being 10x more productive than the average programmer reinforces this, is that it is not valid to use an industrial paradigm in a service industry. But I think most managers, political leaders, economists and average Joes just don't get this. Too often projects fail beacuse to save money the work is given to the lowest common denominator in programmers and managers. Whether in-house, out-sourced or off-shored. And make no doubt about it, software is a service industry.
Finally I say, good riddance. This is as good a way to filter out the riff-raff as any. Let those who love the field be the ones who enter it and stay in. They are the ones more likely to develop the tools needed for the next generation of development, both in terms of process paradigms as well as actual software tools.
putting the 'B' in LGBTQ+
Hear, hear!
I have also participated in the ACM programming contest (only got to regional competition, but it was fun). I had the unusual experience of having a programming-related job while I was still in college, and I can certainly confirm the parent's description of ACM programming contests being far from real-world earning-an-income coding. It's clear when you realize that an 8 to 5 desk job is much different than you remember from the contests in college, but it's really clear when you've already got a programming job and you go to an ACM programming contest.
The really successful coders are the ones that can learn new APIs and languages over a weekend. They're the ones who can communicate with non-technical people. They're the ones who can write a design for an application that will take a team of twelve developers a year to implement. The ACM programming contest compares to real-life CS work in the same way that a lumberjack competition proves a person's suitability for work in the logging industry. In both cases, the two sets of skills (contest vs. real life) overlap very little.
I pity the foo that isn't metasyntactic
Out of the small May, 2005 class of ~20 computer science students at a small state university in the midwest, I know two that are still working part time in unrelated fields, looking for work related to their degree. The only people I knew that were working immediately after graduation were the ~50% that were working before they started the degree program and three students that grabbed the only three internships in the area.
There are tons of listings for sysadmin and programming jobs in Indiana, Kentucky, Illinois, etc., but you almost never see any entry level positions. It took me six months to find something, and that was a fluke.
Are there any places (other than Cali) where recent graduates are quickly hired? I'm certainly not aware of any.
Disclaimer:: this is purely anecodotal and from one univeristy...
I was a computer science major for 3 years, but was always taking classes outside teh department "for fun". Half of my profs were non-native speakers which made difficult subjects even more difficult. For example, a friend of mine went an entire semester of assembly trying to figure out what the hell a regis was. The professor was simply referring to registers, but never bothered pronouncing the whole word.
In computer architecture, the book came with a cd full of power point review slides. Because the prof couldn't converse in English, she just read the slides offered by the CD. OK, great. But when you don't get what the book is talking about, the review slides/therefore class notes are in the direct language of the book, and the professor can't converse in English-- you are screwed.
My point isn't that CS profs have accents. My point is, Universities aren't hiring based on teaching skills and the students pay for it. I don't need fluent speakers, but I do need someone who can explain difficult concepts in understandable terms.
It's certainly never been "cool" to be a programmer, but for a while there it looked like that was the way to go to earn massive $$$. Dot Com crazyness was in full swing and many of the students who would normally get MBAs tried the CS route instead in the hopes of getting some of that fat venture capital and possibly ride the bubble.
Those days are over (for now) and those students have gone back to pre-law or MBA courses. Also, the fact of the matter is that in a CS cirriculum (like engineering), you're going to work twice as long as your English/History/MBA friends who are always out partying and never seem to study. You'll be taking the "hard" math courses while they're learning how to draw graphs incorrectly in Economics. They'll have plenty of time for shmoozing with girls while you work on two projects until late in the night. When you graduate, they may very well make more money than you (or they'll end up broke and living with their parents, depending on how good their network is by the time they get out of college).
On the other hand, you'll be creating something that will be useful to people. Those guys will often only manufacture bullshit for the rest of their life.
I read the internet for the articles.
You have the wrong perspective on the education. CS is applied logic and mathematics. Read this carefully changed copy of your post if you don't understand:
"Because the field is undefined. What is a mathematician? What do they do after they graduate?
I earn my paycheck doing accounting, in all that encompasses. I went to college for a year and half before I realized that the education I was getting wasn't going to prepare me for my chosen profession.
The schools get math majors ready to be theorists ( bad ones at that ). That's it. There is a huge gap between what the schools teach and what businesses need from their accounting personel.
I'm more valuable now than I would have been had I stuck around and graduated."
Now, you can't teach problem solving, but it's hoped after 4 years in school you have some idea of how to be useful. Learning technical trivia is easy; anyone can do it. It doesn't take a genius to change an oil any more than it takes a genius to administrate a small network. However, understanding the deeper concepts (CSMA/CD!) and other principles is very useful if you are a computer scientist.
The difference between a degree and a certificate from a trade school is exactly what you mentioned; people go to a trade school to learn how to do 1 job. People go to University to learn how to solve a superset of problems, which they can apply to any job they want from a particular perspective. I can attack problems of compiler theory, networks, operating systems, programming language theory, etc, because I'm well grounded in the theory behind these concepts, and have experience (both in class and with jobs and projects I've worked on around school).
In 20 years, the tools you use will have changed dozens of times. In 20 years, Dijkstra's algorithm for finding the shortest path on a network will likely be just as useful for link-state routing models as it is now. So your final sentence, "I'm more valuable now than I would have been had I stuck around and graduated." is probably wrong, because you didn't understand why the education was useful. Maybe you weren't cut out for it, or maybe you just wanted money now. That's ok. Just don't preach it like it's the gospel truth on Slashdot.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Damn, where do you live? Im thinking of moving my company to your town if people actually only expect to make $20k a year doing programming work. We pay between $30k-$40k for relatively inexperienced programmers, and that is in a small town of about 30,000 people where you can buy a big house for $200k. I worked for $21k for about a year while my friend and I were starting up the company, but that was only because of the growth potential of the company we started.
You can surely make alot more than $25k if you really looked. For gods sake just find some kind of niche software, program it yourself in your spare time, and start selling it online. That is what I did, and I do not think that I am a rare genius. I didnt even have much freetime, but you can make $25k working part time at a factory while you are doing it.
Only people with no motivation or no skill make $25k a year for any extended period of time. You claim you have the skill, so it must be a lacking in motivation.
--
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
I wish people would stop using statistics exclusively from 2000, whether they be CS enrollments like here or related stats. In 2000, we were at the height of the tech bubble. Lots of people and money went into tech that should not have. In the case of people, that meant (among lots of other things ... don't want to oversimplify) lots of CS majors who had no aptitude for CS. It's not a realistic number.
What I'd like to see are multi-year numbers that give us a better idea of the trend, both pre- and post-bubble. 2000 was an anomaly. 2000 was unsustainable. 2000 was when things went kablooey. We don't want to go there again in a hurry, so quit talking about it.
It seems that a lot of the comments here see a massive paradox in the (employer) stated lack of supply of CS practitioners, and the (employee/student) stated lack of demand.
Having been through the job search process a few times (and having read the recent academic articles on the subject), it seems the problem is this. Employers in North America are no longer willing to help develop software professionals. In other professions, we see employers taking an active interest in professional development from the entry level up.
Lawyers article for a year, and have a well understood progression from articling student to partner. Throughout the process, the contributions made are appropriate for their level of progression and an appreciated, relevant part of the practice's business. As a result, the legal field has a downstream supply of experienced lawyers, and even students and fresh grads can find work.
By contrast, the tech industry seems to expect experienced developers to appear out of thin air. Industry participation in internship programs is down. Postings for entry-level and early-mid level positions are practically non-existent. Yet demand for 10+ yrs experienced developers is high. Well, guess what? Experienced developers don't just pop into existence. The industry recognizes that much of the innovative work (that they need experienced developers for) isn't amenable to offshoring. They need to recognize that by offshoring the entry-level grunt work, they are starving their future demand for experienced developers (and ultimately rendering future innovation far more difficult).