• Anthony Stevens

Why Are There So Few Computer Science Graduates?

Computing, Education

I’m reading a great series of articles (thanks be to the hyperlink!) that have rekindled my on-again, off-again interest in the problem of the precipitous decline in the number of computer science graduates – nationally and internationally.

Let’s sum up the key popular arguments:

  • CompSci isn’t hip enough for students.
  • Nobody needs a CS degree to do 90% of the professional work in the field.
  • Java is responsible, an argument put forth in considerable detail by (among others) Dr. Robert Dewar and Dr. Edmond Schonberg of ADACore.  Joel Spolsky put in his two cents a couple years ago as well.
  • K-12 education is giving our students an aversion to, or insufficient exposure to, computer science.
  • Worries about the job market are turning kids off.

That last one is obvious bullshit.  Every day you can go to Monster.com and look up thousands of programming jobs, at top salaries.  A job in software development is among the most portable, and highest paid, of any profession. And believe me, a key thing on the mind of almost every college kid is “how much can I make when I graduate?”

Regarding Java: Mark Guzdial, in a well written post on the subject, writes:

The curriculum did not change that dramatically from 1997 to 2002, but that’s when the enrollment changed so dramatically.

Hm.  Wasn’t that when Java adoption in CS programs really took off?  Remember when Java was the Next Great Thing, the Grand Unifier, the Language to End All Languages?  You couldn’t walk 10 feet in a Barnes and Noble without somebody’s Java book falling off the shelf and knocking you silly.

I was EXTREMELY fortunate to start my computer science education with Ada. I haven’t programmed in Ada in 15 years, but the lessons learned there have served me well in all subsequent parts of my career. Java? I’ve never liked Java. Java is a language for people who lack rigor in their thinking processes.

***********************

The thing that concerns me the most, however, is that the examples of truly innovative computer science programs are few and far between – at least they don’t get enough exposure. I see a lot of defensiveness among university educators about the issue, but no one seems to be grabbing the problem, Tom Peters style, and leading the charge. One might infer that (some) university CS programs are risk-averse; one might also suppose that the administrators of said programs are obtuse, obstinate, or supercilious.

What’s my personal opinion on the key factor that is leading to the decline of undergrad CS graduates? Twofold:

1) Programming qua programming is unsexy. Point #1 above. When your leading lights in the software world are this guy and this guy, you see my point.

How to fix this? Expand the curriculum. Include gaming, multimedia, cross-disciplinary majors, and track the sexy related topics like bioinformatics, clean energy, citizen journalism, etc.

2) Programming is fucking hard. Nobody likes hard. That’s why there are about 100 times as many communications majors as there are math majors.

How to fix this? At some essential level, you can’t. It’s a complex subject, and software is – as somebody points out every few minutes – the most complex thing ever created by humans. You don’t hear talk about “the singularity” for nothing.

However, there are steps that the universities can take.

  1. Make tutoring an essential part of any CS curriculum.
  2. Get the tool bullshit out of the way and don’t make students struggle unnecessarily with the ramp-up chores.
  3. Encourage or demand internships where students will get real-world, hands-on, ten-hours-a-day experience doing actual programming.
  4. Encourage and foster communication among the students, but don’t puss out and do “group projects” exclusively because to do otherwise would hurt student’s feelings.
  5. On the other hand, don’t choose arcane topics, languages, or tools on the theory that “if the witch sinks, she’s not a witch”.

Interested to hear your comments.

26 Comments

26 Comments

  1. roberte3  •  Sep 25, 2008 @8:50 pm

    I totally disagree on “Worries about the job market are turning kids off.”

    It is the case, it turns off a massive number of really bright kids. It comes down to the question, ‘how many 40+ year old programmers do you know?’ The answer is sadly not many.

    I have been in huge IT departments, as suddenly all of the 35 and older non managers suddenly disappear, and all of the replacements have exotic names. Then they disappear over the next few months and all of your development meetings happen late at night… And if you think that the young bright kids don’t hear about someones parent losing their job… your sadly mistaken.

    For that matter how many of the people do you meet at any technology meetup have a kid?

    This industry eats its seed corn, and its a job market for young single people. If you want any sort of long term and profitable career… you get your MBA and go to wallstreet. Oops….

  2. Adam  •  Sep 25, 2008 @10:13 pm

    I was the last class of my school’s program using C++, and it worked out that I had classes using each. Having taught C++ I prefer Java for illustrating CSCI fundamentals; I believe C++ is unnecessarily fastidious in a way that sometimes distracts from the algorithms the student is focused on. Python and Ruby lack the rigor required for teaching good practices, in my opinion.

    I’d posit 1997 was about the time it became feasible in the mainstream to have a career as a software developer without a CSCI degree. I’d also be interested to see statistics on MIS degree programs for the same period. I’m glad I stuck it out now, but if my school had offered a “CSCI Lite” like MIS I probably would have tapped out in Junior year.

    As an aside… would good old “2200 Data Structures and Algorithms” code be syntactically distinguishable using C# or Java? As a platform I agree Java is mess, but the two languages are awfully similar in writing style. ;)

    I think there are a few reasons you don’t see as many 40+ programmers in IT shops, but I don’t know any CSCI graduates at any age who want a programming job but are unable to get one.

  3. Brantley Harris  •  Sep 26, 2008 @10:32 am

    I think it’s something else: Entering a university back in ’98, a lot of the CompSci students were getting into it because it seemed like an easy way to get well paying jobs. Turns out it’s not easy for most, and that probably got around. So sure you’ll see less these days, but I bet you’ll see generally better students.

  4. Marina Martin  •  Sep 26, 2008 @3:43 pm

    I was almost a computer science major, but I’ve always been an entrepreneur and do-it-myselfer at heart and the mere idea of sitting in a class learning how to write an elseif statement bored me to tears. I already had a full-time career as a web designer (a decent one for HTML 2.0 times, but that changed when I realized I suck at graphics LOL) and had zero formal training in that, so I opted to self-teach.

    Anything done to make it “easier” to be a computer science major seems like it would just attract worse candidates. Intelligent, hard-working people don’t need their hands held – so I’d see that as diluting.

    Is it an actual problem that there are fewer computer scienc majors today, or is it just that the numbers have gone down? I’d say the overall increase in the number of people with college degrees is making a degree more worthless. I can honestly say I got zero value out of mine – not a single contact, or lesson learned, etc. Then again, I didn’t exactly exert any effort to get one.

  5. Cassie  •  Sep 26, 2008 @4:10 pm

    It’s a little scary to look at my alma mater and realize the CS department is completely dying, though I agree with Marina, it’s not necessarily bad that enrollment is down. IT folk are renowned for being self-taught.

    Interestingly, the EE department was having no problems getting kids on board and excited.

  6. Tero  •  Sep 26, 2008 @6:35 pm

    Being a self starter and self taught is very important, but it can not replace good education. Nor can formal education replace what is needed to be successful in this profession: being a self starter and self taught.

    There is no free ticket. Those books that promise to teach you programming in 10 days, should really be titled differently: How to teach you programming in 10 years. That’s just the reality of it all. The IT field can be one of the hardest disciplines there is.

    It is just that the schooling, educational programs, and the whole profession has gone though a severe inflation. The IT bubble in the 90′ies created it all, but the ideals and valuation of the profession has not recovered from those days, schools and education being one of the victims.

  7. Doc  •  Sep 26, 2008 @8:01 pm

    I can tell you, as a 40+ y/o computer programmer, it’s pretty sad working with recent graduates. I seem to spend about a half-hour a day explaining to one or another of the junior guys on my team either (a) making internal details of your classes public just so it’s easier to modify them from other classes is a Bad Thing, or (b) we put the data access code in one place, and just call it from everywhere else. We don’t pass Hibernate sessions to every method call “just in case we need to get something from the database”. Then they turn around and use “GOF say to prefer composition to inheritance” to justify creating new classes by copying old ones and changing a method or two. I mean, I was an English major who took a few CS courses (and read a LOT on the side), and some days I swear I’ve forgotten more CS than the guys fresh out of school. Big-O notation? Boolean logic? Invariant code motion? Hell, one of our BAs put out a spec for a macro language they wanted, and not only was I the only one to notice it had an imprecise grammar, but I strongly suspect I was the only one to know what that meant…

  8. florin  •  Sep 27, 2008 @12:44 am

    “Java is a language for people who lack rigor in their thinking processes.”

    Yep, thanks for the compliment.

    Your rigorous thinking process should take you out of your tiny box and into the larger context.

    If you paid attention around you, you’d learn that plumbing and electrical skills are dwindling as well. I bet you did not know that. It must be that these journeymen got hung up on too much java. It is a shift across many professions as a reflection of societal changes toward work. 1997-2000 were the heyday of programming – a glamorous, accessible and rewarding profession even for the mediocre. To generalize from the dotcom era is erroneous. To blame a language is even worse. I suppose you haven’t been around for long to have a better understanding.

    The easiest answer to your question is that the cost to benefit ratio is overridden by passion alone. Programming is not a job. For various reasons students may not find programming a way of life. They look beyond a paying job. But other factors mentioned contribute to the unfavorable perception toward programming: long hours for the same pay, in the office or not; job insecurity after 40; globalization that leads to outsourcing, etc.

    It is my opinion that this has very little to do with the way CS is taught in school. This again shows how ignorant you are – it would not surprise me to learn that you received your education in a public school. For generations in this country and presently in most countries, young men and women learn their material in an austere environment. It appears that the more money and methodology you throw at American schools the dumber the students become. Go figure.

    Get used to it and feel good about it as your turf is getting smaller yet your pay better. And stop bashing Java.

  9. Brian Silberbauer  •  Sep 27, 2008 @3:16 am

    A lot of things happened around 1997 to 2002, one was the change in the way we share information.

    In about 2000 I was contemplating going to university to ’round’ off my knowledge when I realized that I could learn a lot more and remain up-to-date by using the internet. In the previous century we had to buy books and read manuals and a lot of the time didn’t know anybody who could help us when we were stuck. We even waited with anticipation for the next Dr Dobbs, which I haven’t read for about ten years now!

    As most good programmers I have met are down to earth get the knowledge yourself kind of people, I’m not surprised there has been a turn away from universities, the question should rather be “Why would anybody go to university” (OK, thats a bit troll :)

  10. Tina  •  Sep 27, 2008 @5:13 am

    I think there is one point that a lot of people are missing… software development is only a small subset of computer science. If someone wants a software development job they can be very successful without any sort of formal education. However, if someone wants to do CS research or work in academia they NEED a CS education. I think the reason there are so few CS graduates is because those research and academic jobs are unsexy, not because software development is unsexy. I don’t have a solution, though I would hate it if CS programs morphed from teaching math and theory to teaching software development because I think it would lead to a lot of academic innovation being lost. I think that while many CS graduates would be better off with software engineering degrees we need a traditional CS degree in order to cater to the graduates who don’t actually want a career in software development.

  11. Anthony Stevens  •  Sep 27, 2008 @5:22 am

    Great comments. Has the learning paradigm changed? Very interesting. And it’s definitely crucial to consider the difference between CS and software development.

  12. Michael Duffy  •  Sep 27, 2008 @5:56 am

    It’s funny seeing Java bashed on a blog with a link to “Your First F# Function” in the upper left corner. C# looks a great deal like Java, and a CLR isn’t much different from a JVM.

    I would argue that VB has dumbed down programming to a far greater degree than Java has.

    I agree with the author that learning a single language like Java or C# is not a substitute for the fundamentals that a computer science. But the argument posited by the author seems to me to be a good example of the shallow thinking that he’s lamenting.

  13. alan  •  Sep 27, 2008 @6:19 am

    “Nobody needs a CS degree to do 90% of the professional work in the field.”

    Here’s where I’m confused. You seem to be treating “CS degree” as “vocational training to be a programmer”. Where’d that come from?

    If you get a biology degree, you can be a physician, sure, or a researcher, or a lawyer, or anything else — including a programmer. Nobody assumes that this undergraduate degree program maps onto exactly one field.

    So why, then, does anybody assume that “CS degree” maps onto just “programmer”? I know people with CS degrees who then went to medical school.

    As Alan Kay points out, there’s one CS degree (or sometimes two), but biology has about 25 different departments. Is it any wonder they’ve got more graduates? They’ve got more degrees! Plus, they don’t try to shoehorn you into one job title.

    Or look at mathematics, which is arguably the closest department to CS. There’s one degree, but no mathematics department would assume all its graduates will go into the same job title. I’ve been told math is great for actuaries, for example, but if a math department was simply actuarial prep school, they would be the laughingstock of math departments.

    CS deserves to have dwindling numbers, until they grow up and act like a real college department. Having few graduates isn’t a problem. It’s market forces telling the department it can’t live on the coattails of the internet bubble forever.

  14. chandelier  •  Sep 27, 2008 @8:02 am

    I think outsourcing is turning the profession into a desert. At some places just about /all/ the technical people are Indian; rather than get college students as co-ops to do the less demanding work, giving students some work experience, they just bump their count of Indians. I agree with the whoever said we’re eating our own seed corn; at least, the seed corn of native American programmers.

  15. Alec Goebel  •  Sep 27, 2008 @8:57 am

    As a recent CS dropout, you are missing a couple of things.

    Here is a list of things that you will most likely not learn from a CS major: source control, using libraries (ie no one cares that you wrote a linked list or atoi,) and my favorite completing things on time (turning in half finished code for a B always struck me as a really bad practice.)

    Programming requires investing a lot of time outside of the classroom. It requires the desire to keep up with new technology, languages, and practices come out. And unless you are getting a PhD, a wide range of experience and knowledge.

    And yet it is only taught by people with PhD’s. My HCI teacher was horrific at navigating GUI’s and would be unable to find the start button once a class. My Object Oriented Design Teacher (in Java) had only ever taught C so his example code was malformed, poorly designed, and some of the facts he made us learn were flat out wrong. My AI professor had not done any real programming in 15 years and was having his TA’s read our code/debug, but not actually run the programs. In OS we were using the 2.4 linux kernel which would be fine except that not enough was covered to explain why out nice little programs wouldn’t run on a 2.6 system, or why when such great advances such as using kernel modules we still had to rebuild the entire thing for each change. I don’t think they actually covered agile development in my agile development centered software engineering class, or if they did I don’t know why I wound up doing all the code for in my eight person group.

    Oh that’s right, none of them had learned how to program from their intro level courses and couldn’t figure out why there “toSting” method wasn’t printing properly.

    So, although the number of CS grads is dwindling, hopefully that’s a good thing. Hopefully it will convince the CS departments to try to keep up with the times, offer a nice range of practical courses as well as the theory, and force those silly tenured professors to actually write a program once in a while. Until then, the real computer science people will be fine, the good programmers will be disappointed, and the bad programmers would be better served by spending their money on some 24-hour programming books.

  16. Damon  •  Sep 27, 2008 @6:20 pm

    I think the key is that a computer science degree is really a degree in mathematics with a few programming courses. For that reason, Java is an excellent tool for teaching algorithms because it abstracts away things like memory and allows the student to focus on the math. In the end, computer science degrees are meant as a primer to advanced computer science degrees with the goal being a PhD.

    This has benefits because most of the truly hard problems in technology require really bright mathematicians. By hard problems, I mean the folks working on solving theoretical mathematics problems that once solved will benefit us in 10 – 50 years.

    As a holder of a computer science degree, I can say that I rarely use the directly tangible concepts learned in my computer science degree in my professional work. Having learned how to learn is one of the most valuable things I…learned. And you don’t need a computer science degree for that.

    By far, the best software developers I’ve had the pleasure of working with do not have computer science degrees. They usually hold degrees and usually are *mostly* self taught. They are the kind of people that are genuinely curious about computers in a way that most computer science grads are not. Broad generalization, but anecdotally supported. I never said I was the best computer science student!

    I don’t think that computer science education needs to be rethought because we need people researching those types of problems. However, we need really, really smart people working on theoretical problems, and really, really pragmatic people working on the 95% of the remaining problems.

    I suggest you check out Ken Robinson’s talk: http://www.ted.com/index.php/talks/ken_robinson_says_schools_kill_creativity.html

  17. Kris  •  Sep 29, 2008 @12:53 pm

    I have a Computer Science degree that graduated in 2003. When I started college in 2003, they had just introduced a new degree program called Information Technology that covered more basic computer tasks and touched on other things like networking, multimedia, and computer repair.

    By the time I graduated, I think more than half of the people that went into Computer Science had migrated to Information Technology from reason varrying from too difficult, too much math, or simple lack of enjoyment in programming.

    I think a big reason for decline in enrollment is the rise of programs like Information Technology. Prior to that, if you wanted a computer career, you got a Computer Science degree even if programming wasn’t your main interest because it was your only (good) option into the field. Now there are a lot more option/paths for those that either can’t cut it or find their interests pulling them in different directions.

  18. Kris  •  Sep 29, 2008 @12:54 pm

    I should say I started in 1999 and graduated in 2003.

  19. Jeff  •  Oct 1, 2008 @5:26 pm

    I’m seeing a lot of comments on this thread that don’t match my experience. I finished a BS in 2006 and an MEng in 2007 from MIT. So, not a bad program. We saw CS enrollment drop at MIT during my time there. The reason seemed to be a perception that there were fewer jobs in CS — a perception I’ve found to be completely false.

    I think the real problem with the discussion of which programming language to teach is that with a proper CS education, you can use any language. You can pick up one you don’t know and be writing useful code in a few days. I don’t like Java, but I don’t think it’s the problem.

    As for the need to get an MBA and go to Wall Street, that comment is so… last week. Seriously, though, the sheer madness of the past week aside, the average salary of a Harvard MBA from the class of 2007 was $115K with a $20K signing bonus, not counting non-guaranteed compensation (bonus, stock options which may or may not have value, etc). The average salary for a 2007 MIT Master’s graduate working in the software industry was a little shy of $90K (it was over $89K), not counting non-guaranteed compensation. (Yeah, the Master’s grads weren’t all CS grads, but the CS-only stats weren’t readily available for 2007.) The MIT guys make less, but they are also a few years younger, on average, and are not killing themselves working 90-hour weeks in consulting or investment banks.

    Software is quite complicated, but I think it’s actually more complicated than it needs to be. If people understood the true value of a specification, documentation, designing a system with verification in mind, and a better theoretical understanding of abstractions, abstraction functions, invariants, and liveness guarantees, it would be far easier.

    On the subject of job insecurity, we’re not seeing outsourcing pressure in the highest-skill sectors of CS. In fact, we’re seeing job creation, as outsourcing the lower-skill work lets companies make more profit and expand. The important thing for a CS major to do is to grow his or her job skills as time wears on.

    The comment about CS research jobs not being “sexy” is another I disagree with. Have you seen what they’re doing at IBM Research and MSR? There’s a reason those two organizations are, respectively, the #1 and #2 organizations in terms of rate of getting patents. They do amazing things. Paxos consensus, the bakery algorithm, snapshots in distributed systems, and perhaps the best document preparation system ever — and that’s just one guy.

    Now, I’m all for a CS degree. But some of the best people I’ve worked with have degrees in physics. The job prospects in the pure sciences seem to be worse.

  20. Anthony Stevens  •  Oct 1, 2008 @5:31 pm

    Jeff: excellent, well-written comment. Thanks!

  21. Mr.Bill  •  Nov 4, 2008 @8:37 pm

    Why are there fewer graduates? Easy! This is the Youtube/MySpace/Facebook generation where they click a button and everything is done for them. CS, on the other hand, has always been pretty horrifically difficult. Gen Y’ers aren’t used to things being hard. This crumbling economy must scare the bejesus out of the Gen Y’ers. For those of us old enough to remember the recession of 1982, unemployment hit 11%, inflation was over 12%, interest rates on automobiles was 20%, mortgage interest rates were 18% and the economy had its worst contraction since the Great Depression. This current economy is child’s play compared to 1982. The Gen Y’ers have never had it rough. They are used to mommy and daddy taking care of things for them, and slacking off the rest of the time. That is why they avoid hard things like computer science.

  22. John  •  Aug 8, 2009 @9:29 pm

    This is such an old post, but I liked it. I prefer C++ over Java analogous to why I prefer the color blue over red–it’s just my personal preference. The year is now 2009, and America is in the worst recession. Many people are losing their jobs. Thank God I’m in IT as a (well-paid) software engineer. Just when “everybody” is not doing well, I’ve never been more financially well off. The demand for IT professionals is very high, and since graduates for it are low, the salaries and job stability is high, higher than most professions even some types of lawyers. Things are right where they belong. There’s no way to “fix” the problem of low numbers of graduates. Computer science is hard. It’s foundation is mathematics. People who think because they’ve read Learn XXX in 21 days can do my job (assuming that they’re not also formally educated), they’re sadly mistaken. I work on embedded systems where machine architecture knowledge is a MUST. I also work on designing artificial languages where Automata and computational analysis is required knowledge. Computer science is only for a select, relative few because some people just aren’t up to the task of studying: compiler design, computer architecture, formal language theory, networking, artificial intelligence, automata, signal processing, operating systems concepts, algorithms, data structures, simulation, computer graphics, database management systems, cryptography, and an endless supply of other related subject matters. All of these subject matters without a single exception requires mathematics. What separates one programmer from the next is of course, the mathematics. If almost all modern languages can be described (just their syntax) using BNF in a few pages, surely anyone can pick up a Learn XXX in 21 Days book and learn a computer language. But can they actually write say, a back-end, multi-threaded server that accepts thousands of connections? Can they write a virtual machine that executes bytecode produced by a compiler? If all they’re doing is writing back-end components that spit out results on a web page, then we might as well hire a high-school kid to do that or outsource the job, but if we need someone to write the software for a braking system of a car, or software that controls a nuclear power plant, or a navigational system for a jet fighter, then that’s an entirely different thing. Computers will only get more and more ubiquitous, and the demand for highly educated, smart people will always be scarce because it is simply a hard subject matter to undertake. A person can be a total genius but still find computer programming hard; I’m not talking about stupid little toy programs or trivial software. A simple example is if we’ve got 100,000 lines of code. Something is broken but why and where is the bug? In an embedded system, there may not be a debugger to step through it. Maybe our only means of debugging is setting either a voltage to high or low to make a light flash. It’s hard even for a really super duper smart person to debug in this type of environment. Programming requires long hours of just sitting in front of a non-living object for hours and hours, week after week, month after month, year after year. Personality-wise, some could never take that. It’s hard. It will always be hard.

  23. James  •  Feb 25, 2010 @6:20 pm

    How many people like to write papers, do math, and be computer literate all at once?
    Maybe even add a bit of drawing skills for those application designers.

    Writing, mathematics, artistry and in-depth computer literacy might not be appealing to a majority that prefers passive tasks. Like a cook, their recipes (algorithms) are already made for them. So its easy for them to just remember the recipe and cook all day without using higher level abstract thought. Imagine a cook that would need to design recipes all day.

    Programming requires you to, in a way, write a paper and use mathematics at the same time.

  24. Jeff  •  Oct 11, 2010 @2:07 pm

    I have a Game Design and Development degree and while you don’t get a very technical standpoint it focuses more on design/working in a team environment. You learn a little bit of everything so you’ll come out being a jack of all trades. If you know you want to be a programmer I would recommend a CS degree.

  25. Milica  •  Nov 26, 2010 @10:02 pm

    Well, this is a very complex topic, as all of you guys pointed out. Comp sci department is born out of electrical engineering department. They took the math away and called it comp sci. So engineering majors who weren’t good at math, went to comp sci. Then IT and MIS were invented later, so people went away from comp sci into those. Easy is good. Americans are trained to have it easy, and the school system and society really help in that direction.

    Some comp sci profs do talk about this and try to change it. THE KEY IS TO PUT MATH BACK INTO COMP SCI.

    Turning in non-working code for a B is expected these days, in most schools.
    The outdated tenured professors was always there, in many schools.
    And talk about long obsoleted programs – like when we had APL class as undergrads!!! Who cares?
    And the terrible topics for homework – and the terrible education – SO boring. Who cares? Let us solve something interesting!

    Of course, meanwhile there are shopping malls and video games and Facebook, parents who are away for whatever reason – work, divorce, 2 hrs commute each way, etc. – so before-college kids are left on their own. How many kids are going to study hard if left to their own devices? Drugs, parties, mall, facebook, car, girlfriend/boyfriend etc. – it all sounds a lot more cool. So – teenagers work as soon as they can, and spend all their money on party-like stuff. So of course they are not studying. That is boring and prevents you from making money to have to buy gas, CDs and recreational drugs and hanging out with your beau.

    And the school system is left with dealing with all of this, for little pay, so their job is not really to teach, but to prevent 30+ kids in one room to go bananas. School is just a place to park the kids for a while, so that you don’t have to pay a babysitter and/or there is a little less chance that little Johny is getting high all day long. Sorry. It is true – I have been a sub for a while and it is horrible. Private schools can be different – I have seen wide range of “park here only” to some serious studying. Teachers are often paid lousy and trained lousy.

    Actually, this is all planned, since there was a few “educational acts” signed by various presidents, for example Clinton and way before him, saying that this is the way to go, to produce cooperative citizens. Citizens who do not think much but are able to follow directions. Google this. There is also a committee after WWII that suggested that the usa goes the “use and throw away” and consumerism way, to increase sales and profits. Google that too. Good luck. There are some very gnarly things in action.

    So in some ways, American system has shot itself in the foot. This commercialism that makes money to corporations that “sell stuff” is also killing the entire society.

    Why would an American company hire grads who are incompetent? Of course they will hire some Indians, if they are competent. That’s logical. They can actually DO THE WORK.

    Meanwhile, women and minorities are dropping out of this, since it is so full of stupidities, and as a woman in the field, I can tell you that we get treated quite badly. They still see us as pretty chiks with no brains, more often than not. Finding someone who treats you as a coleague is quite rare, actually. Sad to say but it is true.

    And lastly, Java is not great. Try to add a few decimal numbers and watch the roundoff error grow. C# is Microsoft’s version of Java. Just a name gimmic to avoid copyright laws.

    I personally adore C, as fast, mean and lean. Good programmers do not need OO languages. A good C programmer programs OO.
    OO languages were designed to rope bad programmers into OO, imo. But that is not working either. Bad programmers write spaghetti no matter what.

    So, what I am saying:
    comp sci requires some maturity, initiative, effort, and some good math and common sense skills. Not for the weak at heart :)

    Once you learn it, though, everything else is easy. For example, I am a phenomenal orthopedic massage expert. I can just go through using my comp sci skills and “debug” and find out which tendon, muscle, etc and then fix it. I was able to design my own kitchen using dynamic programming, etc etc –

    I think our degrees are super useful for anything, because of problem solving.

  26. Patrick  •  Nov 30, 2010 @7:11 pm

    Too quote one person is called doing homework, to quote two persons is called studying, to quote three persons is called researching. A piece of paper is a piece of paper and nothing else. Show me the results, show me the code and stop talking. Way too many Cs graduated people spend a long time talking about how good they are at solving issue… Well these issue will eventually has to be solved by using codes that work. Never look at the paper, always judge the person by testing him/her. Anything else is a waste of time and money. Results my friends, results…