Hacker News new | ask | show | jobs
by tompccs 4049 days ago
In my opinion, if you want to learn how to be a software engineer you should take a degree in Software Engineering (which is a natural descendent of Electrical Engineering). If you want to be a computer scientist then do a degree in Computer Science (a natural descendent of mathematics). The problem is that the courses in many universities are misleadingly named.
3 comments

But they're still not going to let you skimp on the calculus classes. I do think 4-year degree programs should offer people more opportunities for the practical aspects. These don't really have to necessarily be part of the curriculum either.

I did two summers in the College of Wooster's Applied Mathematics Research Experience (AMRE) program, where they paid us a small stipend and provided on-campus housing for the summer. It was run as a little faculty-advised math/comp-sci/econ consultancy to help local businesses, and it was possibly the most valuable thing I got out of college.

All without having to skimp on actual computer science and math in the curriculum. These things are supplemental, not exclusive. And of course not everyone needs to go do a full 4-year degree if they just want to get out and make software.

But those people shouldn't be in 4-year computer science degree programs. And we should stop talking about this issue as if it's computer science that needs to change. It's about making people understand their options and what they will and will not get from each. For most quality CS programs, you have to pursue the practical outside the curriculum. For a code school, you might have to do some self-exploration about common problems encountered in computer science.

Everyone needs to find their own correct balance for their personal abilities and goals.

This! Looking back at my career I didn't really learn to program properly until I was in an industry job staring down the barrel of a massive codebase collaborating with colleagues across different teams. It was great.

But time and time again I find my strong theoretical grounding in computer science coming in handy. The last time I hit the front page of HN was with a blog post about how I spotted an NP-complete problem in $m+ enterprise system for insurance companies. It would have gotten to clients with unresponsive brick-like performance if they upped a couple of parameters because my colleagues didn't understand the Curse of Dimensionality and why it was important.

I'll admit that college professors can live in their own world of academic navel gazing, but there is an actual point to theoretical computer science. And the best time to learn is when you have the time and freedom from short term goals and arbitrary client deadlines. If only there were a few years we could devote to such endeavours before entering the workplace. Hmmmmm...

How do you see software engineers and computer scientists differentiated in the job market? It seems like there's a ton of bleed.
The computer scientist is theoretical. The software engineer is practical - like the difference between a mechanical engineer, and a mechanic?
Right, I get that. But if you look at job listings and see one for "computer scientist" and one for "software engineer," what sorts of things would you expect to see under each listing's "required skills" and "duties/responsibilities"?
I wouldn't expect to see a job listing for a Computer Scientist at all. Except maybe at Google? 99% of the market is writing code.

Maybe that's broken - more shops could sure use a good designer who understands the complexity of problems. But I don't see designers very often, and I've worked at dozens of places.