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/Because the field is undefined. What is a computer scientist? What do they do after they graduate?
I earn my paycheck doing network admin, 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 CS majors ready to be programmers ( bad ones at that ). That's it. There is a huge gap between what the schools teach and what businesses need from their computer personel.
I'm more valuable now than I would have been had I stuck around and graduated.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
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
the problem? who's to blame?
graduate school admissions for computer science.
"oh you went to harvard and studied anthropology, sure, you're better than the kid who went to a small state school and studied computer science. okay we'll take you."
the current attitude of admissions for grad school is so bad that this is the actual truth. someone once tried to justify why harvard anthropology kid (straight out of undergrad) was better than midwest comp sci kid.
honestly, academia is behind this decline.
When I was applying to grad school in the midwest ... I was told by a pair of CS Department Chairs and my own undergrad advisor that I had a an excellent chance at getting in ... simply because there aren't many good young white american applicants anymore.
... I got in, and quickly became a prof favorite ... but there weren't many others around the department like me.
End of story
Money, but also the prospect that the job you've trained for will still be around for your whole career. I told my kids not to bother with computer science, because more and more of those jobs are being sent overseas. Sure, right now every outsourcing situation I've ever seen has been a total clusterfuck, but one of these days those $60 a month Asians are going to produce stuff as good as us $60 an hour North Americans, and then we're totally screwed. I just hope I'm dead by the time that happens.
The next Cmdr Taco duplicate will be ready soon, but subscribers can beat the rush and see it early!
*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
Look around, how many software packages are available to encourage, enable and are targetted to 8-12 year olds. NONE. There was a point where schools were attempting to teach that age group fundamental computing. Not script writing for games or website design. Basic computing. Heck schools aren't teaching the other stuff either. More n more of the materials to learn computer programming is being geared for and designed for college students and professionals. You have to inspire kids to want to do programming. I think the trend towards fewer programmers has less to do with competition from India but rather from the failure of the industry to develop tools and materials for the age of child that can best be inspired to dream of that career path. Waiting until college is a wee bit late. The age to inspire is the 8-12 year olds. That is when I learned to program. Things were simpler then but the core documentation was readily available and affordable. Not so anymore. The trend toward fewer CS majors began 10 years ago when materials suitable for the 8-12 year old began to disappear.
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
You can't really train abroad for a job as a doctor or a lawyer in the US. So a Computer Scientist it is for many people.
Yeah, I'd like to be paid more too, but why does an American deserve a better pay than an Indian or a Filippino?
FGovernment does not directly control the pay in a free market economy. What US can do is try to "spice up" the CS image. Make geeks cool. This is not easy too, because it does not directly control the media either, but ought to be simpler (and less invasive), than the labor market distortion.
That said, I think, the next "big wave" is in bio- and nano-tech. May as well let less developed countries work on office software.
In Soviet Washington the swamp drains you.
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.
Exactly!
I make $25k per year, and I have 34 years experience in the field including five of it teaching at GA Tech and also cowrite two textbooks used by several top level CS programs. I make more money per hour cutting grass on weekends. In 1989 I made over $200k that year, but all of the good jobs have just disappeared. We recently hired four new college graduates that start in a few weeks, and they're making between $18k and $22k per year. When a local plumber can make $40k year around here their first year, why go to school for 4 years for a (somewhat) difficult degree to make much less money? Or, they can go into an engineering field and pretty much be guaranteed to make at least $40k per year starting which is twice that locally for a CS grad.
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 is exactly that, Science.
You don't go to school for 4 years if you want to go be a code monkey, just like you wouldn't get a Ph.D. in Chemistry if you were going to enter pharmacutical sales. A Computer Science degree allows for study in the area of new algorithms, new computing paradigms (grid, neural net, et al.), and other RESEARCH oriented goals.
Computer Engineering on the other hand allows people to gain the skills needed to participate in industry, leading teams of developers and (hopefully) using methodologies taught in school.
Code monkeys go to ITT Tech for 2 years, get a cert in Java or something, and then go on to be programmers. The reason it's easy to outsource programming is because almost anyone can do it for cheap. I'm not trying to undermine the responsibility of programmers in any way, but when you can get a guy for $10,000 a year who has a full fledged degree, vs Joe Nobody from ITT Tech, you're going to do it and save the big salaries for the managers (not PHBs, but smaller scale tech managers with degrees in software engineering).
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+
It's kind of funny that Computer Science is on the decline, despite the fact that software engineer is considered the best job in America.
Badass Resumes
Maybe the reason people are not going into CS is because most companies in the US are farming off the stuff a comp sci major whos starting out in the field would do to these 2 dollar workers because its cheaper.
This is a common popular belief, but where are the numbers to back it up? As the article mentions, the Dept of Labor forecasts that growth in CS will be 40% between here and 2012 -- and those are domestic number, not worldwide. If you read the "Best Jobs" article in Money Magazine from last week, you'll see that their growth prediction is similar (46% over the next 10 years).
The fact is, these jobs are not all being shipped overseas. The rate of CS/CE job production domestically is far outstripping the rate of outsourcing of these jobs. Unless you have some facts to back up your claim?
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
...I am sure it will be said in this thread many times, but I bears saying for reinforcement, just incase some corporate type actually sees the thread.
Its damn simple why go into CS when most CS jobs are getting outsourced/offshored for cheaper rates. This is causing a Glut of talent in the market and cuasing the rates that a company will pay for CS talent to go down. It sucks as a job course in life.
If US companies cut the crap and word gets out that they are willing to pay for talented CS people at decent rates and the workers don't have to be concerned with having the job cut out from underthem, then the enrolements will go up.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
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.
Look no further than the book pubishing Industry. The way that mathematics is taught in America is a product of a system based upon publishing. The resultant fragmentation, complexity and discontinuity of the material for the sake of satisfying bureaucratic guidelines and upping page counts negatively affects outcomes. Mathematics is the largest and heaviest book in the backpack. Its rediculous.
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.
When you live in a society that advertises to kids that playing some sport is more important than learning or creating something new. It's even worse when some guy who runs around throwing a ball to another guy makes millions while your average computer person (who has spend around 100k going to school for 4 years) will maybe make it to middle class after 5 more years of working in their chosen profession. I'd have to say what pisses me off the most is that some white trash chick like Britney Spears can become one of the most popular with our kids simply because the RIAA uses her looks and sexuality to sell CD's. Hell, it's not even about the music anymore. Basically we tell our kids it's more important to be pretty or famous than to be smart and hard working.
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
ACM contest is fun but that doesn't mean that the winners are the world's best CS people.
:)
Certainly true, but then again, that could also be said about almost all other such and similar competitions. Nevertheless, trying to discredit those people by simply stating that "we didn't go there to compete, but to have fun" is just silly, to say the least. If you go to a competition without the wish to win, you shouldn't be there, do something more fun, or someting more productive. At the end, they were who won the competition, and whatever you say, after the race all it counts is who came out winning.
Prior to highschool (yes, before highschool) I also was at some local, even regional programming contests, and we had to solve quite good and challenging - now thinking back to them - problems in a few hours. Even when I knew that I won't be able to solve one in time, I tried to come up with some tricky solutions. It was fun, even if some other way of fun than your fun
All in all, these contests have nothing to do with real life problems or with real life work, or whatever. Still, quick problem solution and a special algorithmic and mathematical (and combined) way of thinking can be very useful in both (i.e. real life and these competitions). Neither winning nor loosing such competitions means much in the real world, still, it can be a measure. And this is for college students, which means those that can find their fun in such coding, they will have fun. The rest can find their fun time someplace else.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
The latter notion reminds me of the book Bait and Switch: (The Futile Pursuit of the American Dream) by Barbara Ehrenreich. In it, she fluffs up her resume and goes searching for work that pays a minimum of $50,000 with benefits. She attends workshops, seminars, coaching clinics, and other things to improve her likelihood of finding work. Months later, she fails to reach this goal and in turns calls the American Dream a pointless pursuit. I realized this is not true, but that she was just too damn picky. Nobody can realistically expect a job paying $50,000 annually without qualified skills and plenty of experience.
Is this a reality of American developers? Perhaps indicative of why fewer students graduate with CS because they are not as qualified as they could be if they graduated in other disciplines?
For he today that sheds his blood with me shall be my brother.
I look at the garbage that passes for entertainment and I can't help but think how stupid we've become. I look at how everything in our lives gravitate around the pursuit of pleasure and think how lazy we've become. People can't even be bothered to use their turn signals anymore - why should we expect them to want to understand anything technical? I look at how people vote ("Bush says he's a christian - that's all I need to know when I go to the polls") and I wonder why we go out of our way not to have to think. I watch the news and the top story is continually about how much we're paying for gas and say "Damn straight!" and then piss and moan about how much it costs to drive our SUV's to work.
If we can't be bothered to do difficult things then we deserve to lose the rewards that difficult things reap. Now watch as the "Move to France then!" rebuttals start pouring in - underscoring the whole point of my post.
"Yes. The opportunity for great pay, IS there. IF you have Security Clearance, Clarence."
Yep...one of the last vestiges of good pay jobs is the DoD contracting circuit. But, pretty much no one has a clearance to start with....you get a job with a contractor house, and they will get you a temp clearance while they real one is being investigated and put together for you. Once you have that, you are good to go. The companies re-up your clearance every few years and pay for it...the trick is, if you want to go indie or switch jobs...do it while the clearance is recently renewed...
It is a bit hard to get a foot in the door...but, then again, no one STARTS into the business with a security clearance...just be good enough for them to want you, and they'll get the paperwork done for you. After that...it is easy to jump from job to job...for GOOD money.
You do need to negotiate well tho...so many of these companies with the contracts are 'bastardizing it' and trying to hire you as an 'employee', rather as a contractor or contract employee....don't let them get you on salary...negotiate for % of the bill rate....but, that's getting off onto a whole new thread....
Light travels faster than sound. This is why some people appear bright until you hear them speak.........
Well, as a completely disinterested bystander in this imbroglio let me offer a few comments. The Duke team was not ill-prepared. The Duke team consists of first-rate people/students, not "second stringers". Lots of teams got crushed (and disproportionally US teams got crushed). If you look at the results you'll see teams from these "elite US institutions": MIT, Cal Tech, Princeton, CMU, Rice, ... Only MIT did well (top 12). Canadian teams have done well for many years and did so again (Waterloo, Alberta).
The teams from Harvard, Stanford, ... didn't make it to the finals. Why? As an earlier responder wrote: preparation and interest. I'd still go to these schools (and Duke) to hire people for Google, Microsoft, the next start-up, etc. But the students at these schools, and others, have many and wide-ranging interests. They're not completely dedicated to this contest and that's what is required to do well in addition to knowledge and ability.
The *only* thing I leared from preparing and winning the regionals was dynamic programming. But I actually learned that in class.
The problems are such that there are two skills involved in winning: 1) writing bug-free small programs and 2) understanding the wording of the problem. The first favors asian cultures which teach more by rote and are higher pressure and more exacting.
I don't think that the internationals are translated into the team's native language, but if so that would definitely be a huge bonus for them. English is very vague but also very expressive (or at least how they write the problems is). Chinese for example is not, for instance you don't say 'have you eaten yet?' you say 'eat, no eat?' and you are supposed to understand from context what that means. So, if translated, the problems would really have to explain exactly what was meant instead of being close enough.
I think the loss of Dr. Henry also had something to do with the showing this year. We'll all miss her, that knew her. =(
This is one reason I dropped from CS with only a year of school left. I graduate in the fall now with honors and dual BBAs in Finance and Economics. I will most likely pursue a MBA once I am finished. Most of my old friends from my Computer Science days poopoo my decision to go to a business major and can only talk about how much easier it is. I don't know about the other majors but at my university you have to have a very strong background in mathematics (specifically algebra/statistics/calculus) to make decent grades in the coursework. Heck, if you want an advanced degree in economics or finance most reputable programs require you take Calculus II and Linear Algebra before admittance. Some PhD programs also suggest a strong aquaintance with continuous time math.
Regardless, though, all the competition says is that the Chinese ACM team cares much more about it than the American team did, and worked harder for it. Good for them, I say, and it would be nice if the American team took it more seriously, but it says absolutely nothing about the general state of computer science programs in America.
That's like saying that because an American won an olympic medal in track and field that Americans are in better shape and run faster than the Chinese.
> CS enrollments have plummeted from 3.7% in 2000 to just 1.1% last year
That tells me nothing! 2000 was the height of the dot-com bubble. Give me the numbers for planned enrollments from 1990 to 2000. And then 2000 to now! I bet it went up with the boom, shot down with the bust, and has been rising since.
I find it rather amazing that there isn't already more of this. When it comes to immigration, it almost seems as though many people with real skills are lumped in with unskilled labor sneaking across the border (thus proving the U.S. commitment to the idea that "all men are created equal", I suppose). While there are some immigration programs for people of "exceptional merit and ability" and similar categories, the number of people who get in this way are a tiny fraction of the people who could truly benefit the U.S. economy.
If you're a smart, motivated person with high potential, but not already world-famous or rich, your options for entering the U.S. are limited to non-existent, practically speaking, other than getting in a line with waiting periods up to and exceeding 20 years.
One standard argument justifying this situation is the economic competition: an influx of smart workers would drive down wages for Americans. But this is a logical error, with roots in 19th century economic thinking, that drives so much immigration policy. The point, and it's worth devoting its own paragraph to, is:
Knowledge work is not a zero-sum game!
If someone's going to come up with a new invention, a new product, or a new business, where do you want those people to do that? Inside the U.S., where all the benefits of the new development accrue to the U.S. economy, or outside the U.S., where the U.S. risks ultimately becoming an importer of that thing, further increasing its trade deficit?
Up until now, the U.S. dominance in science and technology has allowed it to essentially ignore this point except in the most extreme cases, which is where that "exceptional merit and ability" immigration category comes in. But with increasing competition from highly-motivated, high-population developing nations, and major economic and technological assets being "globalized" to other countries, previous tactics won't be enough. To have any hope of retaining its competitiveness in the long term, the U.S. is going to want to start doing a better job of importing some of the cream of the crop from those competing nations.
But it seems that the combination of "democratic" egalitarianism and Republican protectionism is enough to completely block this line of thinking. The U.S. is going to have to wait until its economic ass is being kicked, but good, before it changes its policies. By then, it may be too late, and the U.S. role as world science and technology leader may finally be over.
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.
Lies, damned lies and statistics. Couple of random thoughts:
1. It is my observation that bright students in developing countries often gravitate to math/science fields at a higher rate than in the U.S. That isn't necessarily a good thing. While such countries may produce engineers and computer programmers at a high rate, they may produce doctors, research scientists, economists, etc. at a lower rate.
2. In China, India and Eastern Europe, my impression is that more bin-sorting goes on with regard to who can attend what university. In the U.S. you have bright, capable people spread out across more buckets. In India especially there is a well-defined pecking order among universities, with the very best students routed to the most presitigious school.
3. Having participated in the ACM contest at the regional level, the results aren't all based on raw talent. Extensive practice can give you a distinct advantage. It may be that the non-U.S. teams simply prepared better. Being poorly prepared for a contest doesn't mean the U.S. team members are generally incompetant.
4. If the ACM contest is more popular at non-U.S. universities, those countries may be better able to attract the top competitors from their respective talent pools. At the large state university I attended, tryouts were hardly advertised, and I knew many smart, talented people who just weren't interested in competing.
5. It may be a good thing that CS enrollment has dropped from 3.7% to 1.1%. When I was still in school, during the boom times, about 20-30% of my classmates probably shouldn't have been there. I shudder to think of the code they're producing right now.
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).
Legislating it is an atrocious idea. The reason the companies hire out elsewhere is because it is economically advantageous. The solution to this isn't to tell the companies "don't act according to reason when presented with data; act against reason." The solution is to correct the conditions that are causing it to be more beneficial to hire out elsewhere (if that is a desired end... I don't care, myself, for the reasons stated herein). Adding a disincentive appears to accomplish this, but it is mere cookery that covers over the disease.
This is basically the same thing as telling a civil engineer to build a bridge over a 2000' river. He'll build a 2000' bridge (well, probably 2500' for stability, but you get what I mean). But wait! We've gotten funding for a 4000' bridge... and because of existing laws, we need to "make it to specifications!" So we tell the engineer to build a 4000' bridge over a 2000' river instead of changing (or better yet, removing) the ridiculous law. A multitude of laws doesn't make abuses fewer, it just makes them more obscure.
Legislation is the enemy of discretion. Discretion is the son of civil freedom.
I'm sorry but the majority of U.S. are the laziest people in the world. There's a reason why all of our industries are getting trounced by other nations. 8 hour work days, 5 days a week and retirement at 65? (Yes, I know there are exceptions to that but that is the average worker) We're seriously overpayed for the amount of work we do. Our education system is going down the drain. Most countries that used to send students to us now have better schools anyways. Our auto-industry is being whalloped by Asian markets because they can produce something better for cheaper, even after import taxes. People also complain about Mexican immigrant workers but the fact is, they work 10 times harder for less money than most U.S. workers, and they do jobs that most U.S. would smirk at. Most U.S. workers are spoiled and it's going to catch up with us real soon. In fact, it's probably already here.
I assume that you aren't contracting as an employee of your own corporation. If so, you should be able to deduct education costs as a business expense, up to $5250 under an educational assistance plan. IRS publications 525 and 15B cover that.
I also wonder whether you could take it as a deduction on your personal taxes. Have you spoken with an accountant? Pub 15B under Working Condition Benefits discusses deducting education expenses if they would be deductible by the employee as a business expense, and mentions specifically a test of whether "[t]he education maintains or improves skills needed in the job."
Larry
This is slightly offtopic, but I'm hoping some people will catch this question and give me their advice. Please resist the temptation to mod it down.
I work full time as a software engineer (eg, I design and write software). I graduated with a degree in CS and Economics a year and a half ago from a well-ranked state school, but my GPA wasn't very good. Getting married, getting a job, and growing up a bit has changed me a lot, though, and I want to increase my education.
I'm thinking of trying to get a Masters of Software Engineering (MSwE) from UMUC. I don't have the time or financial situation to go back to regular UMD for a MS in CS full-time, much as I would like to, and I've heard anecdotes that the department doesn't like to waste time on part-time students. And, frankly, I don't really care for another two years of algorithms - that's not what I'm interested in as a professional (although, obviously, I try to keep on top of new developments).
Is this worth my time? I don't want to spend 3 years on this, and then find out that employers see it as a joke degree, and actually have it _devalue_ me. But I would like to go back and get some graduate education, even if the school is less than stellar.
Any advice would be greatly appreciated.
-Erwos
Plausible conjecture should not be misrepresented as proof positive.
I also went to the ACM world finals. We didn't do that great, but we did alright, and we had fun. My university was one of the best in the US in CS, but there was never even a chance of our winning ACM overall, and we never thought there was.
The reason is exactly what you describe: the groups that are winning the contest right now are putting in immense effort, going over literally thousands of ACM-style problems. They spend hours a day on it. They have entire libraries of pre-coded functions and solutions that they can plug into all kinds of problems whenever necessary.
Now, in contrast, at my Big Name CS School, most student energy goes into our classwork and other CS-related areas, and the ACM contest is a hobby. The team is generally chosen by sending out a mass email to the CS department saying "Anyone want to be on our ACM team?" The first year I did it, they had to send out the email repeatedly because they couldn't actually find 6 people (two teams) to send to the regional contest. Once you're on the team, every 2 or 3 weeks we would meet to go over some problems. The ACM problems are fun and interesting, and require problem-solving and basic knowledge of algorithms, but they are not "computer science," and all of us knew it. You put code in those problems that you would be ashamed to put into a production system, because you're on a time limit and it works.
Bottom line, the US's "poor performance" in this contest is not indicative of poor education any more than the US's "poor performance" in the chess world during the cold war. Russia thought it was very valuable to have the best chess players be Russian (proving that Russians were smarter, etc.), so they threw money at it, and had their promising players study intensely, at the expense of a conventional education, focusing entirely on becoming the best chess players. American chess players, for the most part, still went through a normal highschool and frequently college education, and while some were very devoted to the game, hardly any studied it with the state-sponsored fervor of the typical Russian prodigy. And so what? If the goal of your life is to be good at chess, then the Russian model is better, and if the goal of your life is to be good at the ACM programming competition then you should spend hours a day studying old ACM problems, but if you want a good general education (or even a good CS education) that is probably not the best use of your time in college.
I've worked in industry, and now I'm in theoretical CS, and neither area requires thinking similar to the ACM competition. Those problems are great, and doing well in the contest requires knowledge and talent, but to be the best takes a very specific kind of knowledge that is not nearly as useful in any other area of CS.
This article is FUD.
I am the man with no sig!
When the government counteracts the corrective force of the shortage, the government inevitably suppresses wages and salaries or prevents them from rising higher. This phenomenon is well explained in standard textbooks about economics.
The correct way to handle the shortage of high-tech labor is to prohibit the government from intervening in the labor market. Specifically, Washington should terminate the H-1B program. Washington should also terminate the the free flow of goods and services between the United States (which is a relatively free market) and (relatively) non-free markets like India and Mexico.
When the American government allows the free flow of goods and services (e.g., outsourcing) between India and the United States, the Indian government intervention that has destroyed the economy of India and that, hence, has produced millions of underemployed Indians damages the operation of the free market in the USA. Specifically, Indian workers in the non-free market of India now determines the pricing of labor in the American labor market.
Washington should promote and protect the operation of the American free market by allowing free trade between the United States and only other (relatively) free markets like Canada and Japan. The free market itself will correct any shortage of computer scientists by dramatically raising wages and improving working conditions, thus attracting more people to become computer scientists. Wages eventually will rise to a point at which the supply of computer scientists satiates the demand.
Similar comments apply to the market for unskilled labor. To resolve any labor shortage, the free market will automatically produce more unskilled labor by raising wages and improving working conditions -- if the government stops importing Mexican illegal aliens to eliminate labor shortages. When Washington floods the unskilled-labor market with illegal aliens, Washington inevitably damages the normal corrective force of a labor shortage and, hence, damages the operation of the free market.
I would solve this by making companies show that there are NO Americans at all who can do the job before getting an H1B. Also, I would love to see companies that are shipping jobs away boycotted.
Why do we have to ensure jobs for anyone who is even the most minimally qualified? If a company wants to bring in smart foreign workers, since they are smarter than the folks at home, then more power to them. By propping up poor CS students, we are doing the same thing the RIAA does that we hate so much: getting government legislation to keep around a failing business model/person.
I'm in my second year of a CS degree and I do support immigrants and having offices in other countries. I think Google does it the right way: hiring people in other countries for their remote offices, while at the same time, still hiring lots of Americans as well.
You may be marginalized in the short term, but in the long run, the globalization of knowledge jobs is a good thing.
Of the two best young computer scientists I know, one is running a hedge fund and the other is working for a derivatives firm in New York. The young Stanford students I talk to are going into finance, law or bio.
To pick just one example, the Kalman Filter, which is used for everything from radar tracking to helicopter stabilization, relies on linear algebra. And physics gives an excellent background in learning to apply mathematical modeling techniques to real-world phenomena. One of the best (or at least most interesting) distributed version control systems out there, Darcs, was written by a physicist, in the Haskell programming language (the latter of course being based on the lambda calculus, another seemingly esoteric subject which is so fundamental that it really ought to be taught in high school). Darcs is based on a physically-inspired theory of patches.
There's a problem here which was described by Paul Graham as "The Blub Paradox" (in Beating the Averages). Graham writes "But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up." It's not easy to correctly assess that which you do not (yet) understand.
I agree, this is a big part of the problem. This comes from the fact that everything about computers, and particularly software, is so relatively new. As alluded to elsewhere in the thread, you don't get HR people trying to hire mathematicians or even economists for accounting positions - they know better than that. They just don't know better than that, yet, when it comes to programming, particularly in "IT". And this confusion affects academic curricula, too - universities want to satisfy the commercial demand with subjects they already teach, and academic computer scientists don't want to turn themselves into a Java instructors any more than they absolutely have to.
I think that'd be a start. However, I also think we'll eventually find that the tentacles of software are so diverse that "software engineering" is too broad a subject, and we'll end up with a "software school" analog to "medical school" or "law school", where a wide variety of subjects are taught, including theory, engineering, and other topics. I notice CMU has a "School of Computer Science already, and Northeastern has a College of Computer and Information Science, but most other institutions still treat CS and related disciplines as a "department".
My guess is less enrollment in CS programs is due to understanding that the job you are going to get is most likely has little to do with science. Like maintaining the code, or even developing your own. Nothing glamorous about it. It is should be properly called 'IT' - information technology. Note that more and more universities have programs in CS and programs in IT. May be IT enrollment goes up? At least if you're enrolled in IT, you know exactly what you are getting it and what kind of job you can expect.
This is what has been pissing me off to no end... I'm at my best in terms of programming skill at 39yo, but companies expressly want college newbies they can exploit (read: harshly control and financially rape). Companies just don't want experience any more.
Why would anyone who is sane go into a career that's all but guaranteed to be cut off at age 35??
Steve Magruder, Metro Foodist
When I worked in tech support for a major OEM PC builder, one side of the mouth said, "Be sure to give the ultimate customer experience." But the other side of the mouth appended to that statement, "As long as it only takes 14.7 minutes average call time. Your ass is grass if it takes longer."
Friends don't let friends line-dance.
First off, the real issue here appears to be lack of CS and Math-related research-style positions.
A quick search of job boards will show you that nobody wants to hire entry-level computer programmers / network admins, so anyone quoting a lack of bodies is BSing you. We've discussed this issue on /. before now.
The author may think that he's hit on an issue, but his arguments seem specious and his research is very shallow.
From TA:
Specious #1: OK, first, if China AND India have ONLY 3x the # of grads, then the US is doing great! China AND India have 2.4 billion people, the US has 0.4 billion people. So the US has 2x as many engineering grads per capita. Why is this number cause for alarm?
Specious #2:What's more, this isn't really the issue anyways! Because your regular CS grads aren't doing "innovative, ground-breaking research", they're programming Database front-ends and administering networks. What you really want to know about are your Masters and PhD grads, but he fails to provide any relevant numbers for these.
My experience: I looked in to taking a Masters in 2004 at my Provincial University (~30k students). I wasn't eligible. I graduated with a 4-year Honours Co-op degree and a B to B+ average. It turns out that they were so flooded with students (mostly foreign) that the required average was now an A and they even closed the application period 3 months early. They were turning away some of their own grads.
So if we've run out of profs and we're turning away interested grads, does that still mean that we're behind? What's really the issue? I'd say it's money.
CS work is difficult. It requires years of study to be correctly proficient and continuous study thereafter. And to top it off, most IT workers are putting in massive overtime and are generally overworked (esp. the Network guys). So IT workers want to be well-paid; but nobody wants to pay for this work!
General programming work is quite expensive and the ROI is usually long if there is one (some software projects have no ROI, they just need to be done). Software itself is expensive to create and productivity of staff varies wildly b/c the learning curve can be very steep. Nobody wants inexperienced IT staff, so IT workers want to be well-paid.
To make this even more expensive, computer programmers in the US are bringing in Internationally exorbitant rates (one IBM programmer for $125/hour or a 25-man team from India?)
So at the end of the day, where do you put the CS PhDs? Where are they going to work? What are you going to pay them? Of course if companies won't afford CS Bachelors what is the industry for CS PhDs? How many CS PhDs do we really need? Wouldn't we rather have the best brains go into Med studies (seems we're always at a Doctor shortage here in Canada)?
(Please if you have answers, I'd like to hear them, these are not meant to be rhetorical questions)
Yep. I wouldn't have even considered transferring into the Engineering CS track.
I was actually targetting myself at the L&S CS program. IIRC, there were like seven requirements for declaration: 65B, calculus physics, natural sciences Diff. Eq/Linear Algebra, Calculus, Discrete Math, and Circuits. They strongly wanted you to have 5 of them completed by the time you transferred. Circuits weren't offered at Foothill (but rather De Anza, which is not too far away). I had calculus and natural sciences squared away. Diff. Eq. was proving pretty hard. I hadn't yet taken linear algebra, physics, or discrete math. On top of that, I had to complete my breadth requirements. Normally they don't want you to do this if you're a CS major, but one of the conditions of my guaranteed transfer agreement was that I complete breadth prior to entry.
The real kicker was the fact that my sixteen units of CS coursework wouldn't articulate and I'd have to take them over again. Apparently it was just a big political thing in Berkeley at the time: they wanted everything done from a very theoretical approach, they did everything in Scheme, and they were really difficult about giving other colleges course equivalency. Foothill's CS courses would've satisfied requirements at any other UC, but not UCB. None of the counselors brought this to my attention at the time, but then again, we all know that community college staff, counselors in particular, are utterly braindead.
The upshot of it was that if I worked my butt off and taken a full load the entire time with very little room for extracurriculars or working, I could've transferred only to have to take a year and a half of remedial coursework that I anticipated would be unnecessarily tedious to separate the Big Geeks from the Little Geeks. This would've meant, in the long run, staying on for an extra semester or two in Berkeley, and accumulating another year's worth of debt.
Anyway, I'm not really fishing for sympathy per se. Rather, despite my talents in the subject, the university made it unduly hard for me to get what I wanted, so I decided to major in English instead and program in my spare time. UCB set up red tape to discourage people from getting CS degrees, and it worked. Looking at the L&S site now, it seems like their requirements are less draconian. It's not regret I feel, really. I just feel like I was cheated.
Browsers! Hell, when I started we didn't even have binary. Binary is for hippies! Ones and zeroes holy bejeebers, we would have been glad for it. Try writing a whole compiler in unary. We had nothing but zeroes! And don't even talk to me about self documenting code.
And Jolt and Bawls, you little sissy men. We were lucky to have water. We would have to go down to the river and make our own durn water. We'd grab two hydrogen atoms and one oxygen atom, and smash them together. Took forever to make a pot of coffee. Starbuck's! Sipping your latte...