Hacker News new | ask | show | jobs
by kstrauser 2151 days ago
I think the biggest disadvantage of a DIY degree is that there's no one requiring you to take classes that don't interest you. Thing is, when I was studying, I was grossly incorrect about 1) which classes I would come to enjoy, and 2) which subjects I would actually use every day at work. There were lots of things I studied only because someone was making me, but that I found to be incredibly fascinating or useful once I had learned a little about them.

That's the biggest thing I think someone would give up by not pursuing a traditional degree.

7 comments

These articles are essentially an instance of the fallacy that all labor is equivalent.

If you are self-motivated and intelligent enough to learn the equivalent of a CS degree on your own, then the upper bound on your career trajectory is often significantly higher than "senior software engineer".

So even if you can self-learn, the article is still bad advice. Better advice would be "if you can learn this on your own, maybe aim higher than code monkey jobs".

Go ahead and major in CS because it'll be easy and enjoyable and a good fallback. But also pick up a second major in pre-med/pre-law/econ/finance/engineering/etc. Or get involved in research projects, etc.

So, yes, this is bad advice for weak students. But it's also often bad advice for strong students, who should be aiming high.

I’ve met some really great self-learned programmers. Never had anyone self learned even been able to make a basic inductive proof, but they will still call themselves kings in CS.

Got a bit sick of the attitude that CS is programming. Switched to Data Science and after a while I’m starting to see Data Scientists that can’t do even basic math. With 6 lines of copy pasted code they’ve made a dnn. They know how to separate into test sets and that’s it. I really feel we need certifications that people actually respect because this is just the ultimate lemon market.

Now my colleagues are just PhDs and I couldn’t be happier. But still I do worry about the field. What will math heavy fields do in the future? Slap theoretical in front of the course as to not make self-learners self-conscious?

I suspect every technical field experiences this. For example, a surprising number of mechanical engineers I’ve worked with don’t know the difference between longitudinal stress and hoop stress derivations and the resulting impacts on design, yet they regularly design pressure vessels.

I think the reason has multiple dimensions:

1) most jobs, outside of fundamental R&D don’t require deep levels of understanding because they are more in the vein of “get ‘er done” type of work. Truth is, PhDs are over qualified for many (most?) jobs

2) some people simply want a credential and do a brain dump immediately after university

3) as you alluded to in a different comment, hiring managers often don’t have the technical chops to separate the wheat from the chaff

Haven't data scientists been watered down to effectively glorified data analysts who use programming languages and libraries as tools?
It’s just a lemon market that seems to get worse with time, everyone says that they can do anything to get a foot in the door.

Heck one of my friends has more than double my salary because he said he was a specialist in a marketing software he never heard of before the interview. Now, a year later no one is the wiser and he can buy a new Tesla twice a year (still jealous).

I think a lot has to do with bosses that never started from the bottom so they aren’t great at interviewing, because they have no clue about non-management things. Then they have no clue how productive people should be or even what to measure besides “Sprint points”.

It really depends on the project. My company is hosting multiple ML/AI projects, some with datascientist that are, as you said, glorified data analysts. Usually MBAs or mixed cursus, but also CS guys (my favourite clients as they will never tell you "i can't ssh onto my server" after executing `chmod -R 777 /etc/`).

And some with genuine DS/statisticians. Also the first kind of project almost always end up hiring statisticians in the end, so realistically, having "glorified data analysts" that can sell to the consortium or kickstart project is enough.

That's not true.

Many people can self-learn. Those same people often cannot perform well in school because school is rigid and authoritarian.

I'm definitely one of them and my career refutes your idea quite heavily. I'm absolutely not the only one.

Doubling down on debt and the system with another advanced degree is dangerous advice.

If you cannot self-learn, you find out relatively fast and with little cost. Not true for the above advice.

> Many people can self-learn. Those same people often cannot perform well in school because school is rigid and authoritarian.

So... labor isn't uniform?

> Doubling down on debt and the system with another advanced degree is anti-advice.

Becoming a medical doctor is anti-advice? Is attending Harvard Law or Stanford's CS PhD program also anti-advice? I know this is a tech forum, but jeeze. The lack of appreciation for the world of fulfilling career choices outside pounding out code and managing people who pound out code is a bit concerning.

I guess there's a small population of people who aren't good at school but can self-learn how to program. I agree that for those people a DIY CS degree is good advice.

However, I also think that there's a substantial intersection between people who would get bored doing generic software dev and people who can self-learn CS.

> Many people can self-learn. Those same people often cannot perform well in school because school is rigid and authoritarian.

Are you still talking about college here? For a lot of classes, I commonly skipped class and taught myself the topics. In some fields like math that was practically the system even if you attended: Step 1: attend lectures that go too fast and lose you at some point, providing little more than a roadmap to use. Step 2 go home and teach the material to yourself. Step 3 attend exams to quantify how well you did.

i've seen this comment a couple times on HN and find it funny. My classes and lectures were mostly about what was not in the book and if you tried to read the book and take the test you'd get around a 50%.
Really depends on the field. Parent comment is pretty accurate for most pure mathematics courses. Not so much in other fields (even non-pure math)
Getting the pre-reqs for medical school out of the way when you’re in college the first time is an incredibly smart move, even if you don’t go on to pursue Medicine. I looked into attending med school 10 years after getting my BBA in Accounting, and it turns out I need a ridiculous number of pre-reqs just to qualify for applications. Something like 60-90 hours (prob. closer to 90 for me as even my basics like business calculus doesn’t meet the math requirements of a BS - engineers who took engineering calculus don’t have to worry about this).

It’s too much for me to seriously consider going back for medicine, tbh. I’d have about 3 years of part time classes at community college or online, maybe less if you could squeeze more in each semester.

Law school requirements where I live aren’t as significant, in fact I don’t think there are any. So I have considered sitting for the LSAT... Family of doctors and lawyers so the thought of going back to school is always on my mind.

In my view, the two college topics everyone should take is Physics and Constitutional Law (or equivalent in another country). Both will literally radically change how you look at the world, and provide a foundational basis for conversation in nearly any field.
You can say the same thing about any single lower undergraduate subject.
I took a class in Library Science. It didn't change my outlook on anything. It only confirmed my belief in the wastefulness of certain general ed requirements.

Economic history didn't do much for me, either. (Now, granted, that could be eye-opening, for at least some people, if taught well and with solid content. But in my case, for that class... meh.)

It didn't change my outlook on anything

Someone can say this about any single lower undergraduate subject :)

p.s. Library Science course would have been an eye-opening experience for me, given my fascination with books and libraries when I was a teenager.

I’m not sure how fascinating it gets beyond the Dewey Decimal system, lol. There’s probably some cool stuff with document preservation and archiving. But so much of library science seems outdated now that most information is on the internet.

What they really need is a better system for internet research, the UIs those systems use last time I worked in a library on a project was terrible.

Counterpoint: my 2 favorite classes in undergrad were both general education courses - "World Regions" (had a super charismatic professor so wouldn't necessarily recommend this course at any random university) and "Morality & Justice".
"Contemporary Moral Problems" with a professor who resembles Captain Kangaroo (https://en.wikipedia.org/wiki/Captain_Kangaroo).
Did you really mean "World Regions", or instead "World Religions"?
Yes "Regions". The course covered geopolitics, current events, etc. The course and professor were famous at the university. The course material itself was interesting because it covered current events in detail, but the real reason for the class's popularity was that the professor was incredibly entertaining. Attending a lecture was sort of like watching an episode of Stephen Colbert, except deeper with more focus on learning than just pure entertainment.
Hageography ;-)
should we (could we) compress higher education ?

I found a lot of redundancy by splitting things in modules. (uml, oop, sql felt like 3 sides of the same hypercoin, granted the first 2 may disappear from books soon).

algorithmics and mathematics (and other topics) may be merged into one ?

or maybe that would be pedagogically detrimental.. I feel that it would allow more time to spend on a concept since you don't have to see bits scattered in different courses.

I'm not sure how oop and sql would be the same thing - they are famously incompatible (object/relational impedance mismatch). UML is just a graphical notation, I would agree it doesn't make sense as a separate course.

When you say algorithmics and mathematics, do you mean all of computer science and all of maths? Do you think a single course should cover, say, Dijkstra's algorithm and partial differential equations?

Usually, each course already covers a wide array of concepts. I can't think of a single concept that was explored by different bits in different courses. The closest I can think of are 2 courses I had, one of which was focused on analytical solutions for linear algebra (matrices), and the other focused on numerical solutions to the same problems. Even then, the split did make sense, since they were focused on different concepts (mathematical objects, their properties and how to work with them in the first case, computation and more applied mathematics solutions for the second).

No student learns everything that university teaches; there is simply not enough time. It would be ideal if each student received a perfectly customized curriculum; but that is simply not practical to do. Instead, universities have a modular system; where different students can mix and match modules to cover what they are interested in. Similarly, different majors can mix and match required module to cover the material that is nessasary for said majors.

In the case of subjects with a very large number of students, it is possible to produce specialized modules, so you might have a university offer a separate probability-for-scientists and probability-for-mathematicians classes that it considers to be interchangable, but differs in how it covers the subject/what background it assumes.

It turns out the brain actually likes to see concepts broken into pieces and spread out all over the place. To use your example, a better way to learn those things would have been a couple of projects where you used them all together, over and over.
Was Library Science required, or was it a general requirement that you picked Library Science for?

(Having a hard time seeing Library Science as a specific requirement.)

FWIW I completed my undergraduate degree in 2019, and I was required to take library science specifically. It was a half-semester course that taught students how to use the library.

I guess the value is it means the students have no excuse to not know how to find library resources, but I feel like most people in the class were generally familiar with the idea of a library and how to use it.

This sounds somewhat similar to other "college success" first year courses that are more about how to do research papers than anything else.

A proper introduction to Library Science is about how to run a library...

It filled a general ed slot, I think. Or else I just wanted a super-easy class. It wasn't required.

And yes, it really was "how to use a card catalog". (Hey, I'm old. It really was cards.)

If you go into something with a set of beliefs and are only looking to confirm them, you probably won't gain anything.
I could say it about Macroeconomics and English 102 but only because I had awesome teachers.

I can say that one of my Calculus classes and my other English classes made me want to quit school. The teachers were horrible; either arrogant and condescending or incompetent at teaching (which made us a bad pair because I was an incompetent student at times).

I found an Anthropology class very eye-opening, helpful to become aware of one's own ethnocentrism.

I'd echo the vote for Physics.

I think everyone should take statistics and probability. Same reason, to change your world view.
I think Ethics/Ethical Theory class from a philosophy department should be added as well.
Why? The engineering department version of ethics was a required class at my undergrad and it was a total waste of time.
Henry Petroski claims that engineering ethics was founded on the principle that an engineer should not compete with another engineer on the basis of price.

A good philosophical ethics class is mostly uncomfortable...

Adam Smith:

> People of the same trade seldom meet together, even for merriment and diversion, but the conversation ends in a conspiracy against the public, or in some contrivance to raise prices.

Can you explain why you think so? I feel it would be a complete waste of time for me to study anything like this in college. And it seems it is an absolutely inadequate foundation for “conversation in nearly any field”.
The course I think everyone should take is a logic course. Our philosophy department gave one and it was amazing.

They went over fallacies, truth tables, tautology, and other things.

I took that with a great professor that wanted you to learn and be able to make strong arguments. You had to be able to break apart anything thrown at you and call out what it was.

Everyone would be able to see how others are trying to take advantage.

The other is also doable. How to phrase things in a way to get what you want. I think he’d approve...

I would add ethics to that list also.
Quoting the very first sentence: “DIY” CS degree: take the same courses you would at your own school
My question is:

Are those courses actually available in MOOCs? Is the feedback sufficient from the MOOCs for the more technically difficult courses?

I cannot imagine taking, for the first time, a course like CS Theory, but maybe a follow-on course, as a MOOC. So much of what we learned was because of feedback during the semester and tailoring to our level by the professor. If you're talking about an online course with 20-40 participants in a cohort with a dedicated instructor/professor, then it could've worked online. But most MOOCs are not set up that way (from what I've participated in).

On top of that, lacking discipline, I can't imagine anyone in that class but 3 of us choosing to take it voluntarily if alternatives had been provided.

I'm pretty sure I'd be much better off had I taken my first course in CS Theory on Udacity [1] or Coursera [2] rather than at UCSB where it was extremely confusing and/or boring.

[1] https://classroom.udacity.com/courses/cs313

[2] https://www.coursera.org/learn/cs-algorithms-theory-machines

I think computer science is the university subject with the best availability of publicly available online courses.

Available courses range across the entire undergraduate curriculum from distributed systems to operating systems to cryptography. The number of different courses available within each area varies a lot, and some only have 1-2 options, but at least they are available.

The situation is much more stark in other subjects, such as mathematics. Many upper-division courses aren't available, so the best you can do is find a book for self-guided study.

In a few weeks I'll have completed every MIT course required to earn an undergrad EECS degree minus the physical education credits. It took me about two years. Some of the courses on their OpenCourseware[1] were a bit out of date and I supplemented the MIT courses with a few additional courses from Harvard (I'd read on HN that CS50[2] was worthwhile and was not disappointed) and Stanford[3]. I did not spend even one penny. Then again, I also won't get that very expensive piece of paper we call a "degree" so it's definitely a tradeoff. I'd already paid for several expensive pieces of paper so it didn't seem necessary to me but I can definitely appreciate that having at least one matters. MOOCs give you the same knowledge but they really don't at all give you the same credentials. It's silly but it's reality.

Most of the more popular courses have discord or slack where you can work with other participants. A lot of the CS courses have automated the grading of problem sets. CS50 uses GitHub to submit and grade assignments, for example. There were a lot of frustrating moments for sure but I definitely spent a lot more time with the material and learned a lot more than I would have if I had been given more "support" like you get in a typical classroom. There's definitely a tradeoff. It worked great for me but I had a genuine interest in the topics. I'm also 32. I don't think for a second I could have managed to get as much out of MOOCs as an 18-22 year old.

A minor complaint given that the superb education cost me exactly $0.00 but there are a lot of really good free courses available but you have to hunt for them. For example Paul Hegarty teaches a really great introductory course on developing for iOS with Swift and it's freely available to everyone but it's not listed on Standford's online catalog and the iTunesU version is woefully outdated. The latest version[4] is available on YouTube and even has a dedicated website. I can't even remember how I found the newer course. I also stumbled across "The Ethics of Technological Disruption"[5] by looking at Stanford's YouTube channel playlists. Like the Swift course, it wasn't listed in the university's catalog of free courses.

All that is to say, it's entirely possible, if you're willing to put in the effort not only once you're in the class, but sometimes just to get there as well.

[1] https://ocw.mit.edu/index.htm

[2] https://cs50.harvard.edu/x/2020/

[3] https://online.stanford.edu/search-catalog?free_or_paid%5Bfr...

[4] https://cs193p.sites.stanford.edu

[5] https://techethics.stanford.edu

You should write up a simple blog post that lists all the courses. Just a link and a sentence or notes (e.g. where the discord / other crucial resource is) for each course, and it would be a fantastic roadmap for others hoping to follow your footsteps!
What other classes that you've tried would you recommend?
I really liked all of the MIT philosophy courses[1] I've taken. Introduction to Philosophy of Language in particular was really interesting. I also took Yale's "The Science of Wellbeing"[2] after reading about it on HN. It's great, but not exactly a traditional class where you learn some piece of information and then move on. It's more like going to the gym where you're meant to continuously put what you've learned into practice. Now that I think about it perhaps I should take it again!

[1] https://ocw.mit.edu/courses/find-by-number/

[2] https://www.coursera.org/learn/the-science-of-well-being

As the article mentions, you have to be disciplined for this to work. It would require a huge amount of discipline to get into a subject that might be, superficially, uninteresting. You also loose the passion and excitement that a good teacher conveys.

Maybe there are people disciplined enough. ¯\_(ツ)_/¯ personally I need an external push.

I found that I lost discipline in college. Could I have motivated myself outside of college? No, it was my parents and the daily routine of high school that imparted discipline. You have to break free from your family, but a daily routine can be had at any number of jobs that don't require a degree.

It might make more sense for a certain person to work in the real world for a couple years to get their head screwed on right, before attempting an education. If that imparts enough discipline to allow cheaper alternatives than college, more power to you.

> 1) which classes I would come to enjoy, and 2) which subjects I would actually use every day at work.

Another thing that is easy to misgauge - how much work it takes to understand a topic. All told, across several classes, I probably spent a full semester studying mutual exclusion, critical sections, deadlock and so forth. I would not have known it would take several months of study to start getting a handle on that topic - although I see it all the time when debugging an error (created by myself or others) which turns out to be code that has a race condition.

That's how higher education suppresses those in poverty further. That time and money not related to the direct earning of income is only achievable by those already well off. All of the 'extra classes' that are important can be combined into dedicated courses that have significantly more relevance to the job market.
Which classes ended up being useful to your work that you didn't expect?
* Truth tables and Karnaugh maps blew my mind, as did the rest of Boolean math. I loved finding a way to formally think about things I'd vaguely and unrigorously thought about before, and the notion of mathematics without numbers opened my eyes.

* I loved political science and sociology classes. I would not have predicted that.

* I use my physics classes all the time, but never in ways I would have anticipated. "Hey, I wonder how high we are. Here's a rock we can toss down into that pond. Get your stopwatch!"

* I very rarely find myself working with finite state machines, but when I do, it's nice to feel comfortable reasoning about them.

* Big-O notation? All the freaking time. That's an enormously powerful tool for thinking about how systems will scale with the number of users, for instance.

> I very rarely find myself working with finite state machines, but when I do, it's nice to feel comfortable reasoning about them.

When you recognize a state machine somewhere it makes the code and everything around it so much simpler.

It really, really does. It's not the correct tool for every job, but when it's right, it's very right.
> Truth tables and Karnaugh maps blew my mind, as did the rest of Boolean math

Indeed, DeMorgans law is something I use regularly, but many devs don't know it

(^A.^B) = ^(A+B)

^A + ^B = ^A.^B

I didn't realize how much I used this or other forms of boolean expression simplification/translation until this comment tbh. Really goes to show that while much of formal CS won't be used in industry, some of it in random places can be surprisingly useful.
That's an incredibly powerful simplification in the right places. It's so satisfying when you can remove a bunch of "not"s from code and get something that's mathematically identical but a whole lot easier to read.

Heh! I also used it recently (and successfully) to argue with a particular vendor whose query language did not respect that transformation. I re-wrote a "not A and not B" expression to "not (A or B)", and the query broke. It was nice to be able to point them to the Wikipedia article and say "no, if your query language doesn't treat those as identical, then it's a bug and would you please fix it now?"

^A + ^B = ^(A.B)
oops
When was the last time you worked with many CS students versus amateur developers and could really compare?

These are shallow takes because they're always reflections on personal experience and not really a view of others. Or when it is about others, it's extremely shallow - this article's take is "is salary times expected employment probability minus degree cost positive" which is basically saying nothing at all.

MOOCs like EdX and Coursera have deeply harmed CS degree quality. The most striking evidence for this isn't the crummy completion rate or as you're eluding to, lack of coercion or whatever. It's that in my experience with Harvard and Stanford interns, whose curriculum these MOOCs copy, the quality of the student declines with the number of years they have spent in their institution's CS program. In other words, freshmen and sophomores outperform seniors and just-recent grads!

This is crazy, how could that be? By putting everything on rails. In MOOC CS50x and CS50, as long as you follow all the steps in the videos, you will complete the course with an A+. After the first few problem sets you're conditioned that if you're thinking too much you're doing something wrong because it's supposed to be on rails, it's supposed to be easy enough that you can just complete it by reviewing or copying. There is no space in that class for thinking, you should not be puzzle solving, the things that look like puzzle solving only look that way, they are not actual puzzle solving. It is an amusement park ride for entitled and mediocre people disguised as an elite university course.

This makes sense for what the goals are. It's not really about education. It's about the psychic pleasure of feeling like you learned something challenging. It's about preparing someone for a corporate gig, where in reality it is really bad if a junior person is doing any thinking - they really should be going out there and cramming, copying something or asking someone for the right answers! David Malan and Andrew Ng gave people want they wanted, that is capitalism, that is okay, it just isn't necessarily education.

How is performance defined? What am I asking these students to do? Something original. Like at the end of the day you want people to sit in front of computer and solve an original weird problem, MOOCs will unprepare them for that.

> When was the last time you worked with many CS students versus amateur developers and could really compare?

I work in a very technical area where you need to have taken a PDEs course to even understand what's going on. The only amateur developers who can even carry on a conversation about the work have math or engineering phds.

> There is no space in that class for thinking, you should not be puzzle solving, the things that look like puzzle solving only look that way, they are not actual puzzle solving. It is an amusement park ride for entitled and mediocre people disguised as an elite university course.

Being a generic software developer cog in a giant corp sounds soul-crushing. I think smart students who have the drive and intelligence to learn CS on their own should seriously consider if that's the type of job they want.