It's like getting a physics degree to become a civil engineer.
It's like getting a physics degree to become a civil engineer.
The analogy is apt for exactly that reason. Some knowledge in physics is fundamentally required, but for the civil engineer it's only professionally relevant to the extent that they can apply it to solve practical problems. A solid understanding of physics (and indeed how to come out wiser after reading a paper relevant to your field) is just one part of their expected skill set.
Edit: To be clear, I want the field to mature and develop into something similar to other engineering fields like EE, but it's not there yet.
Requirements management, information security, software architecture, all the big picture topics that are applied and not theoretical in nature.
Sure, some courses could be up-to date but ultimately they'll be out of date in a couple years. Core concepts like OO are a bit more stable but you can be taught this in an applied sense or a theoretical sense and both are covered in a good CS course anyway.
Industrial economy, ethics, engineering professionalism, development methodology seem rather universal. Then, depending on specialization you could pick up anything from signal theory to control engineering to human anatomy.
> and couldn't be covered in a module?
That's a pair of very, very narrowly placed goalposts. Of course you could cover anything in a module and call it computer science, but where would you go then if you have a legitimate interest in computer science and not a bunch of courses that really have nothing to do with it?
SE students tend to miss fundamental parts of creating good applications while they study how to do so (security, privacy, performance (!), etc). This gap creates a liability in the job markets they saturate, as well. This culture of companies that hire SE majors and SE degree programs is pretty lax when it comes to the stuff that isn't arbitrary software framework knowledge. Frankly, the 'optimization' of CS has been a disaster. Buggy software can cause just as many damaging or long term effects as poorly designed buildings or machines, but in none of the programs that would output people capable of creating those do we see a movement supporting 'practical' knowledge over the basics. It's incredibly short-sighted, and at the very least, it means smaller CS programs.
At the end of the day, the curriculum is really what matters for a person. Actually, you can even argue that "computer science" is not even a real science (similar with many other studies that have "science" in their name). Heck, I'd say software engineering is closer to actual "engineering" than computer science is to actual "science".
We use mostly Python and Go btw, which I think might affect things a bit. Graduate schemes for those computing degrees tend to be at big corporate dot net shops.
I mean on the one side I agree with you because there's so much you can learn online right now, but the same is true for other branches of engineering and STEM as a whole.
Asked the other way around, what would you suggest as education for someone who wants to be a software engineer?
Is it though, my understanding is that for a lot of engineering programs and science courses, much of the value comes from labs and hands on experience with equipment that a consumer cant get access to.
I don’t know what “practitioner program” could get you close to a guaranteed spot at a top software firm. I’ve been out of school for a few years and figure this stuff has been changing fast though, so that perception may be out of date.
Never even heard of a software engineering degree. Only computer engineering or computer science, either of which may include some software engineering courses.
Though I doubt the content is that different to courses in other countries
(I'm stretching the truth a little here because I also did a Maths major in addition to Comp Sci, but that was not part of my Comp Sci requirements so I think it's still valid to the point I'm trying to make, that the two degrees are functionally identical with different names)