There are schools/colleges that offer degrees in crafts (for example, car repair) which are clearly separated from academic degrees in the same field (mechanics engineering, in this case). This is not the case in software engineering: you have to graduate with an academic degree in order to work as a software engineer.<p>Do you think it is a good idea to create separate degree programs for teaching the "craft" of software engineering with a reduced dose of academia?
> you have to graduate with an academic degree in order to work as a software engineer.<p>You don't need any degree to work as a software engineer.<p>Also, there is a lot of software engineering degrees that are much more focused on the "engineering" part.
It was a big question 20 years ago whether computer science was an actual science. It's still something of a question. I think there's been recent recognition that computer science is something of a metascience. It brings benefits to many other fields (for example wireless sensors feeding a database can provide sociologists hard data where they used to have to rely on surveys) and in some sense the role of computers is defined by the problems they are applied to. Pure computer science is usually pretty esoteric (e.g., making the cloud work faster and better and safer). Learning how to program, though it may be called "computer science" for undergraduates, is not really much about science. So I would differentiate between the science and learning programming. You can learn programming many ways, by doing it while working on physics for example, or company training, or a vocational school, or self teaching, or college courses. The quality of the resulting programmer may depend more on the person than the training. Doing science is a specific skill set and that probably requires special training, though you can self teach yourself that also.<p>Engineering is more about making things work and when what you're trying to make work MUST WORK (like an airplane) then there need to be some explicit certifications and training to ensure you actually know how to make the software act safely and sanely. Other engineering applications of computers are more experimental (like devising new ways of jamming radar signals) and while they still can be life-critical (for the jet fighter pilot) they will also sometimes tolerate less formal standards as long as the application works. Other types of engineering are even less safety/life critical. So I'd divide computer engineering into degrees of criticalness which determines the level of training involved and necessary.
A real concern right now is that the course material in both academic CS and academic SE is behind by 5-10 years in terms of tooling relevant for industry jobs. This has always been true, but the difference between circa 2010 and now is there is 10x more domain-specific knowledge needed to be useful in industry because of all the frameworks and tools we now use. CS grads who haven't spent years dabbling in web dev on the side are now essentially useless for their first 1+ years in industry as they learn all the tooling. Gone are the days where you spend the first month learning a few things and suddenly you're on par with most web devs.
I've been saying this for years. For background: I started my undergrad in 2003, studying Electrical Engineering and Computer Engineering. I ended up switching to Computer Science in 2006 and graduated in 2009, which is also the year I started working as a software engineer.
I then did my M.S. in Computer Science while working full-time.<p>I have often made the comparison that Computer Science and Software Engineering have a similar relationship to Physics and Electrical Engineering. When I was studying EE, I remember that we had a course for Electrodynamics that was offered by the EE department, but the Physics department had their own version of the same topic. Engineering courses are usually more oriented towards tools and applications, and less theory.<p>I can totally see a Software Engineering degree (or dept) that might have courses with the same titles as those under CS but with a similar shift away from theory. For example, I would imagine a CS Algorithms course using the CLRS book while the SWE version might use something like the Algorithm Design Manual for a textbook instead.<p>I would see the SWE degree having CS electives and vice versa, but I would still imagine different required core courses. A CS degree might need more math pre-reqs, but I don't think SWE needs as much. I think SWE needs to cover more topics like software testing (I feel like that's almost non-existent in schools), and process management (scrum, kanban, story estimation, CI/CD), technical design and documentation, and more applied practice.<p>And I don't believe bootcamps are the answer here. Maybe if they were longer, but I wouldn't call them bootcamps at that point, just a trade school.
Yes and in some countries those are separate. In countries where they aren't separated, like South Korea, they should be as it would improve the education.<p>> Do you think it is a good idea to create separate degree programs for teaching the "craft" of software engineering with a reduced dose of academia?<p>Sometimes it's a good idea but that usually has bad outcomes in the quality of education
My degree is in software engineering. When I got it there were I think 2 or 3 courses that were part of the CS curricula that weren’t part of the SE degree (OS, compilers, and networking I think, for those interested)<p>Instead my program favored some management and organizational stuff. I chose SE because all the courses I needed were available online and I could continue to work full time without needing to go out to a classroom 3-5 times a week.<p>University studies have had a weird century or so, and have become substantially about signaling. I remember over-hearing a conversation from peers about why Software Engineering as a degree doesn’t make sense, because it’s not a study-able topic, while computer science was the true path. I suspect it had more to do with gatekeeping the signal than what qualifies as a valid course of study.
A lot of CS degrees are just an expensive and totally crap javascript bootcamp with algo drills. I'd say so. However the science of computing is a thing, but I rarely meet anyone who's gone and received that education. The few people I've met that have usually got an EE masters with a focus on IC design. I think there is definitely room for splitting them up.
you don't need to graduate with an academic degree to work as a software engineer. however, unless you go through considerable self-study of computer science theory, you won't be a computer scientist. a computer scientist does not necessarily write software just like a brick layer or master craftsman is not necessarily an architect.<p>i think that one of the main issues we have today is that all of the above is treated the same, and the main focus is on hiring people to write code (i.e. brick laying), and the this is done by first putting them through irrelevant coding interviews to make sure they can write code (something that a good academic education / degree will require you to do anyway, if you want to graduate). the interviews optimize for memorizing optimal solutions to problems you are unlikely to encounter in practice and which you can find in a book if you need them.<p>computer science / software engineering is still a young field, so there are no trade organisations yet. given the situation it is unavoidable that they will be created sooner or later.
I think that software engineering should be merged into computer science, because the vast majority of computer science students are going for software engineering careers. So the software engineering stuff should be introduced along with the programming material and developed throughout. If you end up displacing some computer science theory that isn't critical then that would be fine.
They already offer these degrees. They are called Computer Information System, Computer Information Technology, Management Information Systems, etc depending on where you go to school. I've been gainfully employed as a developer for over 10 years with my degree in CIS. Alot, of the time they are part of the Business school.
No. SWE minus CS is…pretty basic stuff. Trivially easy to self study for. Could likely be a single class. (Smart) Bootcamp grads are regularly taught enough to be productive in a few months time. Spending <i>four years</i> to get a degree in something that could be covered in one elective?
Software engineering is != software development<p>* Edit: Not sure why this was down voted. Software development is one skill of many in software engineering. Software engineering should be an academic degree IMO
Bootcamps fill this role imo, it’s gonna be hard to decouple computer science from programming in a long term academic setting since the two are way more interchanged than people like to admit. We’ve hired people from bootcamps and they can use git, write basic code, etc but then we have to teach them to abstract code, understand time complexity, etc. I think there should be a two year degree that teaches only these things (because they are so important in a professional setting) but any 4 year degree will need to delve into CS.