That's the biggest thing I think someone would give up by not pursuing a traditional degree.
That's the biggest thing I think someone would give up by not pursuing a traditional degree.
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.
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.
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.
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.
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?
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.
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”.
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
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.
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.)
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.
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.
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.
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.
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).
(Having a hard time seeing Library Science as a specific requirement.)
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.
A proper introduction to Library Science is about how to run a library...
And yes, it really was "how to use a card catalog". (Hey, I'm old. It really was cards.)
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).
A good philosophical ethics class is mostly uncomfortable...
> 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.
I'd echo the vote for Physics.
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...
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.
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.
[1] https://classroom.udacity.com/courses/cs313
[2] https://www.coursera.org/learn/cs-algorithms-theory-machines
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...
[1] https://ocw.mit.edu/courses/find-by-number/
[2] https://www.coursera.org/learn/the-science-of-well-being
Maybe there are people disciplined enough. ¯\_(ツ)_/¯ personally I need an external push.
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.
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.
* 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.
Indeed, DeMorgans law is something I use regularly, but many devs don't know it
(^A.^B) = ^(A+B)
^A + ^B = ^A.^B
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?"
When you recognize a state machine somewhere it makes the code and everything around it so much simpler.
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.
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.