Transterrestrial Musings  

Amazon Honor System Click Here to Pay

Alan Boyle (MSNBC)
Space Politics (Jeff Foust)
Space Transport News (Clark Lindsey)
NASA Watch
NASA Space Flight
Hobby Space
A Voyage To Arcturus (Jay Manifold)
Dispatches From The Final Frontier (Michael Belfiore)
Personal Spaceflight (Jeff Foust)
Mars Blog
The Flame Trench (Florida Today)
Space Cynic
Rocket Forge (Michael Mealing)
COTS Watch (Michael Mealing)
Curmudgeon's Corner (Mark Whittington)
Selenian Boondocks
Tales of the Heliosphere
Out Of The Cradle
Space For Commerce (Brian Dunbar)
True Anomaly
Kevin Parkin
The Speculist (Phil Bowermaster)
Spacecraft (Chris Hall)
Space Pragmatism (Dan Schrimpsher)
Eternal Golden Braid (Fred Kiesche)
Carried Away (Dan Schmelzer)
Laughing Wolf (C. Blake Powers)
Chair Force Engineer (Air Force Procurement)
Saturn Follies
JesusPhreaks (Scott Bell)
The Ombudsgod
Cut On The Bias (Susanna Cornett)
Joanne Jacobs

Site designed by

Powered by
Movable Type
Biting Commentary about Infinity, and Beyond!

« "Who Says Nothing Exciting Ever Happens In Canada?" | Main | Four Years On »

Cranking Out Code Monkeys

I'd been wondering about this. Apparently, computer "science" degrees are no longer teaching computer science. There's no doubt that there isn't as much demand for actual CS types as there is for programmers, but if that's the case, they should shrink the CS departments and start up a different one, perhaps called computer applications, to teach the programmers. As it is now, I'd consider it academic fraud.

This is a generic problem, to me. The word "science" has gotten too watered down, even (especially?) in academia. Of course, it all started when someone came up with the oxymoronic major, political science...

Posted by Rand Simberg at January 14, 2008 06:22 AM
TrackBack URL for this entry:

Listed below are links to weblogs that reference this post from Transterrestrial Musings.

That's the main reason I never completed my Computer Science degree. I was acing every test, had a perfect 4.0, and was regularly speaking to graduate level classes on large scale networking (this was back in the mid-90s). People in my classes were failing every test, not doing any of the out of class work, and were there just to get an entry level VisualBasic job. In the end we both got the same degree. I quit and ended up doing a lot of Internet standards work that has gotten me way more than a CS degree would have.

In many CS programs the basic requirements for class credit are still there (operating systems, algorithm, etc) but the class itself is really dumbed down. My networking class required you to write a token ring stack from scratch. I'm sure these days you only cover TCP/IP and you barely scratch the surface of Ethernet.

Next year I do the executive MBA thing at Georgia Tech. A few schools still teach CS as a science. Georgia Tech is one of 'em. But they're rare.

Posted by Michael Mealling at January 14, 2008 09:04 AM

Carnegie Mellon University is another place where real CS is taught. My daughter is in her second year there as a CS major and so far she's gotten more science, math, and logic than programming.

However, I think it would be wrong to be too dismissive of the importance of programming in computer science. Programming is a necessary skill that enables CS types to try to put their theory-based ideas to the test, an essential step in any scientific endeavor.

Posted by notanexpert at January 14, 2008 09:47 AM

I think it would be wrong to be too dismissive of the importance of programming in computer science.

I don't think anyone was doing that.

Posted by Rand Simberg at January 14, 2008 09:56 AM

Back in the day, all computer operators were tape apes and programmers still are all code monkeys, assuming they write any code at all. The fact is, no human can encompass the fantastic range that software covers. Any given person can only handle a very trivial subset. What gets me are those that believe their subset is the only true way. Personally, the kitchen sink approach and uglyness of Java code turns me off but how can you argue with financial success?

I've been programming for over 30 years and have been part of the history and have seen many changes. During that time I've not only seen many fashions proclaimed the only true way, I've worked with a lot of different programmers. Some were traditional CS and some were not. What makes a good programmer is something internal that can't be taught in any school. Anybody can be taught a particular algorithm. What can't be taught is how to write elegent code. Believe me, 99% of the code that people are very happy to use is crap if you look at the actual code.

The problem is their are no good metrics. Which allows people to successfully arguing for bad things and proclaim them good. C has a preprocessor and header files, both bad things because they are unneccesary and make code harder to read (watch now as a deluge of comment argue just the opposite.)

The fashion today is for programmers to call themselves 'software engineers'... what a joke.

A good programmer is humble and teachable, always learning what is good and bad. They have always been in the minority.

Posted by ken anthony at January 14, 2008 10:10 AM

Joel Spolsky (of FogBuzz) wrote

I think the solution would be to create a programming-intensive BFA in Software Development--a Julliard for programmers. Such a program would consist of a practical studio requirement developing significant works of software on teams with very experienced teachers, with a sprinkling of liberal arts classes for balance. It would be a huge magnet to the talented high school kids who love programming, but can't get excited about proving theorums.

Joel's point is that writing software is more like art than a science. Why this is so is another subject - but it is what it is. We should come up with ways to crank out competent artists.

Posted by brian at January 14, 2008 10:21 AM

It's all about the government funding. When "Science" was riding high on the hog, you wanted to get a part of that gravy and so named your subject "****** Science". Since then, priorities have changed. Witness the "Social Ecology" department at UCI.

If there was actual truth in department nomenclature, "Computer Science" would be called "Consumer Electronics"

Posted by K at January 14, 2008 10:31 AM

As a computer scientist who understands pointers and recursion, I find it difficult to compete in the job market against code monkeys who have little grasp of broader principles but who can claim experience with the expensive proprietary crippleware management has been sold.

As for C macros being bad, I've seen them used in ways that make code harder to read and manage. I've also seen them used to greatly improve readability and maintainability of code. Like many tools it's how it's used.

Posted by Peter at January 14, 2008 10:37 AM

I was a sysadmin for some years, and got the Java bug when I saw the money that was available (at that time). By simply taking a 13 week course in Java and a few short-term contract jobs, I then landed a position at a dotcom as "Software Engineer". But I was only a novice code monkey at best. Of course the bubble popped and I was soon back to my old ways.

Posted by Orville at January 14, 2008 10:49 AM

1) I think it would be wrong to be too dismissive of the importance of programming in computer science.

2) I don't think anyone was doing that.

Hahaha. I got in to a very nasty argument with a tenured professor while I was in graduate school in computer science because I took the position that you couldn't really be a computer scientist unless you knew how to program in at least one language. His position was that programming was totally irrelevant. This was at a school where the graduate CS department was and is rated in the top five in almost all surveys.

But, I can see your original point. If I were in charge, I would split it in to Computer Science and Software Engineering, where CS is in the same college as mathematics (because, really, if you take out the programming it's effectively a sub discipline of math), and put the SE in the Engineering college along with the eletrical engineers, because what an engineer should focus on is building things, which in software means designing and implementing software.

Posted by Annoying Old Guy at January 14, 2008 01:42 PM

One of the more amusing moments in grad school was when my committee chair described Political Science as 'History taught badly'....

Posted by Scott at January 14, 2008 03:00 PM

The problem cuts in several directions. The core issue is that many people who want an education in software engineering have been forced into Computer Science majors. The result is CS programs which fail at both providing a solid CS education or a solid software engineering education. Software engineering is much, much more than just "programming" and it is not at all a direct subset of CS knowledge. Even a good CS education will tend to produce substandard software engineers, on average. In part due to this problem, the quality of the average "programmer", even with a CS degree, is very low compared to the average quality of college educated professionals in other fields. This is a key reason behind much of the problems with low software quality generally.

Posted by Robin Goodfellow at January 14, 2008 05:46 PM

I'm very much in the its an Art not a Science camp. You can teach people the syntax of a language, but it's impossible to teach them to be creative. The science is important but its much much easier to teach the formal science part than the creative part.

I spend about 1/3 of my working life answering software support questions from "Programmers" for NetBurner TCP/IP and OS products. I see the problem every single day. There is a huge gulf between the old time code craftsman and the Java coder monkey.

The very best programmers are born not taught.

Posted by Paul Breed at January 14, 2008 06:21 PM

Isn't this what Chinese people are for?

Posted by Josh Reiter at January 14, 2008 07:44 PM

I came up through a Computer Science department, because there was no Software Engineering department at my school. There's more to Software Engineering than programming, like software metrics, testing methods, defect injection analysis, etc., and there's more to Computer Science than programming, like algorithm analysis, data structures, etc. But, like a composition major in music school who can't play the piano is pretty much hosed when trying to demonstrate a piece, it's something every CS or SE major should be able to do, even if they aren't gifted at it. Really, programming is a craft that doesn't really need a university education to practice; university level education should be more than that.

Posted by Jonathan Card at January 15, 2008 08:57 AM

There are two subjects whose names include the word "science" (computer and political science) and I think they had to put it there otherwise many would not consider it exact science but applied science and/or engineering.

Posted by miklos at January 15, 2008 11:42 AM

Peter said...

"As for C macros being bad, I've seen them used in ways that make code harder to read and manage. I've also seen them used to greatly improve readability and maintainability of code."

This is an example of what I was referring to. I would put this in the category of 'good implementation of bad design' something all programmers have to do. For assembler, macros are essential, but asm is a bad language for humans even though essential to code down to the metal. Essential may the wrong word here. 'The one true language'(TOTL) should give you at least the power of assembly. Of course, there is no such thing as TOTL, but I think you can get pretty close.

Since 1975 I've coded professionally in over a dozen languages and explored quite some more as a hobbiest. Contrasting all these languages helps to appreciate the elements TOTL would have to have. This is going to require a blog post to elaborate.

Posted by ken anthony at January 15, 2008 12:11 PM

I was tempted to answer to Ken with something scathing, but hey... I've seen worse.

Personally, I always was suspicious of CS, because of many bad things these people hoisted onto the world of programming. Wirth was especially bad. Pascal alone with its broken types and pointers set programming back for a decade at the least. The only thing to come out of CS that I appreciate was algorithmics, various funky trees and graphs.

Posted by Pete Zaitcev at January 15, 2008 11:34 PM

Post a comment

Email Address: