The purpose of a CS degree in the 2020s?
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?
8 comments
[ 905 ms ] story [ 2416 ms ] threadHaving 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?
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.
> I've never tried to maintain a code base written by non-CS people
...
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.
If you walk out of a university only knowing how to code, you've wasted an opportunity. (and a lot of somebody's money)
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.