Hacker News new | ask | show | jobs
by nxrabl 1483 days ago
A lot of folks here seem to have a real rose-tinted idea of what CS degrees are actually like. If you took CS more than 10, 15 years ago, you might remember it as a scrappy, fringey degree program, maybe splintered off from Electrical Engineering, a refuge for mathematically-minded nerds to find beauty in the cold algorithmic elegance of computation. That is not what it is anymore, not now that everyone knows you can make six figures right out of college with a CS degree on your CV. At the college I went to, CS is the second largest program, on track to be the largest in the next few years, and Intro to CS is the single most popular class on campus. They cannot hire professors fast enough. They're launching their own coding bootcamp just to keep up with demand. A lot of people are getting this education, and we need to look at what we're teaching them.

And what's on the curriculum? Some good hard math, but also a fair bit of nonsense. Some people in this thread seem to think colleges have been taken over by javascript, and that may be true in some places, but I wish they'd taught us JS, because what they taught me was Java Swing, because a decade ago the ivory-tower tenured professor who wrote that course thought it would be useful for getting us a job and never touched it again. They could've replaced that course with underwater basketweaving and nothing of value would've been lost, let alone any of the excellent humanities topics the author mentions in her post. There is plenty of space in the curriculum to clear out enterprise-driven cruft from fifteen years ago and replace it with some of the useful things the author mentions, without touching any of the core mathematics we all love.

In fact I would go a step further: Having a lot of people who are very good at programming but who don't know anything else is a bad thing for society. This is unique to programming as a discipline - programmers have historically unprecedented power to turn fuzzy, implicit ideas into concrete reality that affects people at massive scale. It's totally ok to let mathematicians, for example, go off and study just mathematics, because mathematicians are harmless. Programmers are dangerous. Without perspective, we will calculate ourselves right into dystopia - we're doing it right now! What good is it going to do any of us to write systems that strip away all our civil liberties with perfect big-O complexity?

7 comments

> This is unique to programming as a discipline - programmers have historically unprecedented power to turn fuzzy, implicit ideas into concrete reality that affects people at massive scale.

Politics? Economics? Writing?

I don't necessarily disagree on the dangers, but they're certainly not unique to programming. Some German guy wrote a few thousand pages of fairly dense and convoluted economics/philosophy and ninety years later an eight-digit number of Chinese people died as their nation Greatly Leaped Forward.

How? A cascade of people having "historically unprecedented power to turn fuzzy, implicit ideas into concrete reality that affects people at massive scale".

I don't think programming has fucked up anything near this scale yet. I'm sure it will eventually, but it hasn't yet.

It's not that other paths are not powerful but rather that its relatively rare for someone to fuck things up catastrophically with said career paths because society doesn't quite enable philosophers in the same way as SWEs. There is so much money being thrown around, so much critical infrastructure is digitized, and we're increasingly trusting models to make critical decisions.

One dude in a cardboard box down by the river with PyTorch on his laptop can convince your local court to contract with him for a model that predicts recidivism, and then suddenly your county is rejecting bail for black people at an alarming rate because said guy trained his model wrong. Achieving a similar fuck up with a degree in philosophy or polisci would require a _lot_ more work (you'd have to get elected to office or create _more_ racisim!). Software and the power we entrust in it has made fuckups faster and easier than ever, and it's only going to get worse.

> Politics? Economics? Writing?

A good shot, but I don't think good enough. All of those still involve humans changing each other's thoughts by communicating with each other.

A computer program replaces human thought. Depending on the application this may be good or bad, but the point is that once the program is in place, humans don't need to think or talk about it anymore.

I mean, they do, but they won't. After all, there's so much other stuff to think about, talk about, and then replace with software.

As opposed to laws and policies that control the lives of millions? It's not possible for human thought to work at the scale of modern society. Software is not special in that it replaces human thought. Something must 'automate' human decision-making, whether it be software or a civil servant looking at a spreadsheet going through a checklist.
We were taught date structures by a Unix fundamentalist, entirely with C and makefiles. He absolutely despised "Micro$hit", and emails containing any format other than text/plain, but helpfully offered that he could receive email sent from emacs. We worked with some kind of perl-based VCS that I forget the details of.

You're saying students are no longer taught all this??

Levity aside, I do have rosy memories of that course (taken around 2009). It taught me well, though I can see how it probably put a lot of people off, maybe even causing them to abandon programming.

I agree with the other response that programmers usually don't have much say in those decisions that would lead us into a dystopia, but also, in my experience pretty much everyone in STEM fields these days is atleast a junior level programmer, so it's somewhat contradictory to me to say that mathematicians are harmless but programmers are not.

Plus, at least at my university, an engineering ethics class was mandatory in the final year of undergrad. There was also a big general education component (~25% of the degree) that did involve various humanities classes (stuff like "Eastern Religions", "Indian Classical Music" and "History of American Art", an extra language class if you weren't already bilingual etc) and from what I understand, other universities generally have a higher ratio of general education requirements.

So I find it odd to suggest that programmers "don't know anything else", because at least in my experience, they clearly do.

> but I wish they'd taught us JS, because what they taught me was Java Swing

This is an odd criticism. Finding a job using Swing is hard, but jobs using Java are plentiful, and applying what you learn from that class to a different language and framework isn't that big of a leap. It's a leap you'll often take whenever you change jobs.

How many programmers are making those decisions on their own and how many are doing what their PM told them do to, at the command of ever higher ups? It's a weird trend to blame all tech outcomes on programmers who often have the least amount of control over what the systems the build are intended to do.
> how many are doing what their PM told them do to, at the command of ever higher ups?

There will always be sociopaths. The problem is the skilled people who can rationalize enabling them.

How do you account for downstream effects of charitable behavior where the hyperparameters have reached a complex state?
At some point in the 2000s they made everyone at my university teach Java, so the intro to algorithms professor just implemented basic Lisp constructs in Java and taught the whole course with that. I think they added more flexibility and mostly switched to Python for intro classes after I graduated.
My perspective here is probably quite different, because of my cultural background. Here in Germany there is a pretty clear division between CS at a university (Universität), "CS" at a college (Fachhochschule), and "CS" as an apprenticeship (Fachinformatikausbildung). I'm putting quotation marks on the latter two, because calling it a science is already a large stretch in the first case, as I would distinguish between engineering and science, but that's a minor point. The latter two have nothing or very little to do with research, and are all about giving practical knowledge to help people get jobs/get good employees.

> Some people in this thread seem to think colleges have been taken over by javascript, and that may be true in some places, but I wish they'd taught us JS, because what they taught me was Java Swing, because a decade ago the ivory-tower tenured professor who wrote that course thought it would be useful for getting us a job and never touched it again.

You get a BS to understand (hard) concepts. Java makes a lot of sense to teach because of good resources, longevity, and it implementing a lot of the underlying ideas of OOP. Is it a great language? Not at all, but knowing it makes it very easy to learn other OOP languages. My faculty is currently discussing a larger BS reform, and this is one of the topics. We have a course for second semester students called "Intro to OOP". What are the alternatives to Java? Most other OOP languages do not implement all the typical concepts of OOP, or are highly platform dependent, or might be just a fluke. C++ is quite rough, and there is another course teaching OS with C in the same semester. Personally, I think people in the course should be able to choose between writing their assignments in something that compiles to java bytecode, but that massively increases overhead for TAs.

> In fact I would go a step further: Having a lot of people who are very good at programming but who don't know anything else is a bad thing for society.

This I would agree with, and add that this is also really terrible for programmers. Compared to other engineering disciplines, our discipline is massively underdeveloped in the realm of strong guidelines backed up by empirical research. If you look at the subfield of Software Engineering (which I'd say is another misnomer, as this is actually pretty much the only empirical part of CS, and at that mostly a social science), it is hard to find very strong consensus on what and how to do it. Actual practice is, I'd argue, more influenced by medium posts than the papers published in the field. There are a lot of strong opinions, and very little but personal experience to back these things up.

> What good is it going to do any of us to write systems that strip away all our civil liberties with perfect big-O complexity?

I'd also strongly argue that everyone should be educated in ethics, but education in morality does not make a moral person, I think this is one of the really hard problems that universities can try to help alleviate, but not solve alone.