Hacker News new | ask | show | jobs
The purpose of a CS degree in the 2020s?
1 points by G-delta 2120 days ago
My experience is that non-CS engineers and scientists can write their own code, the talent that was supposed to keep the degree alive for decades. Consequently the subset of jobs unique to CS is rapidly converging to a handful of positions in computer systems, where electrical engineers are just as desirable. Will we still tell people that we need more CS majors in 2030, or will it be the next undergraduate business degree?
3 comments

If the entirety of Computer Science == write code to you .. then nothing, I guess.
My original point was that the jobs unique to the CS major are converging rapidly to several in computer systems; do these other topics (e.g. theory of computation and esoteric algorithm D&A) lend themselves to employment outside of academia better than the domain-specific knowledge a chemical engineer has, for instance?

I agree with you that CS is more than coding, but the educational establishment does not. The CS curriculum in most American universities comprises architecture, networks, operating systems, software engineering, some algorithm D&A, and Java/Python/C++, at maximum. The fundamental issue is that a proper study of the other components of CS you bring up demands mathematical maturity. Consequently a 3 year course of study in algebra, analysis, and topology is likely much better preparation for advanced study in CS than a 4 year course of study in software engineering, which is what most American CS degrees are. It is one thing to debate how useful CS is as a field beyond programming, but a completely different problem to determine how useful the training offered in a CS degree is.

Lots of discussion about degrees as signaling and such around. I didn't realize this was where we ere going.

If you walk out of a university only knowing how to code, you've wasted an opportunity. (and a lot of somebody's money)

One of the largest problems in the industry is that they are looking (job ads) for CS, hiring programmers, but actually often need software engineers. And the second problem is that they often don't understand the first sentence.

CS was never meant to be a programming degree. There are universities that don't have programming in their CS curriculum at all (well, except for pseudo-code or the like). It's a scientific degree. It's an education that teaches you how to solve problems in the Computing in a reliable, mathematical, scientific way. They solve abstract problems.

Software engineers, on the other hand, solve concrete problems, but also without much code. They design a solution with respect to the requirements, technical constraints, price, available resources etc. They shape the development process.

Programmers write code. Ideally they do know the infrastructure they're working with (compilers, libraries, frameworks, hardware, ...) and write the most optimal code in the frame, defined by an engineer, and using solutions developed by a scientist.

At least this is how it should be. And there are some companies that really working like this - usually the ones that have to have really good software working for decades. Other (nowadays the majority) hire physicists or the like for everything. I had the chance to work for some of these companies too - one of them hired basically everyone with some mathematical background to do coding - and they coded. They created one of the largest code bases on the planet (larger than e.g. Microsoft's at that time). They never learned how to get requirements from the customers, so their software was an absolute desaster in terms of usability. It is also extremely slow - jokes about its start-up times were pretty widespread a couple of years ago. And it was absolutely unmaintainable, to a degree that the company was on the verge of bankruptcy because they were basically not able to react to customer requests. They survived. But they are not hiring physicists to do software development anymore.

> non-CS engineers and scientists can write their own code

Having seen plenty of code written by non-CS engineers and scientists, my experience is that formally trained programmers have excellent job security.

Have you ever tried maintaining that kind of code base?

>Have you ever tried maintaining that kind of code base?

I've never tried to maintain a code base written by non-CS people. In what context have you seen code by non-CS scientists?

>Having seen plenty of code written by non-CS engineers and scientists

There is a trade off between domain knowledge and programming style. Is it better to teach a BSCS 2 years of chemistry to work on your molecular modeling library, or hire somebody with chemistry experience who writes less maintainable code? Coding has become easier over the last 20 years, but the domain-specific knowledge has become harder. This trend favors the chemist over the BSCS.

> non-CS engineers and scientists can write their own code

> I've never tried to maintain a code base written by non-CS people

...

You do not need to actively work on a code base to know who does. The educational backgrounds of developers who work on software in non-CS fields are very easy to find online. There is no contradiction in these quotes. If your point is that non-CS people write bad code (and that at some point I have argued the opposite, which I have not), you still haven't explained why the market won't value the domain-specific knowledge of a non-CS person over a BSCS's programming knack.