Spectrum Online—Tomorrows Technology Today
Font Size: A A A

« UK Loses Same Personal Data Twice | Main | Second Life Becomes Second Swipe »

Are Future US Programmers Being Taught to be Unemployable?

In an article titled, "Computer Science Education: Where Are the Software Engineers of Tomorrow?" in this month's CrossTalk (the Journal of Defense Software Engineering) and in a subsequent interview in Datamation under the title of "Who Killed the Software Engineers", two emeritus computer science professors from New York University argue that universities are so desperate to keep computer science student enrollments up, that they are dumbing down the curriculum to attract prospect students. This dumbing down, professors Robert B.K. Dewar and Edmond Schonberg say, is producing software engineers with a "set of skills insufficient for today’s software industry (in particular for safety and security purposes), and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals."

Dewar says in the interview that, " 'A lot of it is, ‘Let’s make this [computer science and programming] all more fun.’ You know, ‘Math is not fun, let’s reduce math requirements. Algorithms are not fun, let’s get rid of them. Ewww – graphic libraries, they’re fun. Let’s have people mess with libraries. And [forget] all this business about ‘command line’ – we’ll have people use nice visual interfaces where they can point and click and do fancy graphic stuff and have fun.' "

Dewar goes on, " 'Universities tend to be in the raw numbers mode. Oh my God, the number of computer science majors has dropped by a factor of two, how are we going to reverse that?’ ”

Dewar and Schonberg point out in their article that companies like UK-based Praxis (see an article on the company published in IEEE Spectrum) who use formal methods to develop safety-critical systems are having a hard time finding people with the proper mathematical training, even though formal methods are taught in more in the UK than in the US.

I blogged a few months ago about Cambridge University having trouble recruiting computer science students, with part of the reason for the troubles being that the program, in Cambridge's words, "is a rigorous and demanding course." Yesterday's Globe and Mail also had a story about computer science enrollments dropping at many Canadian Universities by 36% to 64%.

The article has caused a stir in the defense community, with Dewar saying that he has received a lot of support for the position in their CrossTalk article.

But is the situation as dire as professors Dewar and Schonberg claim, or a natural issue of supply and demand, or is it over-blown, being one of those, "When I was your age, I had to walk fifty miles to school" arguments, or is it something else?

TrackBack

Listed below are links to weblogs that reference Are Future US Programmers Being Taught to be Unemployable?:

» La problemática de los estudios de ingenieria del software en USA (y UK) [eng] from meneame.net
Interesante post sobre la drástica caída del número de estudiantes de ing. de software en las universidades de USA y lo que intentan hacer para evitarlo: reducir drásticamente los requerimientos curriculares. "Hay que hacerlo todo divertido. Las m... [Read More]

Comments (24)

robert schaefer:

Is this whole topic a can of worms?

Laws appears to allow anyone with an arbitrary set of qualifications to write software for anyone. The employer takes on the risk.

But if you are self-employed, what you can call yourself appears to be determined by law.
Who can call themselves a Professional Software Engineer? What does this mean? What are the certification tests? Who and how many go through this process? How much does it cost? What are the benefits?
Are certified software professionals measurably more intelligent than those who are not? If certified professionals write crappy code, does the certifier become responsible? What products are non-professional software programmers legally prevented from working on?

Is Software Education learning how to learn or the ability to be certified in Industry Brand Name Software Products?

What are the differences between the Software Engineering, Computer Science, Computer Engineering, and Information Technology degrees? Does it matter to an employer?

If jobs are offshored to the lowest price contractor, does offshore education and certification matter? If jobs are offshored to the lowest price contractor does U.S education matter?

And the root questions of all evil: What is intelligence? How do you know?

Eric Waydick:

All educational programs are slipping down the same slope of lowering the bar to keep enrollment up. That trend needs to be reversed, or we will soon find ourselves without experts with the proper training.

I don't think it is a matter of intelligence. It is a matter of exposure to the proper techniques and best practices. If you don't know how to make a brick, it is probably not because you wouldn't understand the process. It is more likely that you haven't been exposed to the process to make that brick.

Chris:


Same in most engineering programs. It leads to increasing 'degree' inflation. The problem is confounded by aiming to make degrees achievable for everyone, instead of working out more appropriate qualifications short of a degree, e.g. like some apprenticeship programs in parts of Europe.

Dick Silva:

The reason that few individuals are majoring in Computer Science is because they know they will be replaced by cheap labor from India.

By the time American software engineers hit the five year mark their pay rate makes them uneconomical in the eyes of American corporations when they can hire Indian(India) labor for far less.

The economic crisis that the U.S. now faces is inpart due to millions of American workers being put on the streets and being replaced by cheap Indian(India) labor.

Of course the trade agreements that American Corps wrote are also a big part of the blame.

Leonardo Bocchi:

I'm working in the biomedical engineering department, and here things are going exactly the same way. Even worse, it is supposed that in Europe (as almost everywhere), software is considered to be a medical device, and, as every medical devices, every software needs to be certified (the CE mark).
I'm offering thesis in software development for medical instruments for the last 10 years, and now nobody wants to get involved in the progamming/design/software engineering arguments.

But the same argument is valid in our university: to keep numbers high, quality of courses is going down.

Michael Geilich:

The root of the problem is that industry doesn't make a distinction between computer programmers and software engineers. Unfortunately, the MBAs that run companies don't know the difference, and don't understand why it's important. The number of english and history majors I see calling themselves 'engineers' is staggering. The vast majority are simply programmers, and not terribly good ones at that. I can't call myself "doctor" without the degree, why doesn't the same apply to engineers?

Horace Chan:

Yes, bachalor graduates are dumbing down. That's the price we have to pay for having more university graduates. Is it the end of world? Probably not, as long as we have capable master or Ph.D. students. Our education system will be in real crisis if they start dumbing down masters or Ph.Ds.

Larry Lipke:

Dumbing down curriculum is clearly a bad thing, but unfortunately, raising the bar will not solve the low enrollment problem either. The root problem is not that the US doesn't have enough smart people. The root problem is that smart people will follow the money. And the money is not there anymore for American programmers. Too many American jobs have been offshored to countries paying what are, by American standards, slave labor wages.

I've been a software engineer my whole career, and I have trouble envisioning myself as anything else. But, if I were a young person just entering college, I doubt very much that I would choose computer science as my discipline. I would have to believe that I could have a good future in software development. I think that is a very hard sell these days.

What is the solution? I'm not sure. Somehow the wage disparity has to be addressed, and that cannot be addressed by the universities. I'm just thinking out loud here, but how about incentives to companies that provably *create* jobs at home for American citizens? That would have to be a good thing.

The bottom line is, the incentives have to be restored. Once that happens, bright, energetic young people will line up at the door.

David Johnson:

The authors make a valid point regarding the cookie-cutter programmer that is stamped out in volume and easily discardable. As Universities have lost sight of their original charter, education, and focused on pumping up the revenue stream we can see the affects of the compromise on Universities. Similarly, the narrow minded and unrelenting pursuit of increased quarterly revenues at any expense kills good companies. Both cases exemplify the losing sight of the fundamental reason for existence. Companies exist by nature of their production of useful goods or services. The revenue comes as a by-product of the creation of useful value or service.

Project management's "Iron Triangle" allows constraint of two of the three legs: Cost, Schedule, Quality; one leg has to float. In this instance it seems that quality is floating. Perhaps, schedule should be the preferred free leg. When I talk with friends who are also professors, the subject of "avoiding having to teach those bothersome undergraduate classes", and the ever present sword of Damocles (publish but more importantly, get research grants or perish) always surfaces. The University system has lost sight of its reason for being. Teaching is no longer the focus but has been supplanted by the imperative for new buildings and a rush to sequester knowledge in the compilation of intellectual property portfolios at the business office.

Without question there are other dynamics at work as well: immigration policy driven by wage suppression rather than quality of citizenship, a pervasive attitude of entitlement among many of the college and early career age group, and a perverted sense of value in the population at large. Compare the contribution and value-add of the multi-million dollar athlete, the multi-million dollar rap artist, and the under $80K salaried programmer, engineer, or molecular chemist laboring 10-13 hours a day to produce the unappreciated marvels of the modern world.

I know this has the sound of a bitter tirade. I really enjoy technology and helping people solve problems, especially when such a solution helps improve life, but there are frustrations as well.

Very best regards,

David W. Johnson, PE, MSEE
Consulting Engineer

John Bilash:

I suppose that this may be a symptom of the times... that increasingly our (Western) culture breeds an obsession with our own entertainment as the driving focus of each of our lives. But I hope that there is something else that is at work here:

The point of technology is to improve people's lives, i.e. to make them simpler, or better in some way. It is not to prove how smart the engineer is.... Too often the methods and products we use and create seem more geared towards proving our cleverness (or insuring job security), rather than towards the purported ends.

Scott Lis:

As with all the sciences, we need professionals skilled in both the theory (science) and the practise (engineering). The low level argument about command line verses GUI misses the point. Formal methods, agile development, and other techniques are not silver bullets. There is no one best way to create, or teach, software; however, one mistake most programs are making is that they introduce team projects too late in the curriculum. Introductory classes can help students develop good habits by learning to work in teams. Instead too many CS programs start with projects that teach a basic algorithm that, once solved, is passed on secretly from one student to the next, year after year, having a toxic effect on students and the industry as a whole. Encouraging beginning students to work as a team, integrating libraries and effectively using a professional framework; where each team has specific roles to fill, and each team has a different, novel, problem to solve promotes healthy work habits and life long job skills. Granted, at first, this takes some getting used to, especially for those of us teachers who were weaned on Fortran 77, the DEC 10 and PDP-11, but, once teachers use this approach successfully, it is hoped that they will realize that teamwork, novelty, innovation, and creative thinking are the true foundations of Computer Science and that research, formal methods, and the study of algorithms belong in the upper level classes.
A brief note addressing the comment on laws is that we also need to start including intellectual property law into the CS program.

Sud DeLand:

This a symptom of a larger problem in the USA. We ae not inspiring our youth to enter the "hard" sciences and engineering in general. The enrollment numbers above reflect this demographic fact. I read that UK, Germany, France, and especially Japan and China have a much higher percentage of their youth going into science, math and engineering. This is a social problem that will not be solved by "dumbing down" the subject. You can see it in our popular media that encourages pleasure seeking rather than study and achievement.

Maren Purves:

The problem starts much earlier. As long as teens graduate high school without having taken math past pre-algebra and then get into college we can't expect that they will be prepared to follow any engineering or scientific class successfully.


My job title is software engineer, and I have been working at one or the other astronomical telescope for the past 20 years, yet my background is in physics and astronomy (Diplom-Physiker, Dr.rer.nat. in Astronomy). You don't have to be a computer scientist to become a programmer or software engineer, but you have to have some scientific or engineering mindset (making motors move is fun, and I'll take a command line over a GUI any time, but I guess that to some extend shows my age).


Many kids these days don't learn how to type, avoid math and science in high school and are then surprised that they can't compete in the real world. I don't think the problem is that jobs are being outsourced for lower wages, I think it's todays young people expecting wages they aren't qualified to be paid.

With respect, I think this article is getting more credit than it deserves.

The authors are also the leading forces in a company that produces Ada tools; they've also been prominent in the Ada community for years. Not surprisingly, they think that using Java in early CS courses is a bad idea. Gee, I wonder what language they think we should use instead?

Steve Frezza:

I'm not sure that Ad Hominim will get us very far. And yes this is a 'can of worms'. But the problem is real. The point about the decline in CS/SE/IS enrollment is both real and significant. In my state (PA), interest in computing science(s) by SAT takers has declined from 9% five years ago to about 4.5% today, and this is rate-of-change is significantly higher among minorities. The decline is real.

We teach undergraduates, and are proud to do so. While our numbers have declined significantly, we've taken the opportunity to improve our program - not dumb it down. Based on our metrics we're happy to say that our average graduate today is better prepared than they were five years ago - with a similar understanding of essentials, and a better grasp of newer issues, like agile, or HCI. But then we've also worked to have our undergraduate programs be accredited (ABET), and take it seriously.

The issue, from our vantage point isn't "dumbing down" programs (maybe state schools have that issue), but rather getting more HS and pre-HS students interested in computing, and doing the pre-requisite mathematics so they can get into programs like ours. We find we're competing against a lot of health science programs, and other 'Hot Ticket' majors, with a lot of incomming students wanting to be technology users, not technology builders. Sure, there are some who don't want the hard work. Sure, there is fear from China, India and the like, but that is only one part of the problem. And to be honest, good CS or SE graduates are the ones who will be specifiying and fielding those systems the MBA-types want to off-shore to cheaper labor markets.

What we could really use is having more veteran software engineers going into secondary schools and middle schools, and helping these young kids learn how really great the computing profession really is. From what we see and hear, for them it's not just about money - its about helping people. What us professor-types need is help getting these young, pre-college students see how their work can help others and the world. The hard part is that when you manage to get an audience, these students seem to listen better to real practitioners, not us professors.

Given how much lawyers are paid as compared to computer programmers, it is clear that we have too many computer programmers on the market. The cure is to tighten standards at the undergrad level, which would serve to both increase the caliber of those receiving the degree and decrease the number receiving the degree.

The only loser would be bean-counts of enrollment. We need to accept that we've been overproducing a low-quality product, bite the bullet, and take the obvious measures.

Michael Foutain:

Can you say "H1B"

Intelligence is not wasting your time learning something that will not pay.

There is ample evidence that any drooling idiot can pass the Bar exam, and then you bill at $300/hr. What path do you expect an intelligent kid to select? 30/hr for 24/7 coding, or 300/hr for cookin' up losing arguments in lame legal litigation?

Money talks.

This article is right about formal math education, but wrong about algorithms vs. libraries. The reality of modern software development is that the challenges are, for the most part, no longer in the area of data structures and algorithms. They are in building and using abstractions that scale to the demands of the software marketplace. A basic understanding of algorithmic principles will always be essential, but spending more time understanding frameworks, architectures, and large-scale system construction is far more valuable--and less replaceable by outsourcing--than algorithms which are mostly reused from libraries anyway.

Jonathan Aldrich
Assistant Professor, Carnegie Mellon University

bandit:

First, I am a gray hair, with over 30 years in the biz. (I did work on a PDP-11.)

I went to a college (nmt.edu) where the dropout rate in CS was 60% the fall semester, and 30% in the spring (mainly the transfer students). This was seen as a Good Thing. The latest information I have about the dropout rate is: about the same.

Why is this a Good Thing? Because once you made it past the weed-out class, you were very likely to stay. The classes did not get easier, you were just qualified to take them, however you define the term "qualified", but you learned the material.

What we software engineers and system engineers do is too critical. I work on mission-critical embedded systems (medical, telecomm, avionics, etc). If the system fails, people DIE.

When I went thru the CS curriculum, I learned *theory*, with enough practice to make it stick. I wrote an assembler, then on a team to write a compiler and operating system. We learned language theory.

As a result, I can pick up any assembly language in a day or so. I can learn (almost) any Real-Time Operating System (RTOS) in a day or so (Integrity is the sole exception :(

A buddy of mine went to work for Oracle doing database bug fixes. He was fixing nasty, deep bugs in a week. His manager was amazed: it normally took 6 months for someone to get to that point. My buddy could do it because he knew the theory.

I have seen new hires straight from college. I can tell right away the ones who will make it - the ones with "fire in the belly". The ones in it for the money will fail - the profession is just too hard.

Yes, we need to inspire kids at an early age. I am all for good programs that can do that. But I *want* the college programs to be hard. We should be going for quality over quantity, if we *must* make a choice. Obviously, if the program is hard, and quantity is up, we will have larger numbers of the quality grads.

The outsourcing is a bad problem. It does discourage kids, according to both everything I have read and just common sense. Companies are going to reap what they have been sowing. This applies as well to the H1-B issue.

There is also the area of specialization. I do embedded systems. I *do not* do IT. These are different skill sets that demand different education. (Trust me - I'm an engineer :^) The curriculum needs to be tailored to the type of engineering. Nothing wrong with IT, but I am not qualified to do a big IT system; an IT guy would not be qualified to do what I do. For example - I need to be able to read and understand schematics - I am directly controlling hardware, sometimes bit-banging a port for a communications protocol. On the other hand, I think databases are where the squirrels keep their nuts, and networks are how squirrels move their nuts between databases. I am neither a squirrel nor a nut. An IT programmer needs these skills most every day.

I can tell you a dirty little secret about the hiring process, contract or full-time, of experienced engineers. A fair number of top engineers will not work for companies that do drug testing. Some of the engineers smoke pot in the evenings, some are just against drug testing. (Please, no comments about "They are just druggies". Silicon Valley was founded on a great green cloud once the engineers started to come from the hippie generation.) I have worked on mission-critical projects where there were unqualified "engineers" because the company could not hire enough qualified engineers who refused the drug test.

It does not matter that the authors are ADA folks. The skills are independent of the tools. Even if the colleges were pumping out ADA programmers, they still would need the skills of good programming practice, ego-less team work, design skills, understanding of data structures, finite automata, processes, interprocess communications, process synchronization, project management (pick any methodology), etc.

I highly recommend reading anything by Gerald Weinberg on the topics of quality and software engineering.

Spinner601:

I would like to suggest dropping the "money talks" argument. How is it any more relevant now than it was at the git-go of CS? As has always been true, money is only one factor in making a career choice. And for many, it is not the most important one. How many S/W engineers would say, "Well, I really wanted to be a much higher paid MBA or lawyer, but because [insert reason}, I had to settle for less."

Job security is no doubt relevant to today's conditions.

Spunner601:

I think we need to clearly distinguish CS education enrollment concerns from drop-out concerns. I don't think they have identical solutions.

robert schaefer:

I've been thinking some more on this. It was pointed out to me by a friend that joel on software made similar comments on education
http://www.joelonsoftware.com/items/2008/01/08.html
That friend continues with "We have a little bit of a hard time finding young engineers that understand hardware logic design. They often know a HDL, but lack the knowledge or skills to implement hardware designs."

What's going on? I think I have a clue, being a software engineer who is also an adjunct teaching core software courses at a small college, I've got a foot in both worlds.
Here's my take on this:

I think that that problem may come down to the teacher's background and what they feel comfortable teaching. If engineers found it easy to get back to teaching at the college level, the hard stuff that has value in industry would continue to be taught. But they don't. Without a PhD, you can't live by teaching. Adjuncts have little input into how colleges are run or how courses are selected. PhD's don't get this experience in industry as they are too high priced to be allowed to program or otherwise do grunt work as one of "in the trenches" software and hardware engineers, so they don't know the value of the "real world" versus a simulation. This is one more element that defines dichotomy between academia and industry. And the difference between teaching the "real world" hardware and software and teaching the simulation of the real world falls into this gap.

robert schaefer:

I've been thinking some more on the topic after reading the comments posted so far and one issue to consider is the a fall-out of the lack of open trade between industry and academia.
Those who are industry who do not have PhD's aren't permitted to teach at Universities, sharing what they have learned out in the real world. While PhD's who transfer into industry, will be too highly paid to write computer programs other than as research. The PhD's who remain in school to teach, only teach what they've learned in school, thus continuing the insulation. This dichotomy is also true for hardware engineers, as relayed to me from a colleague who reported the apparent lack of new EE graduates with real circuitry experience. These students are only learn VHDL in school.

Craig:

One important point has been missed in the discussion so far. There is a reasonable amount of evidence that programming is more of a talent than a skill. In other words, you can educate someone in programming/CS/software engineering, but you can't make someone into a great programmer if they weren't born with the talent. I think about my friend who is the lead software architect at a small web services company. He has a bachelors' degree in psychology, and didn't pick up a programming book until he was 23 and realized that you can't get a real job with a psych degree. When he needed to hire another programmer, he found a self-taught guy who never went to college, who turned out to be a great developer. Let's face it, today the majority of programming doesn't require assembly language, calculus, or advanced algorithms. If a developer needs to know about some advanced topic, they spend a couple of days surfing the web to read about it. A footnote about outsourcing--my developer friends have a team of programmers in India doing work for them. They are completely unconcerned about "getting outsourced" because the quality of code from India is so low.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on January 22, 2008 5:20 AM.

The previous post in this blog was UK Loses Same Personal Data Twice.

The next post in this blog is Second Life Becomes Second Swipe.

Many more can be found on the main index page or by looking through the archives.

Recent Posts