Hacker News new | ask | show | jobs
by zerobees 27 days ago
Computer science is a weird degree because it was meant to produce computer scientists. Theory of computability, graph theory, discrete math, formal logic, etc. But the world just doesn't need as many computer scientists as it needs people who know JavaScript.

Over time, many CS degrees shifted toward producing software engineers, and it sounds like this person's experience was closer to that. But the problem is that as an engineering discipline, software engineering is just profoundly underwhelming. There are basically no universally-respected design best practices, no governing bodies, no calculations of safety limits, no nothing. You grab left-pad from npm and run with that. Or, now, Codex does that for you.

So CS is weird because it's what you're supposed to get if you want a job at Google, but it's also not very useful. It's a very inefficient and expensive way of testing if you're "serious enough", can complete assignments on time, etc.

4 comments

My day job is relatively boring JavaScript components and SPA's, but even there I find things I learned in my Computer Science degree valuable. "Hey, this looks like a finite state machine.." "This could be a simple domain specific language, good thing I had to write compilers in college and I can easily make a simple lexer/parser.." "This other thing is easy to parse if I ingest it into a lexer-resembling state machine.." And I would think the value of understanding algorithmic complexity and so many other fundamental things is obvious, no matter what someone is doing. And you won't waste your time accidentally trying to solve the Halting problem, among other things. Obviously there's nothing a university can teach you that you couldn't theoretically learn somewhere else but I'm seriously not convinced that a Computer Science degree is useless or a poor signal even for someone doing run of the mill React apps.
I was self taught and went back for a bachelor's after ten years working and then a masters after another four. There was a lot of wasted time in the BS (ie the trade-school-for-programmers classes) but the pure CS has been valuable to me quite regularly as a working developer.

Not every day, maybe not even every month, but I've faced plenty of problems I was well equipped to solve directly because of the formal study of them.

> I had to write compilers in college and I can easily make a simple lexer/parser.

I'm jealous. My university did not make that a core class of our degree. While in hindsight, I wish they did. I did have the luxury of a lot of low-level exposure, which has served to be quite useful at times (digital logic, assembly, etc.).

If I had two SWE candidates with the same genes where one dropped out of high school to build a portfolio of software and the other followed the traditional CS trajectory, then I'd pick the one who "wasted" their time trying to solve the halting problem.

I am biased because I did drop out of high school, yadayada. My career has seen consistently a much steeper incline than nearly all CS graduates I've ever met. Plus, I got to build a bunch of useful and cool stuff, while others were wasting their time studying.

Even for research, a lot of CS papers seem like cosplay.

In the place of hard math, models, proofs, quantitative analysis of past approaches, etc. there is simply an “Architecture” section with much navel gazing. The paper topic is not a formal analysis but merely a description of a thing that was made.

Ironically, the least important part of an engineering research paper is the part describing the thing actually built/simulated. That is merely validation of the theory.

And all the governing bodies are just money scams.

More often than not, it requires a few weeks of mandatory paid "trainings" in order to attempt (and pass) the certifications.

And because IT is IT, no two companies or persons do things in similar ways (and for good reasons, the moment you do like everyone else, you average to the middle at best), and unless you are doing PHD like work, you don't need CS.

Software engineering is more akin of witchcraft.

> But the problem is that as an engineering discipline, software engineering is just profoundly underwhelming. There are basically no universally-respected design best practices, no governing bodies, no calculations of safety limits, no nothing.

I somewhat disagree: there exist a lot of deep questions in software engineering, and there do exist some (very, very partial) answers.

The problem rather is that most people don't want to listen to and/or do deep literature research about the few answers that we do have, but rather want to aggressively push their private political agenda about how they want software to be built. With some literature research, it is often not too hard to disprove the "foundations" on which this political agenda is built. But this does not make you admired because you showed serious knowledge about software engineering, but rather near to an outlaw.

TLDR: the problem is not software engineering, the problem is organizational politics.

When you say “political“, what do you mean? It’s easy for me to relate to talk of software development aesthetics or philosophy and I’ve certainly had plenty of conversations that I think are accurately described that way. But I can’t think of software development discussions that I’d describe as political (except in the sense that politics is what happens when people disagree on anything).
Depends on your organization I suppose.

Some places you see people pushing their Shiny New Rewrite, basically as resume fodder or promo packet material.

I describe that kind of decision as political because it doesn’t seem to come with a legitimate cost-benefit analysis.

That makes sense — decisions that are about personal benefits beyond technical/product choices and their merits.
Might be like, do we build more datacenters whose masters and possessors are all in the oligarch club, or do we build distributed systems that maximize flat power distribution.
What questions in particular are you thinking of that's purely about the engineering and ultimately not the political agenda?
- If it's about gaining a deep understanding of the topic involved for the pursuit of knowledge, it's science or engineering.

- If it's about manipulating people, it's politics.