Its not, and that's the point. I've seen computer science students struggle at basic system administration tasks - even things like moving files and directories. I maintain that half the trouble we have deployment is that developers don't know anything about how configuration and setup works in the real world. This list helps to bridge some of that divide by having programmers deploy software, not just build it.
EDIT: I also think astronomy students should grind their own lenses and mirrors, so that they can understand the practical difficulties of building and operating a telescope.
While I'm surprised someone got through four years of CS without learning to use mv, if you are looking for 'developers' then you should look for software engineering majors, and if you are looking for sysadmins then you should look at people with two year associates degrees in information systems or something. CS is a branch of mathematics; expecting fresh CS grads to make good sysadmins is like expecting comparative literature majors to win spelling bees. They might do better than average but it's not really what they're educated in.
We don't have good programs in systems administration and network engineering, but we should. (Any major university starting one?)
In the meantime, a good CS program is a perfectly reasonable foundation for a career in systems and networks. I ran through the gamut of logic, basic logic circuits, assembly, algorithms, data structures, complexity and then features of various languages, operating system structures, and finally graphs, automata, networks and projects in all of the above. All of that is a solid base. As with anything else worth doing, you then need to build on that base with the tools of the day.
I suspect the overall high failure rate of IT projects is attributable to "people with two year associates degrees in information systems or something". I'd rather hire an autodidact with a degree in math, physics or engineering.
>I suspect the overall high failure rate of IT projects is attributable to "people with two year associates degrees in information systems or something". I'd rather hire an autodidact with a degree in math, physics or engineering.
yawn yeah, yeah, I know that going to yale makes you better than I am.
Kids today. No respect for the trades.
Everyone choosing a major out of highschool is encouraged to go in to something highly theoretical or impractical. I think it's a show of wealth. I mean, if you get a degree in fine arts or something, well, you had better have a rich uncle or something, right?
Granted, the fact that every SysAdmin education program I've seen was decidedly second rate doesn't help. /good/ sysadmin education programs would help a lot. Really, there is no excuse for the lack of good SysAdmin programs. *NIX is older than I am. It's not like the field changes faster than anything else to do with computers.
I think you have similar problems educating people as computer scientists and then expecting them to work as software engineers. We need a lot more software engineers than we need computer scientists; and if I need a program written, sure, I'd prefer an excellent software engineer who was also a computer scientist, but if I had to make the choice, I'd choose a software engineer who was not a computer scientist over a computer scientist who was not a software engineer for 95% of all projects. But what kind of high school kid choosing a major would choose to be a lowly Engineer instead of a Scientist?
If there's ever a program that should fall under a polytechnic or college umbrella rather than the university umbrella, systems administration and network maintenance is one.
We're always going to have this issue, because IT and sysadmin will always be scoffed as something for vocational schools, dismissed by "real universities of pure knowledge and research." Major universities will never condescend to offer such programs.
And perhaps they shouldn't. But at the same time, vocational schools are still seen as having less prestige (and, thus leading to careers making less money) in the U.S. It's just an endless dilemma.
"vocational schools are still seen as having less prestige..."
Except for a few vocations that have managed to get themselves tagged as "professions". There are a number of fields where students are supposedly taught to think in general-purpose undergraduate programs, and then taught the minutia of their chosen field in "professional school". e.g. law school, medical school, and a growing list of professional doctoral programs in fields like Psychology, Occupational Therapy, Pharmacy, Optometry, Nursing, Education, etc.
Maybe someday we'll have a "Doctor of Network Configuration" or a "Doctor of Database Schema Design"? (I'm not sure if I'm kidding or not)
Why shouldn't sysadmin or network engineering be turned into some sort of engineering major? What makes EE or Computer Engineering more deserving of the ivory tower than them?
Google expects its software engineers to do all that and more with a computer science degree. So what if it's not taught in the major? You're smart -- figure it out.
Don't get me wrong, I'm plenty capable with real world stuff. I just don't like it when people think a CS education should mean learning Java libraries and design patterns and server configuration. I'm glad I wasn't forced to waste my time taking classes devoid of conceptual material.
I agree that CS shouldn't mean learning Java or ASP.NET from top to bottom, but it wouldn't hurt to have an idea about them. Also let's not forget that even Peter Norvig said Remember that there is a "computer" in "computer science".
This isn't "expecting comparative literature majors to win spelling bees." This is, "expecting comparative literature majors to be able to spell."
I don't think that programmers should be sysadmins. There's room in the organization for both roles. However, I do think that programmers need to understand the practical difficulties in deploying and maintaining a running application. The more difficult it is to deploy an application, the greater the chances of someone screwing it up. By putting some forethought into how their application code is organized and by making some small investments in automation up-front, programmers can save endless headaches for themselves and the sysadmins supporting them when it comes time to go live.
Knowing how modern operating systems work is crucial to the study of many CS topics. At the end of the day, a CS major must understand the workings of all systems (because they can often be generalized). Hands-on experience is one of the best ways to achieve that clarity.
I agree, and count me as one of those who needs to learn sys admin tasks (though I can move files and directories around :) ). I developed a side project last year and used Google App Engine precisely because I've never setup my own web server. In the short-term I think it was the right decision as I had a tight deadline to get the app running. In the long-term I'm not so sure since I'm now locked into GAE.
EDIT: I also think astronomy students should grind their own lenses and mirrors, so that they can understand the practical difficulties of building and operating a telescope.