Is it the job of a computer scientist to run programs on servers though? That seems like specific technical training, not the subject of a computer science degree.
I think if you take it to the extreme, the job of computer scientist isn't to run any programs. It is to write them. To quote Knuth:
> Beware of bugs in the above code; I have only proved it correct, not tried it.
No, as a computer scientist, your job isn't to run programs on servers (or, at all).
As a person who needs to eat and pay rent though, I think it is fairly reasonable to expect you to know how to run programs you write, with or without an IDE. The reason for running programs without IDE is that most often, executing the program won't be a "javac Main.java && java Main", but probably some rather complicated maven/ant/gradle/shell/... command that you'll have to program your IDE to do anyways. If one can't even use a simple javac/java commands, one might have a very difficult time with those concepts.
And now, the overarching point is, does one as a student mindlessly click the green run button in Eclipse, or was one curious (and paying attention, because javac and java are usually taught in the first lecture) and actually tried to understand what's going on after you press the green button?
I'd go as far to even say that the curiosity of "what happens after I press this button" indeed is a job of a computer scientist.
Just my 2c, and why I expect fresh graduates to know a bit more than "class Dog extends Animal".
My point is the precise technical details of how to run one particular language in one particular environment are irrelevant and not the business of a university. You can pick up this practical skill anytime you need.
You're supposed to be learning the concepts. You can do that using an IDE.
I have no idea how to run an Erlang program on a server. Could I pick it up in five minutes if I needed to? Sure. So why do I need to learn it? Why do you care if I can do it coming out of university?
> Could I pick it up in five minutes if I needed to? Sure.
Yes, because you do know the basic concepts of using a CLI, the concepts around building your project, and the concepts of project metadata, build tools and etc.
When people can't run their programs without an IDE, it's because they don't know any of that. This is an at minimum 6 months learning of the unwritten culture of a profession. This is not something one can pick up in 5 minutes. It is also a huge signal that those people are missing other fundamental and important pieces of knowledge.
(That is, unless the OP is literally complaining that he threw people on a random computer CLI and people couldn't make their code run there. Personally, I have never seen anybody making this point, but I guess it's possible.)
But IDEs on developer devices can remotely interface with servers, and how many developers ever have physical access to a server rather than using it remotely from a workstation?
As a developer (though not by education a computer scientist), the vast majority of the software I cause to be run on servers is triggered automatically by updates to git repositories, and most of the rest is done via web consoles. Sure, I know how to do more, and that's sometimes even relevant to my work in terms of scripting what happens in CI/CD pipelines, etc., but running software on servers directly isn't really a central job duty.
And for the more pure ops people for whom it is, they are even less likely to have jobs that looks for a CS background.
Not many folks are developing on servers. Now, I will agree that devs should be able to write the Makefile/Dockerfile/whatever to tell the CI system how to build the artifacts that are deployed to the server, which does probably exceed what an IDE can do.