More Students Prefer Interdisciplinary to CS
prostoalex writes "With increased offshore outsourcing and continuing simplification of such tasks as writing a trivial application, Computer Science degrees are not as attractive for college students anymore, NYT finds. Students prefer interdisciplinary majors, where the programming skills are combined with solid scientific backgrounds in biotech, chemistry or business." From the article: "For students like Ms. Burge, expanding their expertise beyond computer programming is crucial to future job security as advances in the Internet and low-cost computers make it easier to shift some technology jobs to nations with well-educated engineers and lower wages, like India and China."
I think that foreign workers are better trained for computer programming jobs is incorrect. Corporations aren't pushing for more H1B workers because they are better qualified than domestic workers. Corporations want a guy who will take what they give them or else they get sent home. How much technical education is really applicable to a real world programming job? Probably less than ten percent of what is taught in higher education.
I have worked with some great H1B workers. I also have worked with some terribly unqualified H1B workers. Just like domestic workers some are good at programming and some just can't do it. I would say some of the H1B workers do more resume padding because they are desperate to stay and I would probably do it too. One H1B worker, when applying, listed the company he was applying for as one of the companies he previously worked. I guess he didn't check the name on the cut and past job he was doing because he never worked for the company.
I am not afraid to compete against foreign workers. I think it will be great for technology in general. I just want to compete on an even playing field. Let the programmers immigrate as Americans. You never hear Microsoft ask the government to allow immigration for foreign workers. They don't want to pay them more and worry about a worker leaving for another job.
We are not alone in this. The problem is not so much that they are indian or chinese (although that does bring a whole host of issues of racism/reverse racism etc), but it is impossible to manage them remotely without spending so much effort on it that you might as well bring them over on an H1-B.
Combine that with the fact that it is impossible for a US corporation to enforce intellectual property rights in China and to a lesser degree India, and its hardly susprising that US corporations are favouring English speaking developers once again.
Comment removed based on user account deletion
Computer Science degrees are not as attractive for college students anymore
College students have surprisingly decided they prefer drunken parties and naked women more...especially if the two are combined.
CS isn't computer programming. CS is computer science.
It's Computer Science. If you want to fix equipment, take Electrical Engineering or maybe a technical school can help you.
Quite frankly, I don't care to dick arround with broken gear. That's why we have an administration group that handles all that ugly stuff.
I can concentrate on the interesting parts: designing systems and writing code.
Blar.
When will people understand that Computer Science is not related to programming as the article says. In fact, I know a couple of great CompSci graduates who couldn't write a complex program even if their lives depended on it.
"It's so not programming," Ms. Burge said. "If I had to sit down and code all day, I never would have continued. This is not traditional computer science."
She's talking about code-monkeys, or Software Engineering at most. Computer science is related to research, finding new and more efficient ways of doing different tasks (new algorithms, data structures), and understanding the underlying concepts behind a computer program (programming paradigms, logic) and tools that can be applied (verification, simulation).
People seem to think that higher educations is just about a career. It's not, it's about doing something you really like. Career qualifications can be picked up later (even at a night class).
Silly rabbit
There are mediocre tech people on both sides of the ocean. I've worked with great home grown American IT folks and mediocre home grown American IT folks. The same can be said for various Indian IT people I have had occasion to work with.
However I think Nicholas Carr's "Why IT doesn't matter" is more relevant in why someone should not choose to pursue a CS degree.
In a nutshell, IT has become a commodity input, much like eletricity. Yes, it is more expensive... but not as expensive as it once was. CS degrees are largely about programning and let me tell you, most of the places that have interesting programming problems can only employ a fraction of the CS students that graduate.
Companies whose business doesn't fall within technology employ about 90% of the IT people in the US. Frankly, a CS degree is overkill. In some ways, this type of job is more akin to positions of "skilled craftsman" of yesteryear. Yeah, I can use a set of tools to build you a piece of furniture, but don't bother we with figuring out what metals/alloys will go into making the tools themselves, that make the furniture.
As is the constant history of mankind, we build off each other. Nothing is constant.
-M
PS:
"If I have been able to see further, it is because I have stood on the shoulders of giants."
-Sir Isacc Newton
However I am more concernd (a reason that I am an ex-CS major too) that the university doesnt offer a single course in PERL, Python, Ruby, PHP, or any of the currently popular languages except Java, and some C as a side benefit from some classes. Don't give me BS about the basic concepts being all the preperation you need from any language.
Actually, this I subscribe to. Further, you can't cover all the languages in any depth that would be helpful. So you take a few languages that are widely used and have a good breadth of skills and you teach students the methods primarily, and how to learn a language secondary.
What I have a problem with is the single minded focus on mere software development concepts. With no head for how it interacts with the hardware, you get people creating buffer overflows without even realizing it. Teach a student how to learn and the basic concepts, then go over how a compiler works and how modern x86 machines process instructions.
They had compiler theory, but it wasn't a bachlor level course. I want that shit in the second year. Students need to know how their work affects the system.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
Maybe Edsger Dijkstra was right, and CS really is just a branch of mathematics, as he argues in his paper "The Cruelty of Really Teaching Computer Science." If that's the case, it's unsurprising that you don't necessarily learn how to use $version_control_system or $Windowing_API or whatever people expect in the working world as a CS undergrad.
I bailed because I knew I didn't want to pursue graduate studies (and, let's face it, I'm not a stellar mathematician.) I'm (like many others) now doing interdisciplinary study: CS + law/public policy. If nothing else, this country seems to need more lawyers, if not good developers.
Sigh.
Er, computer SCIENCE should not deal with hardware beyond a couple digital logic courses. It sounds like you were looking for an MIS degree, not CS.
University science courses are not meant to "prepare someone for the real world". Do I know how to do real chemistry research after taking sophomore organic chemistry? Not really. But I understand the concepts, which is far more important. Likewise, a computer science curriculum should deal with computer science, not too much software engineering and certainly not IT grunt work.
LOAD "SIG",8,1
One thing to keep in mind is about most Computer Science degrees is that they are not vocational programs. Rather, they are often geared toward understanding the mathematical and structural underpinnings of computational machines. Sure, you may learn C++, Java, assembly, whatever in the process of learning about data structures and algorithms, but those classes are not designed to teach you how to be a corporate IT developer.
If you are taking CS because you think you will get a high-paying job right after college, and not because you are passionate, or at least interested, in prgramming and CS theory, then I would say most CS programs are going to be a rather large waste of your time, energy, and money.
Becoming a plumber or electrician has way more potential these days. Work for someone for a while, then go out on your own. You can easily make $60,000 and I know some electricians who pull in over $100,000.
Those jobs (especially an electrician) are great because they're interesting, challenging and offer lots of diversity. You are also free to go out on your own without nearly the risk a techy would take trying to establish a tech company (or any other company).
As a bonus, trades will never be outsourced because their location is of primary importance.
The global economy is a great thing until you feel it locally.
My friend couldn't find any job with CIS (Computer Information Systems) degree, so became a plumber. Pulls above $50,000. Gets splashed with shit and fecies every once in a while, but if you ever resurrected a broken database or went to a corporate strategy meeting, feels about the same.
I would agree that 2 years toward a CS major wouldn't prepare you for much. However, if all your school was teaching was programming, those two years would have been better spent at a tech school toward an associate's degree that was actually in programming.
I have a bachelor's and a master's in CS and I can confidently say that my schools prepared me well. CS encompases more than simple programming. There is a lot of study in algorithm analysis, computer architecture, OSes and real software engineering (not as in popular culture where it is interchangable with "programming".)
There is also the issue of studying the hardware. I don't understand how any accredited program can hand out CS degrees without coursework in hardware. (in undergrad, my school taught the circuit analysis, interfacing, etc. out of the physics dept beccause we didn't have an engineering dept. - and every CS student was 2 credits short of a physics minor, math minor was automatic.)
If the program you were looking at was as you describe, I would speculate that they were probably not an accredited program.
DISCLAIMER: This post was not checked for speling and grammar- if you complain- you're a whiner
I'm one of the few. I've done proof of correctness systems, image analysis algorithms, operating system design, game physics algorithms, robotic control algorithms, and network congestion algorithms. I've been lucky enough to be able to do this without having to work in academia. I do have an MSCS from Stanford, which is a great credential, although the education wasn't really that good.
But in most areas of computing, the basic algorithms already exist. (Some of them keep being reinvented; watching the XML fans reinvent LISP is amusing.) Not that many employers really need algorithm development people. I have no idea where you'd go as a computer scientist today. All the old labs (DEC, HP, IBM, PARC) are dead or shadows of their former selves. It's almost down to Microsoft, Google, or academia.
Actually, I'd recommend getting a strong background in numerical analysis and statistics. It's useful to know number-crunching cold. Engineering, financial, database, search, and game work all need number-crunching. It's more useful than, say, combinatorics.
If you're really into theory, you might want to take a new look at proof of correctness. I headed a team to build a proof of correctness system in 1980-82, and it worked, but it was just too slow on a 1 MIPS VAX. 45-minute proof runs for 500 lines of code. Today, that would take one second. It's time to work in that area again. There's some good proof of correctness work going on the hardware area, but not much for software.
(Incidentally, if you think proof of correctness is impossible for undecidability reasons, you're wrong.)
In 20 years C++, Java, and .NET likely won't be cutting edge anymore (we hope now). So those skills don't work to well... you need to retrain anyway.
Yeah, and? A real programmer is not "A C++ Programmer" or "A Java Programmer". A real programmer can attain a level of proficiency equal to that of his/her perfered language in *any* language in a matter of months, if not far less. "Retraining" is just part of being a programer.
I started programming at my current job -- your standard LAMP operation -- six months ago. I'd never touch PHP, or any query language before in my life. My boss has been using both for at least 2 years, and our other developer claims 5 years of experience. In 6 months, I've become the go-to guy for both of them -- I can (and consistantly do) rewrite the inefficient parts of their code to execute exponentially faster, and make it much easier to read.
Real programming is a fundemental understanding of how to write algorithms efficiently, code clearly, picking the right tools for the job, and knowing how to use them correctly. You never have to "retrain" any of that.
This has always been true. However...
I finished a CS degree back in 1991 while working as a kernel developer (this is pre-Linux. I worked at a minisupercomputer manufacturer with a professional development team and the guys who designed the processor and other hardware). As a result when I finished college (after many years) I had a firm grounding in CS theory, a pretty solid knowledge of hardware and techniques, a lot of knowledge about 4.2 BSD internals and a lot of good knowledge about how to turn out software in a team environment.
After 14 years, what can I still use from 1991?
CS Theory - still the same baby. I don't pull it out often but when you need it, you've gotta know it.
How to work in a team/ship software
Basic computer design/electronics
The other stuff is just technology. It comes and it goes. Every piece of hardware that I knew well from 1991 is obsolete. I can still solder but surface mount is damned hard to do by hand. 4.3 BSD internals? Not super useful.
When I was in school I had similar complaints to yours. I hung in and finished my degree because I didn't want to spend the rest of my career explaining why I didn't have a degree. Now, I'm really glad I did. The longer you stay in the industry the more you will appreciate the theory side of things. It's really a whole different thing from learning technology and it has much longer term value.
I remember having a conversation with my father years ago about CS grads. He was a software engineer/programmer at a tech company in Cambridge, MA, and had gotten to the point in his career where he was responsible for lots of hiring decisions. Being in Cambridge, they basically had their pick of the Ph.Ds coming out of the CS program at MIT. Once I asked him what they did with newly-minted Ph.D.s in CS. He said, "Retrain them."
I was surprised by this, and so I asked him if he thought all those years of CS education were essentially useless. "Oh, no," he said. "They're worth their weight in gold. They'd spent years working through extremely abstruse problems, and they'd learned how to absorb massive amounts of information quickly. Basically, they knew how to learn anything. Those guys would know nothing about building actual, production-level software for delivery to a customer. But they'd learn that quickly, because the foundation was strong."
Now that I am a professor (of English, not CS), I find myself taking a similar view of university education. It's not the content, per se (though certainly, the content is important), but the habit of mind one acquires by being confronted with difficult problems and issues over and over. If you want to learn VB or SQL, buy a book. If you want to think differently--more deeply and with fewer jerks of the knee--about the world, about engineering, about literature, about art, go to a university and let it change you.
Of course, I am one of those who did pursue an interdisciplinary degree of sorts (I use computers to study literature, and I teach software design in an English department). But that is another story . . .
This is a troll, but sigh, I'll bite.
Thinking that a CS degree is a "dead end" is the wrong takeaway. The answer is that it depends on what you want to do. Talented architects and computer scientists will always be in demand, as there are lots of interesting problems to solve, and true CS talent is scarce (and, amusingly, will only get scarcer over the next few years as enrollment in CS programs stays low.) The theory will still be much the same in 20 years, even if we're not programming using today's technology.
In addition, the assertion that "the days of a geek making it into upper management are over" is patently false. Google, Microsoft, Apple and Oracle are obvious counterexamples, and I'm sure everyone else can come up with more. If you want to have have a leadership in a company that produces new technology, you had better be a geek. On the other hand, if you're no more than a typical rank-and-file coder, things do not look good.
However, most pure CS students definitely lack communications skills, business sense, and an understanding of social graces and human behavior -- and these things aren't played up enough in most CS curricula. Your great ideas aren't worth much if your coworkers can't stand to be around you or are laughing to themselves when you're talking or presenting.
The good news is geeks can often pick up the business side (CEOs of aforementioned companies being good examples), but I've never met a pure business major who could truly pick up the important CS stuff like algorithms and systems analysis (your brain just stops being able to pick that stuff up after a while.) The pure management majors here at MIT learn to write great memos and know how to dress up for interviews, but that's about it (compared to the science majors) -- they can talk the business side, but are clueless about the underlying technology. (To be fair, most CS majors around here can't form complete English sentences or withstand direct sunlight.)
I'm glad I started out towards the geek side and stayed in CS, because picking up the business side isn't that intellectually hard --it's just different. And you'd be surprised how much your CS intuition applies to the business side as well -- a lot of my pure business buddies just don't understand logic, systems, or basic concepts of probability, for example, and consequently make stupid business decisions. Joel Spolsky has a good take on both sides of the issue.
Anyway. A CS degree is still very valuable, but only (or especially so) when paired with the ability to communicate and lead others.
-fren
"Where are we going, and why am I in this handbasket?"
So far, seems to be working. It's great to have one of your children call up too excited to speak clearly about some utterly awesome thing s/he's just learned.
Lacking <sarcasm> tags,
The problem isn't starting with Java.
It's *ending* with Java. I graduated with a degree in Computer Science. I learned Perl, C, C++, Java, and the tiniest bit of LISP (ugh!) while I was there.
However, it is entirely possible to graduate from my school with a degree in Computer Science knowing only one language. Java.
That's a problem, because there's way more to software engineering than just Java. And no, they didn't teach how the JVM actually worked. Just enough to get people to be able to compile their code.
Good CS programs don't crank out good little code monkeys, just like good undergrad chem programs don't produce lab techs.
In universities, you learn the concepts in class, and you learn how to apply it out of class, through internships, working with professors, tinkering with open-source projects on your own, etc. If you don't want to bother with the concepts, you can go to a trade school and learn all the trendy languages and "technologies", I'm sure.
LOAD "SIG",8,1
I find these comments of "they don't learn anything other than math" to be weird as well and I'm not in California (I'm in Ohio).
Yes, I had the standard calc, matrix theory, stats, algorithms, etc.
However, I also covered assembly (mine was on Motorola instead of x86), C/C++, some Scheme, operating systems, internetworking (from a former minion of Comer), databases, language and syntax creation, and quite a few other things including group software development for clients (from gathering requirements through completion).
Something tells me that these people are just looking for the worst examples or are pulling things out of their nether regions and don't know what they're talking about.
Everything I need to know I learned by killing smart people and eating their brains.
My Computer Science department (UCSD - this was in the late '80s) didn't offer ANY language courses . We were expected to learn assembler, Pascal, C, C++, LISP, and whatever else we needed for the courses we were taking as a part of taking the course. Most of our classes involved a lot of coding.
You will NOT pick up the theory side without a lot of work. Basic data structures, perhaps, but combinatorics takes some work. Language design, compiler design, etc. are non-trivial.
Pascal is mostly a dead language now. The assembler we learned (PDP-11) is dead. Out of Perl, Python, Ruby and PHP at least one will be a dead language in 15 years. Don't waste your time in college on learning languages. Instead, learn how to learn new languages and new things.
I've worked with quite a few of H1-Bs. As a rule, Russians kick ass when you need to come up with a solution or solve a design problem but execution needs supervision sometimes, because once the problem is solved they tend to quickly lose interest. Russians rarely get very far beyond technical "individual contributor" positions, because they're clueless at politics and despise brown-nosing.
Indians suck at design real bad (their philosophy seems to be to do just enough to get by) but can be pretty good at execution and truly shine at brown-nosing, especially if their boss is also Indian. However, I know a couple of Indian developers who rock so hard, it's not funny (and coincidentally don't give a shit about what their boss thinks about them). But they're exceptions that only reinforce the rule.
The Chinese are a mixed bag. I only know one Chinese guy who I would say is good (and I have a very high bar for "good"), the others I've met over the course of my career had great difficulties picking up the language and thinking independently. It looks as though they need to be told what to do, down to the smallest details.
Americans are a mixed bag also, there are quite a few folks who are good, but if an American sucks, he/she sucks real hard, because Americans are ridiculously difficult to fire for non-performance.
I can (and consistantly do) rewrite the inefficient parts of their code to execute exponentially faster, and make it much easier to read.
:)
Ahh, so you're the smart-a$$ know-it-all that keeps deleting the fix I put in 5 years ago to solve problem X with client Y that only occurs in situation Z, and replacing it with that wonderfully elegant piece of code you just read about in Fowlers latest book...which will remain in place until Booch releases a book contradicting it at which time you'll probably rewrite it again, blowing away the fix that I put in again after taking a 4am call from client Y wondering why their lastest release crashed with a bug that was apparently fixed years ago
Good programmers rewrite bad code because they know they can write it better...great programmer realise that the person that originally wrote it was probably just as smart as they were and the reason for all those "ugly" pieces are the real world saying hello.
One of my teachers at City College, who runs a consulting firm, told us Monday night he is moving his development side to India. He's keeping the support operation here, but the programming jobs are going to India.
He says his building landlord wants another rent increase, and his programmers want more money or they'll go work for Google.
Fine - he can get a building in India for 30% of what he's paying here - a bigger building - and he can get equally qualified programmers for $1200-1500/month there vrs $4k, $5K, $6K, $7K per month here. It's a no-brainer for him.
Meanwhile, a number of the more advanced IT classes at City College have been cancelled this semester - not enough students showed up to fill the minimum fifteen seats to justify the class. Even tonight's class, on Active Directory, barely got enough seats to meet the minimum.
Meanwhile, as I pass Hastings College of the Law on my way to City College, they seem to be full of students.
Face it, technology leadership will pass to Asia and Europe over the next decade or more, if it hasn't already. Like the US in "Snow Crash", we're only good at movies, music and delivering pizza in thirty minutes or less.
And music-wise, we're not that good either, since the Corrs new album won't be released in the US until at least next spring. Atlantic Records has gone into the toilet, apparently, with Jason Flom ushered out, who discovered the Corrs among many others.
If the Corrs can't be hits in the US with three hot babes and five hot guys because they're Irish and occasionally play an Irish trad instrumental between the pop rock (which they play on their own instruments and write the songs themselves) (especially given the number of Irish in this country), somebody explain this bimbo Shakira to me. She's from God knows where in South America, shakes a mean ass, and otherwise is indistinguishable from every other rock bimbo out there.
Meanwhile, as far as I can tell from the daily press, there are only three "musicians" in the entire United States: Britney, Christina, and Jessica. Maybe Mariah, makes it four. And I use the term "musician" or "singer" loosely.
Oh, and the octagenarian Stones - whose leader, Mick Jagger, once said the Corrs blew them off their own stage when they opened for the Stones.
Meanwhile, the only jobs left for techies is cleaning spyware off fucked up PCs for clueless Windows users.
Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
It's computer science, not a programming course. Software engineering is but a tiny part of computer science, so it's no surprise that the coverage is limited.
I believe posters are recognized by their sig. So I made one.
I agree that he's extrapolating excessively.
On the other hand, I'd say that given many common social/economic/technological factors, that there probably *are* a number of general statements that can be made that apply to a majority of each population.
For example, I, as probably most other folk, doubt that there is anything inherently genetically flawed in black people. I don't think that a black guy can't become a really good engineer, nor do I think that there's anything in the genes that's going to really stand in the way.
Yet if you sit down and read through your US census, you'll discover that, sure enough, blacks are well behind whites and Asians in getting advanced technical jobs.
So why is this? We assume, for the sake of discussion, that it's not genes. So it must be something from society. Perhaps the generally lower economic status of blacks stemming from their commonly slave status in the US a hundred and fifty years ago has something to do with it. Perhaps it's simply social phenomena that affect people along racial lines (I can identify with character X in the mass media because he appears like me.) Who knows? All I can say is that there certainly is a difference.
There is a *far* larger difference in the society that a Chinese student will grow up in versus an American student than there is between a black American student and a white American student. In addition, an H1B or immigration status itself acts as a filter. If you view working in America (or learning English and doing business with people overseas) as being an arduous but career-building step, there is a natural filter to bring in people with drive and ambition -- maybe that means more brown-nosers, maybe that means more enthusiastic people. It's certainly not unreasonable to do breakdowns based on country of origin (and hence society). It may not be feasible to do it based on such a small population size, but I don't think that the very practice can be condemned. In addition, most people on here seem to have had similar observations.
I haven't worked with Chinese H1B folks, but I have with H1B and outsourced Indians, and I agree that my general perception has been similar to what the other posters have said -- exceptional drive and a lack of complaining, but often sub-par technical ability, and a willingness to misrepresent facts. Doesn't mean that this is true of all Indians, but may well be true of a very ambitious group that rapidly started conducting business in a new country to build careers. [shrug] I've found the same snappiness mentioned by others here in the Russian immigrants that I've worked with, but also the same strong technical ability. The Indians tend to work closely in teams, the Russians lone wolf (as in, they are on a team, but they rarely seek advice or ask questions of others). Could be coincidence, I don't know. But it does line up with the other things said here.
As for the comment about Indians interacting differently among each other, I hardly think that this is a stretch. If you know your native tongue better than a foreign one, you may well interact more and act differently when talking with people with whom you can converse in the same tongue.
Any program relying on (nontrivial) preemptive multithreading will be buggy.