The Continuing American Decline in CS 727
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.'"
Academic Majors (Score:4, Informative)
CS is NOT Programming.... (Score:2, Informative)
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).
Re:More H1B cap lobbying (Score:2, Informative)
In fact, had we *increased* the number of h1b's, we may have limitted the number of jobs being shipped offshore to places like India. In 2000 there was a shortage of good programmers - and a limit on h1bs, so the marketplace found a way. Although there are some exceptions, the vast majority of h1bs here stay here and become permanent residents and often American citizens, either way paying our taxes. A job that moves "offshore" has no such effect.
What causes the decline in enrollment is the hype associated with both of these effects - in large part they are small in comparison to the size of the IT marketplace. And if you are a programmer, be rest assured, good programmers are hard to find no matter what country you look in.
Re:ACM finals ... correlated with general CS edu. (Score:4, Informative)
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 [kentuckylumberjack.com] 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.
Re:job pressure (Score:3, Informative)
Find a small to midsized company, show them how you can help them apply technology to solve problems. The technolgy, being 'buzz word compliant' is secondary, it just takes a little retraining. And college is all about retraining yourself, right?
Also, if you were in the military you have at least a minimal security clearance. Even if you do not like it, you might want to look at a defense related company to start out. First jobs always suck. Just do it for a couple of years for the experience and then get out.
my $.02
Bad Profs (Score:3, Informative)
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.
NEEEEEERRRRRRDDDDSSS! (Score:5, Informative)
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.
Re:Preperation is preperation (Score:3, Informative)
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. =(
Re:Blah blah blah. (Score:2, Informative)
Re:Recruit Them (Score:3, Informative)
Re:Blah blah blah. (Score:2, Informative)
Re:Blah blah blah. (Score:3, Informative)
This is the most naive thing I've ever read I believe. For instance:
"Programming primarily consists of things like inventory, payroll, scheduling, POS devices, and things like that."
OK? This is all we need computer programming for. This is a tiny subset of programming and these types of jobs are best left to the amateurs (MIS).
"Sure there are some places for CS people where performance is pushing the envelope like CAD/CAM/games, but those are a small percentage of what is being programed on a daily basis."
I don't know, maybe high end Web development? These things are gett5ing pretty complex and the need to know about load balancing (our sites can get anywhere from 10 hits/min to peak at 1,000,000/min), database administration, database access (huge performance figure!), networks latency issues when contacting remote sources for content, etc and the general business logic in the software. Performance in critical in many of these things. There is a huge difference in a user having to wait 3 seconds and 6 seconds for a query. Missions of dollars in difference. This can be covered up with hardware, but any company that prefers to be successful will pay their knowledgeable employees to make it work with less. That's why I get paid. I replace machines.
Re:Good -- or not (Score:3, Informative)
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
Re:Good (Score:2, Informative)
I agree with this, but also, that in terms of programming, as languages get more powerful, many developers realize that after age 35, you become too expensive and they can hire someone right out of school to do many of the things you do. That's not to say that this applies literally and a season developer doesn't bring many skills to the table that many companies need. Rather, there aren't enough jobs for super-experienced people.
I have been in the field since the early 90's and as I look around the many offices I have been to, the overwhelming majority of 'computer people' are 30 and under. Granted some go into management, but that still doesn't bode well with engineering-types.
Engineering really sucks right now (Score:3, Informative)
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.
Time for software schools (Score:3, Informative)
To pick just one example, the Kalman Filter [wikipedia.org], 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 [abridgegame.org], 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 [abridgegame.org].
There's a problem here which was described by Paul Graham as "The Blub Paradox" (in Beating the Averages [paulgraham.com]). 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 [cmu.edu] already, and Northeastern has a College of Computer and Information Science [neu.edu], but most other institutions still treat CS and related disciplines as a "department".
Re:CS from the inside (Score:3, Informative)
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.
Re:NEEEEEERRRRRRDDDDSSS! (Score:2, Informative)
to the OP, LOL about the incorrect graphs in Econ, so true. I took Econ up to two senior level courses and they were all CAKE. I laugh thinking about how the other people had trouble with the math in those.
Re:Blah blah blah. (Score:1, Informative)
I also improve human vs. computer interations every day so that they take less time and/or reduce errors. I analyze the entire process (both human and computer combined) to determine the best course to pursue. I cover the middle ground between incomplete multi-million dollar vendor products often written by very well educated (but sometimes incompetent) CS grads who can't see the big picture to save themselves. Their MBA managers can see it even less clearly!
And I do this all on an AA degree in electronics (and a CS dropout from the early 90s)!
I don't routinely use any math above Algebra or Trig on a daily basis nor to any of my collegues. There is only so much that can be gotten from this math and sometimes the easiest method to maintain is the simplest. When performance has room to spare, the ability to maintain and extend the code is more important than a fancy trig or calculus formula or a few less lines of code.
Those payroll, inventory, POS, and the like are well more than the majority of the work out there in the programming realm. Only your apparent arrogant narrow minded view of computer world seems to see it differently.