Then their needs are mutually exclusive and they have to compromise somewhere. If they want someone that can hit the ground running then they need developers with experience and not fresh graduates. If they really need someone to hit the ground running they might need highly specialized (expensive) experience too.
What schools? I don't know of any such degree at MIT, CMU, Berkeley, UIUC or any other top school. At best it will be a single course or some added certification to your degree, and even then they will teach you software engineering processes, not Node.js and React.
I went to CMU (econ major/CS minor) , and we absolutely had such a degree. It was called Information Systems, and generally taught people the skills needed to become a web developer. Skills such as front end developement, Ruby on rails, ect, as well as even some mobile dev electives I think.
Unfortunately, even though it was one of the best such programs in the world, and turned out graduates who made 80k+, it was still generally looked down upon, as the degree that people took who "couldn't get into Computer Science".
It is unfortunate that people in academia severely look down upon anything that has a more practical focus on useful skills, and only respect theoretical studies.
Information Systems programs are commonly business degrees. At CMU, it is offered by the Dietrich College of Humanities and Social Sciences[0]. In aerospace and defense, some employers and even the government do not value IS, MIS, or CIS degrees as highly because they are not considered engineering degrees like engineering proper, math, computer science, or physics. In those industries, the way to make up the difference is to complete an advanced degree from an accredited institution.
Whether academia is responding to signals from industry, vice versa, or neither is an interesting theoretical question. In practical terms, one might argue that better route for those industries at least is to choose a degree with higher perceived value.
> In aerospace and defense, some employers and even the government
Fortunately, I wasn't talking about areospace, or defense, or whatever. The vast majority of people who come out of CMU, are not working in these very specific job areas, so they aren't relevant.
Instead, they are working at SF tech companies like Facebook, and Apple, and the like.
And if you look at the places that the Info Systems people go to, it turns out that the vast majority of them have the job title "Software Engineer", making a median salary of 90k$:
It turns out that a whole bunch of people with these degrees are able to get top software engineering jobs at top tech companies.
> In practical terms, one might argue that better route for those industries at least is to choose a degree with higher perceived value.
No, the facts show that a very effective way of getting a prestigious job, working at a top tech company, with the official job title of Software Engineer, is to get an Information Systems degree. The stats I showed, prove it.
The problem for most schools is an engineering degree is a specific, formally defined degree. It seems that ABET has recently updated their Software Engineering criteria, but for decades a software engineering degree required extensive curriculum in physical science.
> Information Systems is NOT an engineering degree.
It teaches you how to work as a web developer. Web development being something that people often call software engineering.
Use whatever word or definition that you want to group Info Systems under, but at the end of the day, these people with these degrees are still getting jobs at Google, FB, and the other top companies, and/or startups, and are giving the job title "software engineer".
That is the definition of software engineer that I use. It is defined as "Those people who are working at google, or top startups or whatever".
Agree though that the Soft Eng degree is differs from CS largely by dealing with process, not technology. The first versions of the SWEBOK were pretty terribly biased towards a waterfall process.
I am not aware of any that offer SE. I went to a highly practical school and the SE discussion frequently came up - because many students preferred the pratical to theoretical.
Ultimately, my school could not offer a formal Software Engineering. "Engineering" degrees have not caught up with the times to include software. A software engineering degree would require completely irrelevant course in physical science - like thermodynamics, statics, and advance physics.
The modern day web dev degree is called "Information Systems". Top schools offer it, but it is generally looked down upon as the degree that people take who couldn't get into Computer Science.
There are plenty, but they're mostly graduate degree programs. A full undergraduate degree in software engineering is probably impractical, as it were.
CMU offers a minor in Soft. Eng. It requires 6 courses (one is fluff) and a minimum 8 week internship in industry. What's also good about this CMU minor is that it's open to students of any major.
I think this might be true of the startup is focused on building a web app since that's what most bootcamps teach. From what I've seen bootcamp grads are weaker candidates than CS grads because at least CS grads know enough theory and engineering to learn how to build something.
MIT's was (is?) heavy on theory, light on coding practice. I still think it was a pretty good program, they just expected that you'd learn to program outside of class.
I found them very challenging and interesting. It took me a few weeks to complete them, and I didn't even do the "project" part which was more open-ended.
Right, the labs were the major exception (and by far my favorite part, even though they tended to involve a lot of sleeping on things other than beds).
I'm not an MIT grad, but this has been my approach over the past few years when I decided I needed to educate myself on more paradigms rather than more languages. I found it less helpful to expand my skillset of similarly-styled languages and far more helpful to learn languages that are fundamentally different than the ones I already knew. Basically, I decided I should learn Lisp instead of yet another C-style language.
The end result is nice little feedback loop of far better understanding of the theory and concepts behind the code that I write feeding into writing better code, which then feeds back into better understanding. So now when I help peers (especially friends still in college), I focus less on the language and more on helping the concept click for them.
I can't say how well this works in practice in a university -- it sure seems to work for MIT -- but I know that in my professional life it has made just about everything I do far easier to reason about and my work is all the better for it.
I took the 6.001 edX courses a while back. Introduction to Computer Science and Programming in Python--actually broken in 2 parts for edX.
Yeah, it came across to me that the expectation was that you'd learn to program mostly outside of the course. Or, really, that you already had a reasonable grasp on the basic concepts. Otherwise I think that course would feel to most people like being tossed into the deep end of the pool from a great height.
To be sure, with the campus version of the class there would be recitation sessions and other resources to get help on the programming side. There's also a companion textbook that goes into more Python details. But that's certainly not a class to "learn to program," much less how to work on a command line, use an editor, etc.
That may be reasonable for an MIT CS curriculum but most other majors probably don't have the same degree of implied prerequisites.
Yeah, that was a pretty common feeling in 6.001, especially among those who hadn't done much programming in high school. At the time, it was taught in Scheme (a Lisp), which no one I knew taking it had any experience in, so everyone was on sort of equal footing there, at least. And more generally, it seemed to be a pretty common approach there to throw students into the deep end and let them figure it out - people liked to compare the experience to trying to drink from a firehose :-D. I'm not sure if it's optimal for learning the material itself, but it does make jumping into new subjects seem less daunting after you've gone through that a few times.
There's probably an expectation these days that students have some degree of exposure to computers. When I took an intro to computing course (FORTRAN) it was pretty much no expectations. But times have changed.
And I found 6.001x useful. But then I had a lot of experience with computers even if not programming full-time professionally.
I didn't touch a personal computer until a few years later in a job where we had an Apple II to do some engineering calculations. High school was BASIC using a teletype connected to a local community college--and that was pretty forward looking at the time.
But I didn't really use a computer to speak of (other than as a text editor in grad school) until I was working--and later got into programming as a hobby.